Example #1
0
    def test_create_org_special_characters(self):
        # period in mnemonic
        org = OrganizationFactory(name='test', mnemonic='org.1')
        self.assertTrue(org.id)
        self.assertEqual(org.mnemonic, 'org.1')

        # hyphen in mnemonic
        org = OrganizationFactory(name='test', mnemonic='org-1')
        self.assertTrue(org.id)
        self.assertEqual(org.mnemonic, 'org-1')

        # underscore in mnemonic
        org = OrganizationFactory(name='test', mnemonic='org_1')
        self.assertTrue(org.id)
        self.assertEqual(org.mnemonic, 'org_1')

        # all characters in mnemonic
        org = OrganizationFactory(name='test', mnemonic='org.1_2-3')
        self.assertTrue(org.id)
        self.assertEqual(org.mnemonic, 'org.1_2-3')

        # @ characters in mnemonic
        org = OrganizationFactory(name='test', mnemonic='org@1')
        self.assertTrue(org.id)
        self.assertEqual(org.mnemonic, 'org@1')
Example #2
0
class OrganizationLogoViewTest(OCLAPITestCase):
    def setUp(self):
        super().setUp()
        self.organization = OrganizationFactory(mnemonic='org-1')
        self.user = UserProfileFactory(organizations=[self.organization])
        self.token = self.user.get_token()

    @patch('core.common.services.S3.upload_base64')
    def test_post_200(self, upload_base64_mock):
        upload_base64_mock.return_value = 'orgs/org-1/logo.png'
        self.assertIsNone(self.organization.logo_url)
        self.assertIsNone(self.organization.logo_path)

        response = self.client.post(
            self.organization.uri + 'logo/',
            dict(base64='base64-data'),
            HTTP_AUTHORIZATION='Token ' + self.token,
            format='json'
        )

        self.assertEqual(response.status_code, 200)
        expected_logo_url = 'http://oclapi2-dev.s3.amazonaws.com/orgs/org-1/logo.png'
        self.assertEqual(response.data['logo_url'].replace('https://', 'http://'), expected_logo_url)
        self.organization.refresh_from_db()
        self.assertEqual(self.organization.logo_url.replace('https://', 'http://'), expected_logo_url)
        self.assertEqual(self.organization.logo_path, 'orgs/org-1/logo.png')
        upload_base64_mock.assert_called_once_with('base64-data', 'orgs/org-1/logo.png', False, True)
Example #3
0
 def setUp(self):
     super().setUp()
     self.superuser = UserProfile.objects.get(is_superuser=True)
     self.user = UserProfileFactory(username='******')
     self.org_private = OrganizationFactory(mnemonic='private-org', public_access=ACCESS_TYPE_NONE)
     self.org_public_view = OrganizationFactory(mnemonic='public-view-org', public_access=ACCESS_TYPE_VIEW)
     self.org_public_edit = OrganizationFactory(mnemonic='public-edit-org', public_access=ACCESS_TYPE_EDIT)
     self.user_org_public = OrganizationFactory(mnemonic='user-public-view-org', public_access=ACCESS_TYPE_VIEW)
     self.user_org_private = OrganizationFactory(mnemonic='user-private-org', public_access=ACCESS_TYPE_NONE)
     self.user.organizations.set([self.user_org_private, self.user_org_public])
     self.token = self.user.get_token()
Example #4
0
    def test_collection_and_version_import(self):
        OrganizationFactory(mnemonic='PEPFAR')
        self.assertFalse(
            Collection.objects.filter(
                mnemonic='MER-R-MOH-Facility-FY19').exists())

        data = '{"type": "Collection", "id": "MER-R-MOH-Facility-FY19", "name": "MER R: MOH Facility Based FY19", ' \
               '"default_locale": "en", "short_code": "MER-R-MOH-Facility-FY19", "external_id": "OBhi1PUW3OL", ' \
               '"extras": {"Period": "FY19", "Period Description": "COP18 (FY19Q1)", "datim_sync_moh_fy19": true, ' \
               '"DHIS2-Dataset-Code": "MER_R_MOH"}, "collection_type": "Code List", "full_name": ' \
               '"MER Results: MOH Facility Based FY19", "owner": "PEPFAR", "public_access": "View", ' \
               '"owner_type": "Organization", "supported_locales": "en"}\n' \
               '{"type": "Collection Version", "id": "FY19.v0", ' \
               '"description": "Initial release of FY19 DATIM-MOH definitions", ' \
               '"collection": "MER-R-MOH-Facility-FY19", "released": true, "owner": "PEPFAR", ' \
               '"owner_type": "Organization"}'

        importer = BulkImportInline(data, 'ocladmin', True)
        importer.run()

        self.assertTrue(
            Collection.objects.filter(mnemonic='MER-R-MOH-Facility-FY19',
                                      version='HEAD').exists())
        self.assertTrue(
            Collection.objects.filter(mnemonic='MER-R-MOH-Facility-FY19',
                                      version='FY19.v0').exists())
        self.assertEqual(importer.processed, 2)
        self.assertEqual(len(importer.created), 1)
        self.assertEqual(len(importer.updated), 1)
        self.assertEqual(importer.failed, [])
        self.assertTrue(importer.elapsed_seconds > 0)
