it('should create triggers to update the authorNamesFirstLast and authorNamesLastFirst columns when the corresponding bookAuthors and authors records are updated',async()=>{
awaitup({context:{queryInterface,logger:Logger}})
const[[{count}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_book_authors_insert'`)
expect(count).to.equal(1)
const[[{sql}]]=awaitqueryInterface.sequelize.query(`SELECT sql FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_book_authors_insert'`)
const[[{count:count2}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_book_authors_delete'`)
expect(count2).to.equal(1)
const[[{sql:sql2}]]=awaitqueryInterface.sequelize.query(`SELECT sql FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_book_authors_delete'`)
const[[{count:count3}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_authors_update'`)
expect(count3).to.equal(1)
const[[{sql:sql3}]]=awaitqueryInterface.sequelize.query(`SELECT sql FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_authors_update'`)
it('should create indexes on the authorNamesFirstLast and authorNamesLastFirst columns',async()=>{
awaitup({context:{queryInterface,logger:Logger}})
const[[{count}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='library_items_library_id_media_type_author_names_first_last'`)
expect(count).to.equal(1)
const[[{sql}]]=awaitqueryInterface.sequelize.query(`SELECT sql FROM sqlite_master WHERE type='index' AND name='library_items_library_id_media_type_author_names_first_last'`)
const[[{count:count2}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='library_items_library_id_media_type_author_names_last_first'`)
expect(count2).to.equal(1)
const[[{sql:sql2}]]=awaitqueryInterface.sequelize.query(`SELECT sql FROM sqlite_master WHERE type='index' AND name='library_items_library_id_media_type_author_names_last_first'`)
it('should add an index on publishedAt to the podcastEpisodes table',async()=>{
awaitup({context:{queryInterface,logger:Logger}})
const[[{count}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='podcast_episodes_published_at'`)
expect(count).to.equal(1)
const[[{sql}]]=awaitqueryInterface.sequelize.query(`SELECT sql FROM sqlite_master WHERE type='index' AND name='podcast_episodes_published_at'`)
const[[{count}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_book_authors_insert'`)
expect(count).to.equal(1)
const[[{count:count2}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_book_authors_delete'`)
expect(count2).to.equal(1)
const[[{count:count3}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_authors_update'`)
expect(count3).to.equal(1)
const[[{count:count4}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='library_items_library_id_media_type_author_names_first_last'`)
expect(count4).to.equal(1)
const[[{count:count5}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='library_items_library_id_media_type_author_names_last_first'`)
const[[{count:count6}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='podcast_episodes_published_at'`)
const[[{count}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_book_authors_insert'`)
expect(count).to.equal(0)
const[[{count:count2}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_book_authors_delete'`)
expect(count2).to.equal(0)
const[[{count:count3}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_authors_update'`)
expect(count3).to.equal(0)
})
it('should remove the indexes from the libraryItems table',async()=>{
const[[{count}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='library_items_library_id_media_type_author_names_first_last'`)
expect(count).to.equal(0)
const[[{count:count2}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='library_items_library_id_media_type_author_names_last_first'`)
const[[{count}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='podcast_episodes_published_at'`)
const[libraryItems]=awaitqueryInterface.sequelize.query(`SELECT * FROM libraryItems`)
expect(libraryItems).to.deep.equal([
{id:1,mediaId:1,mediaType:'book',libraryId:1},
{id:2,mediaId:2,mediaType:'book',libraryId:1}
])
const[[{count}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_book_authors_insert'`)
expect(count).to.equal(0)
const[[{count:count2}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_book_authors_delete'`)
expect(count2).to.equal(0)
const[[{count:count3}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='trigger' AND name='update_library_items_author_names_on_authors_update'`)
expect(count3).to.equal(0)
const[[{count:count4}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='library_items_library_id_media_type_author_names_first_last'`)
expect(count4).to.equal(0)
const[[{count:count5}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='library_items_library_id_media_type_author_names_last_first'`)
const[[{count:count6}]]=awaitqueryInterface.sequelize.query(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name='podcast_episodes_published_at'`)