def test_labels_are_removed(self): organization = SuperOrganization.objects.create(name='test-org') label_a = Label.objects.create( color="red", name="label-a", super_organization=organization, ) label_b = Label.objects.create( color="red", name="label-b", super_organization=organization, ) bs_1 = SEEDFactory.building_snapshot( canonical_building=CanonicalBuilding.objects.create(), ) bs_2 = SEEDFactory.building_snapshot( canonical_building=CanonicalBuilding.objects.create(), ) bs_1.canonical_building.labels.add(label_a, label_b) bs_2.canonical_building.labels.add(label_b) # Sanity check self.assertTrue( bs_1.canonical_building.labels.filter(pk=label_a.pk).exists()) self.assertTrue( bs_1.canonical_building.labels.filter(pk=label_b.pk).exists()) self.assertFalse( bs_2.canonical_building.labels.filter(pk=label_a.pk).exists()) self.assertTrue( bs_2.canonical_building.labels.filter(pk=label_b.pk).exists()) qs = CanonicalBuilding.objects.all() self.assertEqual(qs.count(), 2) data = { 'add_label_ids': [], 'remove_label_ids': [label_a.pk, label_b.pk], 'selected_buildings': [], 'select_all_checkbox': True, } serializer = UpdateBuildingLabelsSerializer( data=data, super_organization=organization, queryset=qs, ) self.assertTrue(serializer.is_valid(), serializer.errors) serializer.save() self.assertEqual(qs.count(), 2) self.assertFalse( bs_1.canonical_building.labels.filter(pk=label_a.pk).exists()) self.assertFalse( bs_1.canonical_building.labels.filter(pk=label_b.pk).exists()) self.assertFalse( bs_2.canonical_building.labels.filter(pk=label_a.pk).exists()) self.assertFalse( bs_2.canonical_building.labels.filter(pk=label_b.pk).exists())
def test_seach_active_canonicalbuildings(self): """ tests the search_buidlings method used throughout the app for only returning active CanonicalBuilding BuildingSnapshot insts. """ # arrange NUMBER_ACTIVE = 50 NUMBER_INACTIVE = 25 NUMBER_WITHOUT_CANONICAL = 5 NUMBER_PER_PAGE = 10 for i in range(NUMBER_ACTIVE): cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb) cb.canonical_snapshot = b cb.save() b.super_organization = self.org b.save() for i in range(NUMBER_INACTIVE): cb = CanonicalBuilding(active=False) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb) cb.canonical_snapshot = b cb.save() b.super_organization = self.org b.save() for i in range(NUMBER_WITHOUT_CANONICAL): b = SEEDFactory.building_snapshot() b.super_organization = self.org b.save() url = reverse_lazy("seed:search_buildings") post_data = { 'filter_params': {}, 'number_per_page': NUMBER_PER_PAGE, 'order_by': '', 'page': 1, 'q': '', 'sort_reverse': False, 'project_id': None, } # act response = self.client.post( url, content_type='application/json', data=json.dumps(post_data) ) json_string = response.content data = json.loads(json_string) # assert self.assertEqual( BuildingSnapshot.objects.all().count(), NUMBER_ACTIVE + NUMBER_INACTIVE + NUMBER_WITHOUT_CANONICAL ) self.assertEqual(data['status'], 'success') self.assertEqual(data['number_matching_search'], NUMBER_ACTIVE) self.assertEqual(data['number_returned'], NUMBER_PER_PAGE) self.assertEqual(len(data['buildings']), NUMBER_PER_PAGE)
def test_labels_are_removed(self): organization = SuperOrganization.objects.create(name='test-org') label_a = Label.objects.create( color="red", name="label-a", super_organization=organization, ) label_b = Label.objects.create( color="red", name="label-b", super_organization=organization, ) bs_1 = SEEDFactory.building_snapshot( canonical_building=CanonicalBuilding.objects.create(), ) bs_2 = SEEDFactory.building_snapshot( canonical_building=CanonicalBuilding.objects.create(), ) bs_1.canonical_building.labels.add(label_a, label_b) bs_2.canonical_building.labels.add(label_b) # Sanity check self.assertTrue(bs_1.canonical_building.labels.filter(pk=label_a.pk).exists()) self.assertTrue(bs_1.canonical_building.labels.filter(pk=label_b.pk).exists()) self.assertFalse(bs_2.canonical_building.labels.filter(pk=label_a.pk).exists()) self.assertTrue(bs_2.canonical_building.labels.filter(pk=label_b.pk).exists()) qs = CanonicalBuilding.objects.all() self.assertEqual(qs.count(), 2) data = { 'add_label_ids': [], 'remove_label_ids': [label_a.pk, label_b.pk], 'selected_buildings': [], 'select_all_checkbox': True, } serializer = UpdateBuildingLabelsSerializer( data=data, super_organization=organization, queryset=qs, ) self.assertTrue(serializer.is_valid(), serializer.errors) serializer.save() self.assertEqual(qs.count(), 2) self.assertFalse(bs_1.canonical_building.labels.filter(pk=label_a.pk).exists()) self.assertFalse(bs_1.canonical_building.labels.filter(pk=label_b.pk).exists()) self.assertFalse(bs_2.canonical_building.labels.filter(pk=label_a.pk).exists()) self.assertFalse(bs_2.canonical_building.labels.filter(pk=label_b.pk).exists())
def setUp(self): user_details = { 'username': '******', 'password': '******', 'email': '*****@*****.**' } self.user = User.objects.create_superuser(**user_details) self.org = Organization.objects.create() OrganizationUser.objects.create(user=self.user, organization=self.org) self.client.login(**user_details) import_record = ImportRecord.objects.create() import_file_1 = ImportFile.objects.create( import_record=import_record, ) import_file_1.save() import_file_2 = ImportFile.objects.create( import_record=import_record, ) import_file_2.save() cb = CanonicalBuilding(active=True) cb.save() parent_1 = SEEDFactory.building_snapshot( canonical_building=cb, gross_floor_area=None ) cb.canonical_snapshot = parent_1 cb.save() parent_1.super_organization = self.org parent_1.import_file = import_file_1 parent_1.source_type = 2 parent_1.save() cb = CanonicalBuilding(active=True) cb.save() parent_2 = SEEDFactory.building_snapshot(canonical_building=cb) cb.canonical_snapshot = parent_2 cb.save() parent_2.super_organization = self.org parent_2.import_file = import_file_2 parent_2.source_type = 3 parent_2.save() self.import_record = import_record self.import_file_1 = import_file_1 self.import_file_2 = import_file_2 self.parent_1 = parent_1 self.parent_2 = parent_2
def test_computed_property_is_applied(self): organization = SuperOrganization.objects.create(name='test-org') label_a = Label.objects.create( color="red", name="test_label-a", super_organization=organization, ) label_b = Label.objects.create( color="red", name="test_label-b", super_organization=organization, ) bs = SEEDFactory.building_snapshot( canonical_building=CanonicalBuilding.objects.create(), ) bs.canonical_building.labels.add(label_a) qs = BuildingSnapshot.objects.all() serializer = LabelSerializer( label_a, super_organization=organization, building_snapshots=qs, ) self.assertTrue(serializer.data['is_applied']) serializer = LabelSerializer( label_b, super_organization=organization, building_snapshots=qs, ) self.assertFalse(serializer.data['is_applied'])
def setUp(self): user_details = { 'username': '******', 'password': '******', 'email': '*****@*****.**' } self.user = User.objects.create_user(**user_details) self.user.generate_key() self.org = Organization.objects.create() OrganizationUser.objects.create(user=self.user, organization=self.org) cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb, property_name='ADMIN BUILDING', address_line_1='100 Admin St') cb.canonical_snapshot = b cb.save() b.super_organization = self.org b.save() self.building = b self.api_url = reverse_lazy('seed:get_building') self.params = { 'building_id': b.pk, 'organization_id': self.org.pk, } self.auth_string = '%s:%s' % (self.user.username, self.user.api_key)
def setUp(self): user_details = { 'username': '******', 'password': '******', 'email': '*****@*****.**' } self.user = User.objects.create_user(**user_details) self.user.generate_key() self.org = Organization.objects.create() OrganizationUser.objects.create(user=self.user, organization=self.org) cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb, property_name='ADMIN BUILDING', address_line_1='100 Admin St') cb.canonical_snapshot = b cb.save() b.super_organization = self.org b.save() self.building = b self.api_url = reverse_lazy('api:v1:get_building') self.params = { 'building_id': cb.pk, 'organization_id': self.org.pk, } auth_string = base64.urlsafe_b64encode('{}:{}'.format( self.user.username, self.user.api_key)) self.auth_string = 'Basic {}'.format(auth_string)
def test_computed_property_is_applied(self): organization = SuperOrganization.objects.create(name='test-org') label_a = Label.objects.create( color="red", name="test_label-a", super_organization=organization, ) label_b = Label.objects.create( color="red", name="test_label-b", super_organization=organization, ) bs = SEEDFactory.building_snapshot( canonical_building=CanonicalBuilding.objects.create(), ) bs.canonical_building.labels.add(label_a) qs = BuildingSnapshot.objects.all() serializer = LabelSerializer( label_a, super_organization=organization, building_snapshots=qs, ) self.assertTrue(serializer.data['is_applied']) serializer = LabelSerializer( label_b, super_organization=organization, building_snapshots=qs, ) self.assertFalse(serializer.data['is_applied'])
def setUp(self): self.snapshots = [] for x in range(50): cb = CanonicalBuilding() cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb) b.extra_data = {'my new field': 'something extra'} b.save() self.snapshots.append(b)
def setUp(self): self.snapshots = [] for x in range(50): cb = CanonicalBuilding() cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb) b.extra_data = { 'my new field': 'something extra' } b.save() self.snapshots.append(b)
def setUp(self): user_details = { 'username': '******', 'password': '******', 'email': '*****@*****.**', 'first_name': 'Johnny', 'last_name': 'Energy', } self.user = User.objects.create_user(**user_details) self.org = Organization.objects.create(name='my org') self.org.add_member(self.user) self.client.login(**user_details) self.fake_request = FakeRequest(user=self.user) # arrange self.NUMBER_ACTIVE = 50 NUMBER_INACTIVE = 25 NUMBER_WITHOUT_CANONICAL = 5 for i in range(self.NUMBER_ACTIVE): cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb) cb.canonical_snapshot = b cb.save() b.super_organization = self.org b.save() for i in range(NUMBER_INACTIVE): cb = CanonicalBuilding(active=False) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb) cb.canonical_snapshot = b cb.save() b.super_organization = self.org b.save() for i in range(NUMBER_WITHOUT_CANONICAL): b = SEEDFactory.building_snapshot() b.super_organization = self.org b.save()
def setUp(self): user_details = { 'username': '******', 'password': '******', 'email': '*****@*****.**', 'first_name': 'Johnny', 'last_name': 'Energy', } self.user = User.objects.create_user(**user_details) self.org = Organization.objects.create(name='my org') self.org.add_member(self.user) self.client.login(**user_details) self.fake_request = FakeRequest(user=self.user) # arrange self.NUMBER_ACTIVE = 50 NUMBER_INACTIVE = 25 NUMBER_WITHOUT_CANONICAL = 5 for i in range(self.NUMBER_ACTIVE): cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb) cb.canonical_snapshot = b cb.save() b.super_organization = self.org b.save() for i in range(NUMBER_INACTIVE): cb = CanonicalBuilding(active=False) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb) cb.canonical_snapshot = b cb.save() b.super_organization = self.org b.save() for i in range(NUMBER_WITHOUT_CANONICAL): b = SEEDFactory.building_snapshot() b.super_organization = self.org b.save()
def _create_buildings(self): """ Create 10 buildings in each child org. Also set one shared and one unshared field to a known value. """ for _ in range(10): cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb, property_name='ADMIN BUILDING', address_line_1='100 Admin St') cb.canonical_snapshot = b cb.save() b.super_organization = self.parent_org b.save() for _ in range(10): cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb, property_name='ENG BUILDING', address_line_1='100 Eng St') cb.canonical_snapshot = b cb.save() b.super_organization = self.eng_org b.save() for _ in range(10): cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb, property_name='DES BUILDING', address_line_1='100 Des St') cb.canonical_snapshot = b cb.save() b.super_organization = self.des_org b.save()
def generate_buildings(organization, count): buildings = [] for i in range(count): tax_lot_id = str(i).zfill(5) bs = SEEDFactory.building_snapshot( canonical_building=CanonicalBuilding.objects.create(active=True), tax_lot_id=tax_lot_id, super_organization=organization, ) bs.canonical_building.canonical_snapshot = bs bs.canonical_building.save() buildings.append(bs) return buildings
def _create_buildings(self): """ Create 10 buildings in each child org. Also set one shared and one unshared field to a known value. """ for _ in range(10): cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb, property_name='ADMIN BUILDING', address_line_1='100 Admin St') cb.canonical_snapshot = b cb.save() b.super_organization = self.parent_org b.save() for _ in range(10): cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb, property_name='ENG BUILDING', address_line_1='100 Eng St') cb.canonical_snapshot = b cb.save() b.super_organization = self.eng_org b.save() for _ in range(10): cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot(canonical_building=cb, property_name='DES BUILDING', address_line_1='100 Des St') cb.canonical_snapshot = b cb.save() b.super_organization = self.des_org b.save()
def generate_buildings(organization, count): buildings = [] for i in range(count): tax_lot_id = str(i).zfill(5) bs = SEEDFactory.building_snapshot( canonical_building=CanonicalBuilding.objects.create(active=True), tax_lot_id=tax_lot_id, super_organization=organization, ) bs.canonical_building.canonical_snapshot = bs bs.canonical_building.save() buildings.append(bs) return buildings
def setUp(self): user_details = { 'username': '******', 'password': '******', 'email': '*****@*****.**', 'first_name': 'Johnny', 'last_name': 'Energy', } self.user = User.objects.create_user(**user_details) self.org = Organization.objects.create(name='my org') self.org.add_member(self.user) self.client.login(**user_details) self.fake_request = FakeRequest(user=self.user) # create BuildingSnapshot and CanonicalBuilding self.cb = CanonicalBuilding.objects.create(active=True) self.bs = SEEDFactory.building_snapshot(canonical_building=self.cb, property_name='ADMIN BUILDING', address_line_1='100 Admin St') self.cb.canonical_snapshot = self.bs self.cb.save() # create AuditLog audit self.audit_log = AuditLog.objects.create( user=self.user, content_object=self.cb, audit_type=LOG, action='create_building', action_response={ 'status': 'success', 'building_id': self.cb.pk }, action_note='user created a building', organization=self.org, ) # create AuditLog note self.note_text = 'The building has a wonderfully low EUI' self.note = AuditLog.objects.create( user=self.user, content_object=self.cb, audit_type=NOTE, action='create_note', action_response={'status': 'success'}, action_note=self.note_text, organization=self.org, )
def setUp(self): user_details = { 'username': '******', 'password': '******', 'email': '*****@*****.**', 'first_name': 'Johnny', 'last_name': 'Energy', } self.user = User.objects.create_user(**user_details) self.org = Organization.objects.create(name='my org') self.org.add_member(self.user) self.client.login(**user_details) self.fake_request = FakeRequest(user=self.user) # create BuildingSnapshot and CanonicalBuilding self.cb = CanonicalBuilding.objects.create(active=True) self.bs = SEEDFactory.building_snapshot( canonical_building=self.cb, property_name='ADMIN BUILDING', address_line_1='100 Admin St' ) self.cb.canonical_snapshot = self.bs self.cb.save() # create AuditLog audit self.audit_log = AuditLog.objects.create( user=self.user, content_object=self.cb, audit_type=LOG, action='create_building', action_response={'status': 'success', 'building_id': self.cb.pk}, action_note='user created a building', organization=self.org, ) # create AuditLog note self.note_text = 'The building has a wonderfully low EUI' self.note = AuditLog.objects.create( user=self.user, content_object=self.cb, audit_type=NOTE, action='create_note', action_response={'status': 'success'}, action_note=self.note_text, organization=self.org, )
def setUp(self): user_details = { "username": "******", "password": "******", "email": "*****@*****.**", "first_name": "Johnny", "last_name": "Energy", } self.user = User.objects.create_user(**user_details) self.org = Organization.objects.create(name="my org") self.org.add_member(self.user) self.client.login(**user_details) self.fake_request = FakeRequest(user=self.user) # create BuildingSnapshot and CanonicalBuilding self.cb = CanonicalBuilding.objects.create(active=True) self.bs = SEEDFactory.building_snapshot( canonical_building=self.cb, property_name="ADMIN BUILDING", address_line_1="100 Admin St" ) self.cb.canonical_snapshot = self.bs self.cb.save() # create AuditLog audit self.audit_log = AuditLog.objects.create( user=self.user, content_object=self.cb, audit_type=LOG, action="create_building", action_response={"status": "success", "building_id": self.cb.pk}, action_note="user created a building", organization=self.org, ) # create AuditLog note self.note_text = "The building has a wonderfully low EUI" self.note = AuditLog.objects.create( user=self.user, content_object=self.cb, audit_type=NOTE, action="create_note", action_response={"status": "success"}, action_note=self.note_text, organization=self.org, )
def setUp(self): user_details = {"username": "******", "password": "******", "email": "*****@*****.**"} self.user = User.objects.create_user(**user_details) self.user.generate_key() self.org = Organization.objects.create() OrganizationUser.objects.create(user=self.user, organization=self.org) cb = CanonicalBuilding(active=True) cb.save() b = SEEDFactory.building_snapshot( canonical_building=cb, property_name="ADMIN BUILDING", address_line_1="100 Admin St" ) cb.canonical_snapshot = b cb.save() b.super_organization = self.org b.save() self.building = b self.api_url = reverse_lazy("seed:get_building") self.params = {"building_id": cb.pk, "organization_id": self.org.pk} self.auth_string = "%s:%s" % (self.user.username, self.user.api_key)
def setUp(self): self.snapshots = [] for x in range(50): cb = CanonicalBuilding() cb.save() self.snapshots.append(SEEDFactory.building_snapshot(canonical_building=cb))