Example #5
0
    def test_source_import_success(self):
        OrganizationFactory(mnemonic='DemoOrg')
        self.assertFalse(Source.objects.filter(mnemonic='DemoSource').exists())

        data = {
            "type": "Source",
            "id": "DemoSource",
            "short_code": "DemoSource",
            "name": "OCL Demo Source",
            "full_name": "OCL Demo Source",
            "owner_type": "Organization",
            "owner": "DemoOrg",
            "description": "Source used for demo purposes",
            "default_locale": "en",
            "source_type": "Dictionary",
            "public_access": "View",
            "supported_locales": "en",
            "custom_validation_schema": "None"
        }
        importer = BulkImportInline(json.dumps(data), 'ocladmin', True)
        importer.run()

        self.assertTrue(
            Source.objects.filter(mnemonic='DemoSource',
                                  version='HEAD').exists())
        self.assertEqual(importer.processed, 1)
        self.assertEqual(len(importer.created), 1)
        self.assertEqual(importer.created[0], data)
        self.assertTrue(importer.elapsed_seconds > 0)
Example #6
0
 def setUp(self):
     self.user = UserProfileFactory()
     self.org = OrganizationFactory()
     self.token = self.user.get_token()
     self.source = OrganizationSourceFactory()
     self.user_pin = self.user.pins.create(resource=self.source)
     self.org_pin = self.org.pins.create(resource=self.source)
Example #7
0
    def test_get_200_with_subscribed_orgs(self):
        response = self.client.get(
            '/users/{}/?includeSubscribedOrgs=false'.format(
                self.user.username),
            HTTP_AUTHORIZATION='Token ' + self.token,
            format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['username'], self.user.username)
        self.assertEqual(response.data['name'], self.user.name)
        self.assertEqual(response.data['url'], self.user.uri)
        self.assertFalse('subscribed_orgs' in response.data)

        response = self.client.get(
            '/users/{}/?includeSubscribedOrgs=true'.format(self.user.username),
            HTTP_AUTHORIZATION='Token ' + self.token,
            format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['username'], self.user.username)
        self.assertEqual(len(response.data['subscribed_orgs']), 0)

        org = OrganizationFactory()
        self.user.organizations.add(org)

        response = self.client.get(
            '/users/{}/?includeSubscribedOrgs=true'.format(self.user.username),
            HTTP_AUTHORIZATION='Token ' + self.token,
            format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['username'], self.user.username)
        self.assertEqual(len(response.data['subscribed_orgs']), 1)
Example #8
0
    def test_post_201(self):
        source = OrganizationSourceFactory()
        user = UserProfileFactory()
        org = OrganizationFactory()
        token = user.get_token()

        response = self.client.post(user.uri + 'pins/',
                                    dict(resource_type='Source',
                                         resource_id=source.id),
                                    HTTP_AUTHORIZATION='Token ' + token,
                                    format='json')

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.data['resource_uri'], source.uri)
        self.assertEqual(response.data['user_id'], user.id)
        self.assertIsNone(response.data['organization_id'])
        self.assertIsNotNone(response.data['resource'])
        self.assertIsNotNone(response.data['uri'])

        response = self.client.post(org.uri + 'pins/',
                                    dict(resource_type='Source',
                                         resource_id=source.id),
                                    HTTP_AUTHORIZATION='Token ' + token,
                                    format='json')

        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.data['resource_uri'], source.uri)
        self.assertEqual(response.data['organization_id'], org.id)
        self.assertIsNone(response.data['user_id'])
        self.assertIsNotNone(response.data['resource'])
        self.assertIsNotNone(response.data['uri'])
