class ManifestTestCase(unittest.TestCase): def setUp(self): self.manifest_loader = ManifestLoader(manifests={'djangofixture':DjangoFixtureManifest, 'dockitfixture':DockitFixtureManifest,}, data_sources={'inline':InlineDataSource}) def test_load_dockitfixture_manifest(self): data = {'loader':'dockitfixture', 'data':[{'source':'inline', 'data':[{ "model":"dockit.temporarydocument", "pk": 1, "natural_key": {"pk":1}, "fields": { "_tempinfo": { "user": None, }, "extrafield": 1, } }], }] } manifest = self.manifest_loader.load_manifest(data) objects = manifest.load() self.assertEqual(len(objects), 1) self.assertEqual(objects[0].object['extrafield'], 1) def test_load_djangofixture_manifest(self): data = {'loader':'djangofixture', 'data':[{'source':'inline', 'data':[{ "model": "auth.user", "pk": 1, "fields": { "username": "******", "first_name": "John", "last_name": "Lennon", "email": "*****@*****.**", } }], }] } manifest = self.manifest_loader.load_manifest(data) objects = manifest.load() self.assertEqual(len(objects), 1) self.assertEqual(objects[0].object.username, 'fixtureuser') def test_create_dockitfixture_manifest(self): from dockit.models import TemporaryDocument foo = TemporaryDocument(extrafield=1) data_sources = [(InlineDataSource, [foo], {})] payload = self.manifest_loader.create_manifest_payload('dockitfixture', data_sources) self.assertEqual(len(payload['data']), 1)
class ManifestTestCase(unittest.TestCase): def setUp(self): self.manifest_loader = ManifestLoader(manifests={'dockitcmsfixture':DockitCMSFixtureManifest,}, data_sources={'inline':InlineDataSource}) self.fixtures = ManifestFixtures() def get_fixture_data(self): data = {'loader':'dockitcmsfixture', 'references': { 'applications': ['app1'], #defines app references by natural keys 'subsites': ['subsite1'], #includes referenced subsites #CONSIDER: indexes do not have natural keys, but is not needed as we can look for functional equivalence #a special loader can read this info and offer the user to define their own mappings }, 'documentdesign': [],#data sources], 'collections': wrap_inline_fixture(self.fixtures.collection_fixture()), 'collection_data': {},#self.fixtures.collection_data_fixture(), 'indexes': wrap_inline_fixture(self.fixtures.index_fixture()), 'viewpoints': wrap_inline_fixture(self.fixtures.viewpoint_fixture()), 'subsites': wrap_inline_fixture(self.fixtures.subsite_fixture()), 'applications': wrap_inline_fixture(self.fixtures.application_fixture()), } return data def test_load_dockitcmsfixture_manifest(self): data = self.get_fixture_data() manifest = self.manifest_loader.load_manifest(data) objects = manifest.load() self.assertEqual(len(objects), 6) def test_load_dockitcmsfixture_manifest_with_rename_collection(self): data = self.get_fixture_data() dev_subsite = Subsite(url='/dev/', name='Dev Site', sites=[Site.objects.get_current()], mixins=["widgetblock.widgets"],) dev_subsite.save() rename_collections = { 'team': 'dev.team', } #TODO existing object map is awkward existing_object_map = { "dockitcms.subsite": [ ({"name": "Root",}, dev_subsite), ] } manifest = self.manifest_loader.load_manifest(data) objects = manifest.load(rename_collections=rename_collections, existing_object_map=existing_object_map) self.assertEqual(len(objects), 6) #TODO assert data was coppied over vp_found = False cl_found = False for obj in objects: if isinstance(obj, BaseViewPoint): self.assertEqual(obj.subsite, dev_subsite) vp_found = True if isinstance(obj, BaseCollection): self.assertEqual(obj.key, 'dev.team') cl_found = True assert vp_found assert cl_found def test_create_dockitcmsfixture_manifest(self): dev_subsite = Subsite(url='/dev/', name='Dev Site', sites=[Site.objects.get_current()], mixins=["widgetblock.widgets"],) dev_subsite.save() data_sources = [(InlineDataSource, [dev_subsite], {})] payload = self.manifest_loader.create_manifest_payload('dockitcmsfixture', data_sources) self.assertTrue('subsites' in payload) self.assertEqual(len(payload['subsites']), 1) self.assertEqual(len(payload['subsites'][0]['data']), 1)