示例#1
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#6
0
 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)