Example #9
0
    def test_source_and_version_import(self):
        OrganizationFactory(mnemonic='DemoOrg')
        self.assertFalse(Source.objects.filter(mnemonic='DemoSource').exists())

        data = '{"type": "Source", "id": "DemoSource", "short_code": "DemoSource", "name": "OCL Demo Source", ' \
               '"full_name": "OCL Demo Source", "owner_type": "Organization", "owner": "DemoOrg", "description": ' \
               '"Source used for demo purposes", "default_locale": "en", "source_type": "Dictionary", ' \
               '"public_access": "View", "supported_locales": "en", "custom_validation_schema": "None"}\n' \
               '{"type": "Source Version", "id": "initial", "source": "DemoSource", "description": "Initial empty ' \
               'repository version", "released": true, "owner": "DemoOrg", "owner_type": "Organization"} '

        importer = BulkImportInline(data, 'ocladmin', True)
        importer.run()

        self.assertTrue(
            Source.objects.filter(mnemonic='DemoSource',
                                  version='HEAD').exists())
        self.assertTrue(
            Source.objects.filter(mnemonic='DemoSource',
                                  version='initial').exists())
        self.assertEqual(importer.processed, 2)
        self.assertEqual(len(importer.created), 1)
        self.assertEqual(len(importer.updated), 1)
        self.assertEqual(importer.failed, [])
        self.assertTrue(importer.elapsed_seconds > 0)
Example #10
0
    def test_uri(self):
        org = OrganizationFactory(mnemonic='org-1')
        user = UserProfileFactory(username='******')

        self.assertEqual(Pin().uri, None)
        self.assertEqual(
            Pin(id=1, organization=org).uri, '/orgs/org-1/pins/1/')
        self.assertEqual(Pin(id=2, user=user).uri, '/users/user-1/pins/2/')
Example #11
0
    def test_parent(self):
        org = OrganizationFactory()
        user = UserProfileFactory()

        self.assertEqual(Pin().parent, None)
        self.assertEqual(Pin(organization=org).parent, org)
        self.assertEqual(Pin(user=user).parent, user)
        self.assertEqual(Pin(user=user, organization=org).parent, org)
Example #12
0
    def test_get_403(self):
        private_org = OrganizationFactory(public_access=ACCESS_TYPE_NONE)

        response = self.client.get('/orgs/{}/members/'.format(
            private_org.mnemonic),
                                   format='json')

        self.assertEqual(response.status_code, 403)
Example #13
0
    def test_put_404(self):
        new_org = OrganizationFactory()
        response = self.client.put(
            '/orgs/{}/members/foobar/'.format(new_org.mnemonic),
            HTTP_AUTHORIZATION='Token ' + self.superuser.get_token(),
            format='json')

        self.assertEqual(response.status_code, 404)
Example #14
0
    def test_to_source_shorthand(self):
        to_concept = ConceptFactory(
            parent=OrganizationSourceFactory(mnemonic='foobar',
                                             organization=OrganizationFactory(
                                                 mnemonic='org-foo')))
        mapping = Mapping(to_concept=to_concept)

        self.assertEqual(mapping.to_source_shorthand, 'org-foo:foobar')
Example #15
0
    def test_from_source_owner_mnemonic(self):
        from_concept = ConceptFactory(
            parent=OrganizationSourceFactory(mnemonic='foobar',
                                             organization=OrganizationFactory(
                                                 mnemonic='org-foo')))
        mapping = Mapping(from_concept=from_concept)

        self.assertEqual(mapping.from_source_owner_mnemonic, 'org-foo')
