def test_success(self): """ MyObject.objects.create() should create a new obj in local and cdms. """ modified_on = (timezone.now() - datetime.timedelta(days=1)).replace(microsecond=0) cdms_id = "brand new id" self.mocked_cdms_api.create.side_effect = mocked_cdms_create( create_data={"SimpleId": cdms_id, "ModifiedOn": modified_on} ) self.assertEqual(SimpleObj.objects.skip_cdms().count(), 0) obj = SimpleObj.objects.create(name="simple obj") self.assertEqual(SimpleObj.objects.skip_cdms().count(), 1) self.assertEqual(obj.cdms_pk, cdms_id) self.assertEqual(obj.modified, modified_on) self.assertAPICreateCalled( SimpleObj, kwargs={"data": {"Name": "simple obj", "DateTimeField": None, "IntField": None, "FKField": None}} ) self.assertAPINotCalled(["list", "update", "delete", "get"]) # reload obj and check cdms_pk and modified obj = SimpleObj.objects.skip_cdms().get(pk=obj.pk) self.assertEqual(obj.cdms_pk, cdms_id) self.assertEqual(obj.modified, modified_on)
def test_success(self): """ obj.save() should create a new obj in local and cdms if it doesn't exist. The operation should create a revision with the change as well. """ modified_on = (timezone.now() - datetime.timedelta(days=1)).replace(microsecond=0) cdms_id = 'brand new id' self.mocked_cdms_api.create.side_effect = mocked_cdms_create( create_data={ 'SimpleId': cdms_id, 'ModifiedOn': modified_on } ) self.assertNoRevisions() obj = SimpleObj() obj.name = 'simple obj' obj.dt_field = datetime.datetime(2016, 1, 1).replace(tzinfo=datetime.timezone.utc) obj.int_field = 10 self.assertEqual(obj.cdms_pk, '') self.assertEqual(SimpleObj.objects.skip_cdms().count(), 0) obj.save() self.assertEqual(SimpleObj.objects.skip_cdms().count(), 1) self.assertEqual(obj.cdms_pk, cdms_id) self.assertEqual(obj.modified, modified_on) self.assertAPICreateCalled( SimpleObj, kwargs={ 'data': { 'Name': 'simple obj', 'DateTimeField': '/Date(1451606400000)/', 'IntField': 10, 'FKField': None } } ) self.assertAPINotCalled(['list', 'update', 'delete', 'get']) # reload obj and check cdms_pk and modified obj = SimpleObj.objects.skip_cdms().get(pk=obj.pk) self.assertEqual(obj.cdms_pk, cdms_id) self.assertEqual(obj.modified, modified_on) # check versions self.assertEqual(Version.objects.count(), 1) self.assertEqual(Revision.objects.count(), 1) version_list = reversion.get_for_object(obj) self.assertEqual(len(version_list), 1) version = version_list[0] self.assertIsNotCDMSRefreshRevision(version.revision) version_data = version.field_dict self.assertEqual(version_data['cdms_pk'], obj.cdms_pk) self.assertEqual(version_data['modified'], obj.modified) self.assertEqual(version_data['created'], obj.created)
def __call__(self, result, mocked_cdms_api, *args, **kwargs): # mocking the modified value so that the tests don't depend on the automatic 'now' datetime value # and therefore we can catch all hidden problems. self.mocked_modified = (timezone.now() + datetime.timedelta(minutes=1)).replace(microsecond=0) mocked_cdms_api.create.side_effect = mocked_cdms_create() mocked_cdms_api.get.side_effect = mocked_cdms_get(get_data={ 'ModifiedOn': self.mocked_modified }) mocked_cdms_api.update.side_effect = mocked_cdms_update() self.mocked_cdms_api = mocked_cdms_api super(BaseMockedCDMSApiTestCase, self).__call__(result, *args, **kwargs)
def test_success(self): """ obj.save() should create a new obj in local and cdms if it doesn't exist. """ modified_on = (timezone.now() - datetime.timedelta(days=1)).replace(microsecond=0) cdms_id = "brand new id" self.mocked_cdms_api.create.side_effect = mocked_cdms_create( create_data={"SimpleId": cdms_id, "ModifiedOn": modified_on} ) obj = SimpleObj() obj.name = "simple obj" obj.dt_field = datetime.datetime(2016, 1, 1).replace(tzinfo=datetime.timezone.utc) obj.int_field = 10 self.assertEqual(obj.cdms_pk, "") self.assertEqual(SimpleObj.objects.skip_cdms().count(), 0) obj.save() self.assertEqual(SimpleObj.objects.skip_cdms().count(), 1) self.assertEqual(obj.cdms_pk, cdms_id) self.assertEqual(obj.modified, modified_on) self.assertAPICreateCalled( SimpleObj, kwargs={ "data": { "Name": "simple obj", "DateTimeField": "/Date(1451606400000)/", "IntField": 10, "FKField": None, } }, ) self.assertAPINotCalled(["list", "update", "delete", "get"]) # reload obj and check cdms_pk and modified obj = SimpleObj.objects.skip_cdms().get(pk=obj.pk) self.assertEqual(obj.cdms_pk, cdms_id) self.assertEqual(obj.modified, modified_on)
def test_create(self): """ obj = ChildClass(parent_fk=...) obj.save() should create the object in local and in cdms with the related `parent_fk` set. """ self.mocked_cdms_api.create.side_effect = mocked_cdms_create( create_data={ 'SimpleId': 'simple id', 'ModifiedOn': timezone.now() } ) obj = SimpleObj( name='simple obj', fk_obj=self.parent_obj ) obj.save() self.assertEqual(SimpleObj.objects.skip_cdms().count(), 1) self.assertAPICreateCalled( SimpleObj, kwargs={ 'data': { 'Name': 'simple obj', 'DateTimeField': None, 'IntField': None, 'FKField': { 'Id': self.parent_obj.cdms_pk } } } ) self.assertAPINotCalled(['list', 'update', 'delete', 'get']) # reload obj and check cdms_pk and modified obj = SimpleObj.objects.skip_cdms().get(pk=obj.pk) self.assertEqual(obj.fk_obj.cdms_pk, self.parent_obj.cdms_pk)
def __call__(self, result, mocked_cdms_api, *args, **kwargs): mocked_cdms_api.create.side_effect = mocked_cdms_create() mocked_cdms_api.get.side_effect = mocked_cdms_get() self.mocked_cdms_api = mocked_cdms_api super(BaseMockedCDMSApiTestCase, self).__call__(result, *args, **kwargs)