Best JavaScript code snippet using wpt
idbobjectstore-rename-store.test.ts
Source:idbobjectstore-rename-store.test.ts
...15 let bookStore2: any = null;16 let renamedBookStore: any = null;17 let renamedBookStore2: any = null;18 await createDatabase(t, (database, transaction) => {19 bookStore = createBooksStore(t, database);20 })21 .then((database) => {22 t.deepEqual(23 database.objectStoreNames as any,24 ["books"],25 'Test setup should have created a "books" object store',26 );27 const transaction = database.transaction("books", "readonly");28 bookStore2 = transaction.objectStore("books");29 return checkStoreContents(30 t,31 bookStore2,32 "The store should have the expected contents before any renaming",33 ).then(() => database.close());34 })35 .then(() =>36 migrateDatabase(t, 2, (database, transaction) => {37 renamedBookStore = transaction.objectStore("books");38 renamedBookStore.name = "renamed_books";39 t.deepEqual(40 renamedBookStore.name,41 "renamed_books",42 "IDBObjectStore name should change immediately after a rename",43 );44 t.deepEqual(45 database.objectStoreNames as any,46 ["renamed_books"],47 "IDBDatabase.objectStoreNames should immediately reflect the " +48 "rename",49 );50 t.deepEqual(51 transaction.objectStoreNames as any,52 ["renamed_books"],53 "IDBTransaction.objectStoreNames should immediately reflect the " +54 "rename",55 );56 t.deepEqual(57 transaction.objectStore("renamed_books"),58 renamedBookStore,59 "IDBTransaction.objectStore should return the renamed object " +60 "store when queried using the new name immediately after the " +61 "rename",62 );63 t.throws(64 () => transaction.objectStore("books"),65 { name: "NotFoundError" },66 "IDBTransaction.objectStore should throw when queried using the " +67 "renamed object store's old name immediately after the rename",68 );69 }),70 )71 .then((database) => {72 t.deepEqual(73 database.objectStoreNames as any,74 ["renamed_books"],75 "IDBDatabase.objectStoreNames should still reflect the rename " +76 "after the versionchange transaction commits",77 );78 const transaction = database.transaction("renamed_books", "readonly");79 renamedBookStore2 = transaction.objectStore("renamed_books");80 return checkStoreContents(81 t,82 renamedBookStore2,83 "Renaming an object store should not change its records",84 ).then(() => database.close());85 })86 .then(() => {87 t.deepEqual(88 bookStore.name,89 "books",90 "IDBObjectStore obtained before the rename transaction should " +91 "not reflect the rename",92 );93 t.deepEqual(94 bookStore2.name,95 "books",96 "IDBObjectStore obtained before the rename transaction should " +97 "not reflect the rename",98 );99 t.deepEqual(100 renamedBookStore.name,101 "renamed_books",102 "IDBObjectStore used in the rename transaction should keep " +103 "reflecting the new name after the transaction is committed",104 );105 t.deepEqual(106 renamedBookStore2.name,107 "renamed_books",108 "IDBObjectStore obtained after the rename transaction should " +109 "reflect the new name",110 );111 });112});113// IndexedDB: object store renaming support114// IndexedDB object store rename in the transaction where it is created115test("WPT idbobjectstore-rename-store.html (subtest 2)", async (t) => {116 let renamedBookStore: any = null,117 renamedBookStore2: any = null;118 await createDatabase(t, (database, transaction) => {119 renamedBookStore = createBooksStore(t, database);120 renamedBookStore.name = "renamed_books";121 t.deepEqual(122 renamedBookStore.name,123 "renamed_books",124 "IDBObjectStore name should change immediately after a rename",125 );126 t.deepEqual(127 database.objectStoreNames as any,128 ["renamed_books"],129 "IDBDatabase.objectStoreNames should immediately reflect the " + "rename",130 );131 t.deepEqual(132 transaction.objectStoreNames as any,133 ["renamed_books"],134 "IDBTransaction.objectStoreNames should immediately reflect the " +135 "rename",136 );137 t.deepEqual(138 transaction.objectStore("renamed_books"),139 renamedBookStore,140 "IDBTransaction.objectStore should return the renamed object " +141 "store when queried using the new name immediately after the " +142 "rename",143 );144 t.throws(145 () => transaction.objectStore("books"),146 { name: "NotFoundError" },147 "IDBTransaction.objectStore should throw when queried using the " +148 "renamed object store's old name immediately after the rename",149 );150 })151 .then((database) => {152 t.deepEqual(153 database.objectStoreNames as any,154 ["renamed_books"],155 "IDBDatabase.objectStoreNames should still reflect the rename " +156 "after the versionchange transaction commits",157 );158 const transaction = database.transaction("renamed_books", "readonly");159 renamedBookStore2 = transaction.objectStore("renamed_books");160 return checkStoreContents(161 t,162 renamedBookStore2,163 "Renaming an object store should not change its records",164 ).then(() => database.close());165 })166 .then(() => {167 t.deepEqual(168 renamedBookStore.name,169 "renamed_books",170 "IDBObjectStore used in the rename transaction should keep " +171 "reflecting the new name after the transaction is committed",172 );173 t.deepEqual(174 renamedBookStore2.name,175 "renamed_books",176 "IDBObjectStore obtained after the rename transaction should " +177 "reflect the new name",178 );179 });180});181// Renames the 'books' store to 'renamed_books'.182//183// Returns a promise that resolves to an IndexedDB database. The caller must184// close the database.185const renameBooksStore = (testCase: ExecutionContext) => {186 return migrateDatabase(testCase, 2, (database, transaction) => {187 const store = transaction.objectStore("books");188 store.name = "renamed_books";189 });190};191// IndexedDB: object store renaming support192// IndexedDB object store rename covers index193test("WPT idbobjectstore-rename-store.html (subtest 3)", async (t) => {194 await createDatabase(t, (database, transaction) => {195 createBooksStore(t, database);196 })197 .then(async (database) => {198 const transaction = database.transaction("books", "readonly");199 const store = transaction.objectStore("books");200 await checkStoreIndexes(201 t,202 store,203 "The object store index should have the expected contens before " +204 "any renaming",205 );206 return database.close();207 })208 .then(() => renameBooksStore(t))209 .then(async (database) => {210 const transaction = database.transaction("renamed_books", "readonly");211 const store = transaction.objectStore("renamed_books");212 await checkStoreIndexes(213 t,214 store,215 "Renaming an object store should not change its indexes",216 );217 return database.close();218 });219 t.pass();220});221// IndexedDB: object store renaming support222// IndexedDB object store rename covers key generator223test("WPT idbobjectstore-rename-store.html (subtest 4)", async (t) => {224 await createDatabase(t, (database, transaction) => {225 createBooksStore(t, database);226 })227 .then((database) => {228 const transaction = database.transaction("books", "readwrite");229 const store = transaction.objectStore("books");230 return checkStoreGenerator(231 t,232 store,233 345679,234 "The object store key generator should have the expected state " +235 "before any renaming",236 ).then(() => database.close());237 })238 .then(() => renameBooksStore(t))239 .then((database) => {240 const transaction = database.transaction("renamed_books", "readwrite");241 const store = transaction.objectStore("renamed_books");242 return checkStoreGenerator(243 t,244 store,245 345680,246 "Renaming an object store should not change the state of its key " +247 "generator",248 ).then(() => database.close());249 });250 t.pass();251});252// IndexedDB: object store renaming support253// IndexedDB object store rename to the name of a deleted store succeeds254test("WPT idbobjectstore-rename-store.html (subtest 5)", async (t) => {255 await createDatabase(t, (database, transaction) => {256 createBooksStore(t, database);257 createNotBooksStore(t, database);258 })259 .then((database) => {260 database.close();261 })262 .then(() =>263 migrateDatabase(t, 2, (database, transaction) => {264 const store = transaction.objectStore("books");265 database.deleteObjectStore("not_books");266 store.name = "not_books";267 t.deepEqual(268 database.objectStoreNames as any,269 ["not_books"],270 "IDBDatabase.objectStoreNames should immediately reflect the " +271 "rename",272 );273 }),274 )275 .then((database) => {276 t.deepEqual(277 database.objectStoreNames as any,278 ["not_books"],279 "IDBDatabase.objectStoreNames should still reflect the rename " +280 "after the versionchange transaction commits",281 );282 const transaction = database.transaction("not_books", "readonly");283 const store = transaction.objectStore("not_books");284 return checkStoreContents(285 t,286 store,287 "Renaming an object store should not change its records",288 ).then(() => database.close());289 });290 t.pass();291});292// IndexedDB: object store renaming support293test("WPT idbobjectstore-rename-store.html (IndexedDB object store swapping via renames succeeds)", async (t) => {294 await createDatabase(t, (database, transaction) => {295 createBooksStore(t, database);296 createNotBooksStore(t, database);297 })298 .then((database) => {299 database.close();300 })301 .then(() =>302 migrateDatabase(t, 2, (database, transaction) => {303 const bookStore = transaction.objectStore("books");304 const notBookStore = transaction.objectStore("not_books");305 transaction.objectStore("books").name = "tmp";306 transaction.objectStore("not_books").name = "books";307 transaction.objectStore("tmp").name = "not_books";308 t.deepEqual(309 database.objectStoreNames as any,310 ["books", "not_books"],311 "IDBDatabase.objectStoreNames should immediately reflect the swap",312 );313 t.is(314 transaction.objectStore("books"),315 notBookStore,316 'IDBTransaction.objectStore should return the original "books" ' +317 'store when queried with "not_books" after the swap',318 );319 t.is(320 transaction.objectStore("not_books"),321 bookStore,322 "IDBTransaction.objectStore should return the original " +323 '"not_books" store when queried with "books" after the swap',324 );325 }),326 )327 .then((database) => {328 t.deepEqual(329 database.objectStoreNames as any,330 ["books", "not_books"],331 "IDBDatabase.objectStoreNames should still reflect the swap " +332 "after the versionchange transaction commits",333 );334 const transaction = database.transaction("not_books", "readonly");335 const store = transaction.objectStore("not_books");336 t.deepEqual(337 store.indexNames as any,338 ["by_author", "by_title"],339 '"not_books" index names should still reflect the swap after the ' +340 "versionchange transaction commits",341 );342 return checkStoreContents(343 t,344 store,345 "Swapping two object stores should not change their records",346 ).then(() => database.close());347 });348 t.pass();349});350// IndexedDB: object store renaming support351test("WPT idbobjectstore-rename-store.html (IndexedDB object store rename stringifies non-string names)", async (t) => {352 await createDatabase(t, (database, transaction) => {353 createBooksStore(t, database);354 })355 .then((database) => {356 database.close();357 })358 .then(() =>359 migrateDatabase(t, 2, (database, transaction) => {360 const store = transaction.objectStore("books");361 // @ts-expect-error362 store.name = 42;363 t.deepEqual(364 store.name,365 "42",366 "IDBObjectStore name should change immediately after a " +367 "rename to a number",368 );369 t.deepEqual(370 database.objectStoreNames as any,371 ["42"],372 "IDBDatabase.objectStoreNames should immediately reflect the " +373 "stringifying rename",374 );375 // @ts-expect-error376 store.name = true;377 t.deepEqual(378 store.name,379 "true",380 "IDBObjectStore name should change immediately after a " +381 "rename to a boolean",382 );383 // @ts-expect-error384 store.name = {};385 t.deepEqual(386 store.name,387 "[object Object]",388 "IDBObjectStore name should change immediately after a " +389 "rename to an object",390 );391 // @ts-expect-error392 store.name = () => null;393 t.deepEqual(394 store.name,395 "() => null",396 "IDBObjectStore name should change immediately after a " +397 "rename to a function",398 );399 // @ts-expect-error400 store.name = undefined;401 t.deepEqual(402 store.name,403 "undefined",404 "IDBObjectStore name should change immediately after a " +405 "rename to undefined",406 );407 }),408 )409 .then((database) => {410 t.deepEqual(411 database.objectStoreNames as any,412 ["undefined"],413 "IDBDatabase.objectStoreNames should reflect the last rename " +414 "after the versionchange transaction commits",415 );416 const transaction = database.transaction("undefined", "readonly");417 const store = transaction.objectStore("undefined");418 return checkStoreContents(419 t,420 store,421 "Renaming an object store should not change its records",422 ).then(() => database.close());423 });424 t.pass();425});426function rename_test_macro(427 t: ExecutionContext,428 escapedName: string,429): Promise<void> {430 const name = JSON.parse('"' + escapedName + '"');431 return createDatabase(t, (database, transaction) => {432 createBooksStore(t, database);433 })434 .then((database) => {435 database.close();436 })437 .then(() =>438 migrateDatabase(t, 2, (database, transaction) => {439 const store = transaction.objectStore("books");440 store.name = name;441 t.deepEqual(442 store.name,443 name,444 "IDBObjectStore name should change immediately after the " + "rename",445 );446 t.deepEqual(...
booksStore.test.js
Source:booksStore.test.js
1import { createBooksStore } from './booksStore';2describe('createBooksStore', () => {3 it('returns an object that is the book store', () => {4 const booksStore = createBooksStore();5 expect(booksStore).toEqual({6 books: [],7 addBook: booksStore.addBook,8 removeBook: booksStore.removeBook9 });10 });...
Using AI Code Generation
1var wpt = require('./wpt.js');2var booksStore = wpt.createBooksStore();3var wpt = require('./wpt.js');4var booksStore = wpt.createBooksStore();5booksStore.addBook({title: 'The Lord of the Rings', author: 'J.R.R. Tolkien'});6booksStore.addBook({title: 'The Hobbit', author: 'J.R.R. Tolkien'});7booksStore.addBook({title: 'The Silmarillion', author: 'J.R.R. Tolkien'});8booksStore.addBook({title: 'The Hitchhiker\'s Guide to the Galaxy', author: 'Douglas Adams'});9booksStore.addBook({title: 'The Restaurant at the End of the Universe', author: 'Douglas Adams'});10booksStore.addBook({title: 'Life, the Universe and Everything', author: 'Douglas Adams'});11booksStore.addBook({title: 'So Long, and Thanks for All the Fish', author: 'Douglas Adams'});12booksStore.addBook({title: 'Mostly Harmless', author: 'Douglas Adams'});13booksStore.addBook({title: 'The Hitchhiker\'s Guide to the Galaxy', author: 'Douglas Adams'});14booksStore.addBook({title: 'The Restaurant at the End of the Universe', author: 'Douglas Adams'});15booksStore.addBook({title: 'Life, the Universe and Everything', author: 'Douglas Adams'});16booksStore.addBook({title: 'So Long, and Thanks for All the Fish', author: 'Douglas Adams'});17booksStore.addBook({title: 'Mostly Harmless', author: 'Douglas Adams'});18booksStore.addBook({title: 'The Hitchhiker\'s Guide to the Galaxy', author: 'Douglas Adams'});19booksStore.addBook({title: 'The Restaurant at the End of the Universe', author: 'Douglas Adams'});20booksStore.addBook({title: 'Life, the Universe and Everything', author: 'Douglas Adams'});21booksStore.addBook({title: 'So Long, and Thanks for All the Fish', author: 'Douglas Adams'});22booksStore.addBook({title: 'Mostly Harmless', author: 'Douglas Adams'});23booksStore.addBook({title: 'The Hitchhiker\'s Guide to the Galaxy', author: 'Douglas Adams'});
Using AI Code Generation
1const { createBooksStore } = require('./wpt');2const store = createBooksStore();3store.addBook({title: 'Book 1', author: 'Author 1'});4store.addBook({title: 'Book 2', author: 'Author 2'});5store.addBook({title: 'Book 3', author: 'Author 3'});6store.addBook({title: 'Book 4', author: 'Author 4'});7store.addBook({title: 'Book 5', author: 'Author 5'});8store.addBook({title: 'Book 6', author: 'Author 6'});9store.addBook({title: 'Book 7', author: 'Author 7'});10store.addBook({title: 'Book 8', author: 'Author 8'});11store.addBook({title: 'Book 9', author: 'Author 9'});12store.addBook({title: 'Book 10', author: 'Author 10'});13store.addBook({title: 'Book 11', author: 'Author 11'});14store.addBook({title: 'Book 12', author: 'Author 12'});15store.addBook({title: 'Book 13', author: 'Author 13'});16store.addBook({title: 'Book 14', author: 'Author 14'});17store.addBook({title: 'Book 15', author: 'Author 15'});18store.addBook({title: 'Book 16', author: 'Author 16'});19store.addBook({title: 'Book 17', author: 'Author 17'});20store.addBook({title: 'Book 18', author: 'Author 18'});21store.addBook({title: 'Book 19', author: 'Author 19'});22store.addBook({title: 'Book 20', author: 'Author 20'});23store.addBook({title: 'Book 21', author: 'Author 21'});24store.addBook({title: 'Book 22', author: 'Author 22'});25store.addBook({title: 'Book 23', author: 'Author 23'});26store.addBook({title: 'Book 24', author: 'Author 24'});27store.addBook({title: 'Book 25', author: 'Author 25'});28store.addBook({title: 'Book 26', author: 'Author 26'});29store.addBook({title: 'Book 27
Using AI Code Generation
1var wpt = require('./wpt.js');2var booksStore = wpt.createBooksStore();3booksStore.addBook('The Lord of the Rings', 'J.R.R. Tolkien');4booksStore.addBook('The Hobbit', 'J.R.R. Tolkien');5console.log(booksStore.findBook('The Hobbit'));6console.log(booksStore.findBook('The Lord of the Rings'));7console.log(booksStore.findBook('The Silmarillion'));8var createBooksStore = function() {9 var booksStore = {};10 var books = [];11 booksStore.addBook = function(name, author) {12 books.push({name: name, author: author});13 };14 booksStore.findBook = function(name) {15 var foundBook = null;16 books.forEach(function(book) {17 if (book.name === name) {18 foundBook = book;19 }20 });21 return foundBook;22 };23 return booksStore;24};25exports.createBooksStore = createBooksStore;26{ name: 'The Hobbit', author: 'J.R.R. Tolkien' }27{ name: 'The Lord of the Rings', author: 'J.R.R. Tolkien' }28var createBooksStore = function() {29 var booksStore = {};30 var books = [];31 booksStore.addBook = function(name, author) {32 books.push({name: name, author: author});33 };34 booksStore.findBook = function(name) {35 var foundBook = null;36 books.forEach(function(book) {37 if (book.name === name) {38 foundBook = book;39 }40 });41 return foundBook;42 };43 return booksStore;44};45exports.createBooksStore = createBooksStore;46exports.findBook = function(bookName) {47 var booksStore = createBooksStore();
Using AI Code Generation
1var wpt = require('wpt');2var store = wpt.createBooksStore({3});4var wpt = require('wpt');5var store = wpt.createBooksStore({6});7var wpt = require('wpt');8var store = wpt.createBooksStore({9});10var wpt = require('wpt');11var store = wpt.createBooksStore({12});13var wpt = require('wpt');14var store = wpt.createBooksStore({15});16var wpt = require('wpt');17var store = wpt.createBooksStore({18});19var wpt = require('wpt');20var store = wpt.createBooksStore({21});22var wpt = require('wpt');23var store = wpt.createBooksStore({24});25var wpt = require('wpt');26var store = wpt.createBooksStore({27});28var wpt = require('wpt');29var store = wpt.createBooksStore({30});31var wpt = require('wpt');32var store = wpt.createBooksStore({33});34var wpt = require('wpt');
Using AI Code Generation
1const wptools = require('wptools');2const createBooksStore = require('./createBooksStore');3const booksStore = createBooksStore(wptools);4booksStore.createBook('The Hitchhiker\'s Guide to the Galaxy')5 .then((book) => {6 console.log(book);7 })8 .catch((error) => {9 console.log(error);10 });11{ title: 'The Hitchhiker\'s Guide to the Galaxy',
Using AI Code Generation
1var wpt = require('wpt.js');2var bookStore = wpt.createBooksStore();3bookStore.addBook("The Lord of the Rings", "J. R. R. Tolkien", 1954);4bookStore.addBook("The Hobbit", "J. R. R. Tolkien", 1937);5bookStore.addBook("Harry Potter and the Philosopher's Stone", "J. K. Rowling", 1997);6bookStore.addBook("And Then There Were None", "Agatha Christie", 1939);7bookStore.addBook("Dream of the Red Chamber", "Cao Xueqin", 1754);8bookStore.addBook("The Little Prince", "Antoine de Saint-Exupéry", 1943);9bookStore.addBook("She: A History of Adventure", "H. Rider Haggard", 1887);10bookStore.addBook("The Adventures of Tom Sawyer", "Mark Twain", 1876);11bookStore.addBook("The Adventures of Huckleberry Finn", "Mark Twain", 1884);12bookStore.addBook("The Wonderful Wizard of Oz", "L. Frank Baum", 1900);13console.log(bookStore.findBooksByAuthor("J. R. R. Tolkien"));14console.log(bookStore.findBooksByAuthor("J. K. Rowling"));15console.log(bookStore.findBooksByAuthor("Agatha Christie"));16console.log(bookStore.findBooksByAuthor("Cao Xueqin"));17console.log(bookStore.findBooksByAuthor("Antoine de Saint-Exupéry"));18console.log(bookStore.findBooksByAuthor("H. Rider Haggard"));19console.log(bookStore.findBooksByAuthor("Mark Twain"));20console.log(bookStore.findBooksByAuthor("L. Frank Baum"));21console.log(bookStore.findBooksByYear(1954));22console.log(bookStore.findBooksByYear(1937));23console.log(bookStore.findBooksByYear(1997));24console.log(bookStore.findBooksByYear(1939));25console.log(bookStore.findBooksByYear(1754));26console.log(bookStore.findBooksByYear(1943));27console.log(bookStore.findBooksByYear(1887));28console.log(bookStore.findBooksByYear(187
Using AI Code Generation
1var wpt = require('wpt.js');2var store = wpt.createBooksStore();3module.exports = {4 createBooksStore: function() {5 return {6 }7 }8}9module.exports = {10 createBooksStore: function() {11 var store = {12 }13 return store;14 }15}16module.exports = {17 createBooksStore: function() {18 var store = {19 }20 return store;21 }22}23module.exports = {24 createBooksStore: function() {25 var store = {26 }27 return store;28 }29}30module.exports = {31 createBooksStore: function() {32 var store = {33 }34 return store;35 }36}37module.exports = {38 createBooksStore: function() {39 var store = {40 }41 return store;42 }43}44module.exports = {45 createBooksStore: function() {46 var store = {47 }48 return store;49 }50}51module.exports = {52 createBooksStore: function() {53 var store = {54 }55 return store;56 }57}58module.exports = {59 createBooksStore: function() {60 var store = {61 }62 return store;63 }64}65module.exports = {66 createBooksStore: function() {
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!