Example #16
0
    def test_org_import(self):
        self.assertFalse(
            Organization.objects.filter(mnemonic='DATIM-MOH-BI-FY19').exists())

        OrganizationFactory(mnemonic='DATIM-MOH-BI-FY19', location='blah')
        self.assertTrue(
            Organization.objects.filter(mnemonic='DATIM-MOH-BI-FY19').exists())

        data = '{"type": "Organization", "__action": "DELETE", "id": "DATIM-MOH-BI-FY19"}\n' \
               '{"name": "DATIM MOH Burundi", "extras": {"datim_moh_country_code": "BI", "datim_moh_period": "FY19",' \
               ' "datim_moh_object": true}, "location": "Burundi", "public_access": "None", "type": "Organization",' \
               ' "id": "DATIM-MOH-BI-FY19"}'
        importer = BulkImportInline(data, 'ocladmin', True)
        importer.run()

        self.assertTrue(
            Organization.objects.filter(mnemonic='DATIM-MOH-BI-FY19').exists())
        self.assertEqual(importer.processed, 2)
        self.assertEqual(len(importer.created), 1)
        self.assertEqual(len(importer.deleted), 1)
        self.assertTrue(importer.elapsed_seconds > 0)

        data = {
            "name": "DATIM MOH Burundi",
            "extras": {
                "datim_moh_country_code": "BI",
                "datim_moh_period": "FY19",
                "datim_moh_object": True
            },
            "location": "Burundi",
            "public_access": "None",
            "type": "Organization",
            "id": "DATIM-MOH-BI-FY19"
        }
        importer = BulkImportInline(json.dumps(data), 'ocladmin', True)
        importer.run()

        self.assertEqual(importer.processed, 1)
        self.assertEqual(len(importer.created), 0)
        self.assertEqual(len(importer.failed), 0)
        self.assertEqual(len(importer.deleted), 0)
        self.assertEqual(len(importer.exists), 1)
        self.assertEqual(importer.exists[0], data)
        self.assertTrue(importer.elapsed_seconds > 0)

        data = {"type": "Organization", "__action": "DELETE", "id": "FOOBAR"}
        importer = BulkImportInline(json.dumps(data), 'ocladmin', True)
        importer.run()

        self.assertEqual(importer.processed, 1)
        self.assertEqual(len(importer.created), 0)
        self.assertEqual(len(importer.failed), 0)
        self.assertEqual(len(importer.deleted), 0)
        self.assertEqual(len(importer.exists), 0)
        self.assertEqual(len(importer.not_found), 1)
        self.assertEqual(importer.not_found[0], data)
        self.assertTrue(importer.elapsed_seconds > 0)
Example #17
0
    def test_delete_organization_task(self):
        org = OrganizationFactory()

        delete_organization(0)

        self.assertTrue(Organization.objects.filter(id=org.id).exists())

        delete_organization(org.id)

        self.assertFalse(Organization.objects.filter(id=org.id).exists())
Example #18
0
    def test_from_concept_shorthand(self):
        from_concept = ConceptFactory(
            mnemonic='concept-foo',
            parent=OrganizationSourceFactory(
                mnemonic='source-foo',
                organization=OrganizationFactory(mnemonic='org-foo')))
        mapping = Mapping(from_concept=from_concept)

        self.assertEqual(mapping.from_concept_shorthand,
                         'org-foo:source-foo:concept-foo')
Example #19
0
 def setUp(self):
     super().setUp()
     self.org = OrganizationFactory()
     self.user = self.org.created_by
     self.token = self.user.get_token()
     self.dummy_config = dict(tabs=[dict(default=True)])
     self.config = ClientConfig(config=self.dummy_config,
                                name='foobar',
                                resource=self.org)
     self.config.save()
Example #20
0
    def test_get_200(self):
        org = OrganizationFactory(extras=dict())
        user = UserProfileFactory(organizations=[org])
        token = user.get_token()

        response = self.client.get(org.uri + 'extras/',
                                   HTTP_AUTHORIZATION='Token ' + token,
                                   format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, dict())

        org = OrganizationFactory(extras=dict(foo='bar'))

        response = self.client.get(org.uri + 'extras/',
                                   HTTP_AUTHORIZATION='Token ' + token,
                                   format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, dict(foo='bar'))
Example #21
0
    def test_put_403(self):
        self.assertEqual(self.user.organizations.count(), 1)

        new_org = OrganizationFactory()
        response = self.client.put('/orgs/{}/members/{}/'.format(
            new_org.mnemonic, self.user.username),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 403)
        self.assertEqual(self.user.organizations.count(), 1)
    def test_post_403(self):
        OrganizationFactory(mnemonic='org')

        response = self.client.post('/orgs/org/collections/',
                                    dict(
                                        default_locale='en',
                                        supported_locales='en,fr',
                                        id='coll',
                                    ),
                                    format='json')

        self.assertEqual(response.status_code, 403)
