@@ -145,3 +145,28 @@ class CatalogTests(unittest.TestCase):
|
||||
self.assertFalse(connection.in_transaction)
|
||||
self.assertEqual(connection.execute("SELECT name FROM sqlite_schema").fetchall(), [])
|
||||
self.assertEqual(connection.execute('PRAGMA application_id').fetchone()[0], 0)
|
||||
|
||||
def test_solo_variant_metadata_and_required_pairs(self):
|
||||
for enabled in (True, False):
|
||||
document = bundle(part='Acoustic')
|
||||
document['music']['metadata'].update(song_id='tune', solos_enabled=enabled)
|
||||
document['music']['staves'][0]['arranged'] = True
|
||||
write_score(self.root, 'songs/tune_acoustic' + ('' if enabled else '_improv') + '.json', document)
|
||||
generator.catalog.build_catalog(self.root)
|
||||
self.assertEqual([row['solos_enabled'] for row in self.rows('songs')], [1, 0])
|
||||
saved = (self.root / 'catalog.db').read_bytes()
|
||||
alternate = self.root / 'songs/tune_acoustic_improv.json'
|
||||
document = json.loads(alternate.read_text())
|
||||
for value in ('false', 0, None):
|
||||
document['music']['metadata']['solos_enabled'] = value
|
||||
alternate.write_text(json.dumps(document))
|
||||
with self.assertRaisesRegex(ValueError, 'boolean'):
|
||||
generator.catalog.build_catalog(self.root)
|
||||
document['music']['metadata']['solos_enabled'] = True
|
||||
alternate.write_text(json.dumps(document))
|
||||
with self.assertRaisesRegex(ValueError, 'solo variants'):
|
||||
generator.catalog.build_catalog(self.root)
|
||||
alternate.unlink()
|
||||
with self.assertRaisesRegex(ValueError, 'solo variants'):
|
||||
generator.catalog.build_catalog(self.root)
|
||||
self.assertEqual((self.root / 'catalog.db').read_bytes(), saved)
|
||||
|
||||
Reference in New Issue
Block a user