Example #23
0
    def test_post_without_to_and_from_concept_url_201(self):
        source = UserSourceFactory(user=self.user, mnemonic='source')
        response = self.client.post(
            source.mappings_url,
            {
                "map_type": "Same As",
                "from_source_url": source.uri,
                "from_source_version": "2.46",
                "from_concept_code": "32700-7",
                "from_concept_name": "Microscopic observation [Identifier] in Blood by Malaria smear",
                "to_source_url": "/orgs/WHO/sources/ICPC-2/",
                "to_source_version": "v11",
                "to_concept_code": "A73",
                "to_concept_name": "Malaria"
            },
            HTTP_AUTHORIZATION='Token ' + self.token,
        )
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.data['from_source_url'], source.uri)
        self.assertEqual(response.data['from_source_version'], '2.46')
        self.assertEqual(response.data['from_concept_code'], '32700-7')
        self.assertEqual(
            response.data['from_concept_name'], 'Microscopic observation [Identifier] in Blood by Malaria smear'
        )
        self.assertEqual(response.data['to_source_url'], "/orgs/WHO/sources/ICPC-2/")
        self.assertEqual(response.data['to_source_version'], 'v11')
        self.assertEqual(response.data['to_concept_code'], 'A73')
        self.assertEqual(response.data['to_concept_name'], 'Malaria')
        mapping = source.mappings.first()
        self.assertIsNone(mapping.from_concept_id)
        self.assertIsNone(mapping.to_concept_id)
        self.assertIsNone(mapping.to_source_id)

        org = OrganizationFactory(mnemonic='WHO')
        source = OrganizationSourceFactory(organization=org, mnemonic='ICPC-2')
        source.update_mappings()

        mapping.refresh_from_db()
        self.assertEqual(mapping.to_source_url, source.uri)
        self.assertEqual(mapping.to_source, source)
        self.assertIsNone(mapping.to_concept)

        concept = ConceptFactory(parent=source, mnemonic='A73', names=[LocalizedTextFactory(name='Malaria Updated')])
        concept.update_mappings()
        mapping.refresh_from_db()
        self.assertEqual(mapping.to_concept_code, 'A73')
        self.assertEqual(mapping.to_concept_name, 'Malaria')
        self.assertEqual(mapping.to_source, source)
        self.assertEqual(mapping.to_source, concept.parent)
        self.assertEqual(mapping.to_concept, concept)
Example #24
0
    def test_clean(self):
        org = OrganizationFactory()
        pin = Pin(resource=org)
        with self.assertRaises(ValidationError) as ex:
            pin.full_clean()

        self.assertEqual(
            ex.exception.message_dict,
            dict(
                parent=['Pin needs to be owned by a user or an organization.'
                        ]))

        pin.organization = org
        pin.full_clean()
Example #25
0
    def test_organization_delete(self):
        org = OrganizationFactory()
        org_id = org.id

        self.assertTrue(org.is_active)
        self.assertTrue(Organization.objects.filter(id=org_id).exists())
        org.soft_delete()
        self.assertFalse(org.is_active)
        self.assertTrue(Organization.objects.filter(id=org_id).exists())
        org.delete()
        self.assertFalse(Organization.objects.filter(id=org_id).exists())
Example #26
0
    def test_post_400(self):
        org = OrganizationFactory(mnemonic='org')
        user = UserProfileFactory(organizations=[org])

        response = self.client.post(
            '/orgs/org/collections/',
            dict(
                default_locale='en', supported_locales='en,fr', id='coll',
                extras=dict(foo='bar')
            ),
            HTTP_AUTHORIZATION='Token ' + user.get_token(),
            format='json'
        )

        self.assertEqual(response.status_code, 400)
        self.assertEqual(response.data, dict(name=[ErrorDetail(string='This field is required.', code='required')]))
        self.assertEqual(org.collection_set.count(), 0)
    def test_post_201(self):
        org = OrganizationFactory(mnemonic='org')
        user = UserProfileFactory(organizations=[org], username='******')

        response = self.client.post('/orgs/org/collections/',
                                    dict(default_locale='en',
                                         supported_locales='en,fr',
                                         id='coll',
                                         name='Collection',
                                         mnemonic='coll',
                                         extras=dict(foo='bar')),
                                    HTTP_AUTHORIZATION='Token ' +
                                    user.get_token(),
                                    format='json')

        self.assertEqual(response.status_code, 201)
        self.assertIsNotNone(response.data['uuid'])
        self.assertEqual(response.data['id'], 'coll')
        self.assertEqual(response.data['name'], 'Collection')
        self.assertEqual(response.data['default_locale'], 'en')
        self.assertEqual(response['Location'], '/orgs/org/collections/coll/')
        self.assertEqual(org.collection_set.count(), 1)

        response = self.client.post('/users/user/collections/',
                                    dict(default_locale='en',
                                         supported_locales='en,fr',
                                         id='coll',
                                         name='Collection',
                                         mnemonic='coll',
                                         extras=dict(foo='bar')),
                                    HTTP_AUTHORIZATION='Token ' +
                                    user.get_token(),
                                    format='json')

        self.assertEqual(response.status_code, 201)
        self.assertIsNotNone(response.data['uuid'])
        self.assertEqual(response.data['id'], 'coll')
        self.assertEqual(response.data['name'], 'Collection')
        self.assertEqual(response.data['default_locale'], 'en')
        self.assertEqual(response['Location'], '/users/user/collections/coll/')
        self.assertEqual(user.collection_set.count(), 1)

        org_collection = org.collection_set.first()
        user_collection = user.collection_set.first()

        self.assertNotEqual(org_collection.id, user_collection.id)
Example #28
0
    def test_update_order(self):
        org = OrganizationFactory(mnemonic='org-1')

        org_pin1 = Pin(organization=org,
                       resource=OrganizationSourceFactory(organization=org))
        org_pin1.save()
        self.assertEqual(org_pin1.order, 0)

        org_pin2 = Pin(
            organization=org,
            resource=OrganizationCollectionFactory(organization=org))
        org_pin2.save()
        self.assertEqual(org_pin2.order, 1)

        org_pin3 = Pin(
            organization=org,
            resource=OrganizationCollectionFactory(organization=org))
        org_pin3.save()
        self.assertEqual(org_pin3.order, 2)

        org_pin3.to(0)

        org_pin1.refresh_from_db()
        org_pin2.refresh_from_db()
        org_pin3.refresh_from_db()
        self.assertEqual(org_pin3.order, 0)
        self.assertEqual(org_pin1.order, 1)
        self.assertEqual(org_pin2.order, 2)

        org_pin3.to(2)
        org_pin1.refresh_from_db()
        org_pin2.refresh_from_db()
        org_pin3.refresh_from_db()
        self.assertEqual(org_pin1.order, 0)
        self.assertEqual(org_pin2.order, 1)
        self.assertEqual(org_pin3.order, 2)

        org_pin3.to(1)
        org_pin1.refresh_from_db()
        org_pin2.refresh_from_db()
        org_pin3.refresh_from_db()
        self.assertEqual(org_pin1.order, 0)
        self.assertEqual(org_pin3.order, 1)
        self.assertEqual(org_pin2.order, 2)
Example #29
0
    def test_org_active_inactive_should_affect_children(self):
        org = OrganizationFactory(is_active=True)
        source = OrganizationSourceFactory(organization=org, is_active=True)
        collection = OrganizationCollectionFactory(organization=org, is_active=True)

        org.is_active = False
        org.save()
        source.refresh_from_db()
        collection.refresh_from_db()

        self.assertFalse(org.is_active)
        self.assertFalse(source.is_active)
        self.assertFalse(collection.is_active)

        org.is_active = True
        org.save()
        source.refresh_from_db()
        collection.refresh_from_db()

        self.assertTrue(org.is_active)
        self.assertTrue(source.is_active)
        self.assertTrue(collection.is_active)
Example #30
0
    def test_siblings(self):
        org = OrganizationFactory()
        config1 = ClientConfig(
            name='first',
            resource=org,
            config=dict(tabs=[dict(foo='bar', default=True)]))
        config1.save()

        self.assertEqual(config1.siblings.count(), 0)

        config2 = ClientConfig(
            name='second',
            resource=org,
            config=dict(tabs=[dict(foo='bar', default=True)]))
        config2.save()

        self.assertEqual(config1.siblings.count(), 1)
        self.assertEqual(config1.siblings.first().id, config2.id)

        self.assertEqual(config2.siblings.count(), 1)
        self.assertEqual(config2.siblings.first().id, config1.id)