def test_new_barrier_ids_current_user(self): """ Changes made by the current user should not be included in new_barrier_ids """ barrier1 = BarrierFactory(priority="LOW") barrier2 = BarrierFactory(priority="MEDIUM") barrier3 = BarrierFactory(priority="HIGH") user = create_test_user(sso_user_id=self.sso_user_data_1["user_id"]) saved_search = SavedSearch.objects.create( user=user, name="Medium", filters={"priority": ["MEDIUM"]}) saved_search.mark_as_seen() assert saved_search.new_barrier_ids == [] # Barriers created by current user should be ignored api_client = self.create_api_client(user=user) report = ReportFactory(priority="MEDIUM", created_by=user) submit_url = reverse("submit-report", kwargs={"pk": report.id}) response = api_client.put(submit_url) assert status.HTTP_200_OK == response.status_code saved_search = SavedSearch.objects.get(pk=saved_search.pk) assert report.pk not in saved_search.new_barrier_ids assert saved_search.new_barrier_ids == [] # Barriers changed by current user should be ignored barrier1.priority = BarrierPriority.objects.get(code="MEDIUM") barrier1.modified_by = user barrier1.save() saved_search = SavedSearch.objects.get(pk=saved_search.pk) assert barrier1.pk not in saved_search.new_barrier_ids assert saved_search.new_barrier_ids == []
def test_mark_as_seen(self): """ Calling mark_as_seen should reset updated and new barrier ids """ barrier1 = BarrierFactory(priority="LOW") barrier2 = BarrierFactory(priority="MEDIUM") user = create_test_user(sso_user_id=self.sso_user_data_1["user_id"]) saved_search = SavedSearch.objects.create( user=user, name="Medium", filters={"priority": ["MEDIUM"]}) saved_search.mark_as_seen() assert saved_search.new_barrier_ids == [] assert saved_search.updated_barrier_ids == [] barrier1.priority = BarrierPriority.objects.get(code="MEDIUM") barrier1.save() barrier2.summary = "New summary" barrier2.save() saved_search = SavedSearch.objects.get(pk=saved_search.pk) assert saved_search.new_barrier_ids == [barrier1.pk] assert barrier1 in saved_search.new_barriers_since_notified assert barrier1 not in saved_search.updated_barriers_since_notified assert barrier2 not in saved_search.new_barriers_since_notified assert barrier2 in saved_search.updated_barriers_since_notified saved_search = SavedSearch.objects.get(pk=saved_search.pk) saved_search.mark_as_seen() assert saved_search.new_barrier_ids == [] assert saved_search.updated_barrier_ids == []
def test_new_barrier_ids_other_user(self): """ Changes made by other users should be included in new_barrier_ids """ barrier1 = BarrierFactory(priority="LOW") barrier2 = BarrierFactory(priority="MEDIUM") barrier3 = BarrierFactory(priority="HIGH") user = create_test_user(sso_user_id=self.sso_user_data_1["user_id"]) saved_search = SavedSearch.objects.create( user=user, name="Medium", filters={"priority": ["MEDIUM"]}) saved_search.mark_as_seen() assert saved_search.new_barrier_ids == [] # Newly created barriers should be in the list barrier4 = BarrierFactory(priority="MEDIUM") barrier5 = BarrierFactory(priority="UNKNOWN") saved_search = SavedSearch.objects.get(pk=saved_search.pk) assert saved_search.new_barrier_ids == [barrier4.id] # Existing barriers should be in the list barrier1.priority = BarrierPriority.objects.get(code="MEDIUM") barrier1.save() saved_search = SavedSearch.objects.get(pk=saved_search.pk) assert barrier1.pk in saved_search.new_barrier_ids
def test_new_barriers_since_notified_other_user(self): """ Changes made by other users should be included in new_barriers_since_notified """ barrier1 = BarrierFactory(priority="LOW") barrier2 = BarrierFactory(priority="MEDIUM") barrier3 = BarrierFactory(priority="HIGH") user = create_test_user(sso_user_id=self.sso_user_data_1["user_id"]) user2 = create_test_user(sso_user_id=self.sso_user_data_2["user_id"]) saved_search = SavedSearch.objects.create( user=user, name="Medium", filters={"priority": ["MEDIUM"]}) saved_search.mark_as_notified() assert saved_search.new_barriers_since_notified.exists() is False # Newly created barriers should be in the list barrier4 = BarrierFactory(priority="MEDIUM") barrier5 = BarrierFactory(priority="UNKNOWN") saved_search = SavedSearch.objects.get(pk=saved_search.pk) assert barrier4 in saved_search.new_barriers_since_notified assert saved_search.new_barriers_since_notified.count() == 1 # Existing barriers should be in the list barrier1.priority = BarrierPriority.objects.get(code="MEDIUM") barrier1.modified_by = user2 barrier1.save() saved_search = SavedSearch.objects.get(pk=saved_search.pk) assert barrier1 in saved_search.new_barriers_since_notified
def test_changed_filter(self): url = f'{reverse("list-barriers")}?public_view=changed' barrier1 = BarrierFactory( public_barrier___public_view_status=PublicBarrierStatus.PUBLISHED, public_barrier__last_published_on="2020-08-01", priority="LOW", source="COMPANY", ) barrier2 = BarrierFactory( public_barrier___public_view_status=PublicBarrierStatus.PUBLISHED, public_barrier__last_published_on="2020-08-01", ) barrier3 = BarrierFactory( public_barrier___public_view_status=PublicBarrierStatus.PUBLISHED, public_barrier__last_published_on="2020-08-01", ) CachedHistoryItem.objects.all().delete() # No barriers should have 'changed' since being published response = self.api_client.get(url) assert status.HTTP_200_OK == response.status_code assert 0 == response.data["count"] # Change some fields that do not affect the public barrier barrier1.source = "TRADE" barrier1.priority = BarrierPriority.objects.get(code="MEDIUM") barrier1.save() # No barriers should have 'changed' since being published response = self.api_client.get(url) assert status.HTTP_200_OK == response.status_code assert 0 == response.data["count"] # Change a field that does affect the public barrier barrier1.summary = "New summary" barrier1.save() # barrier1 should now be in the search results for changed barriers response = self.api_client.get(url) assert status.HTTP_200_OK == response.status_code assert 1 == response.data["count"] barrier_ids = set( [result["id"] for result in response.data["results"]]) assert set([str(barrier1.id)]) == barrier_ids # Change a field that does affect the public barrier barrier2.sectors = ["9f38cecc-5f95-e211-a939-e4115bead28a"] barrier2.save() # barrier2 should now also be in the search results for changed barriers response = self.api_client.get(url) assert status.HTTP_200_OK == response.status_code assert 2 == response.data["count"] barrier_ids = set( [result["id"] for result in response.data["results"]]) assert set([str(barrier1.id), str(barrier2.id)]) == barrier_ids
def test_should_notify(self): barrier1 = BarrierFactory(priority="LOW") barrier2 = BarrierFactory(priority="MEDIUM") user = create_test_user(sso_user_id=self.sso_user_data_1["user_id"]) saved_search = SavedSearch.objects.create( user=user, name="Medium", filters={"priority": ["MEDIUM"]}, ) saved_search.mark_as_notified() assert saved_search.should_notify() is False saved_search.notify_about_additions = True saved_search.save() assert saved_search.should_notify() is False # An addition to the saved search barrier1.priority = BarrierPriority.objects.get(code="MEDIUM") barrier1.save() saved_search = SavedSearch.objects.get(pk=saved_search.pk) assert saved_search.should_notify() is True saved_search.notify_about_additions = False saved_search.notify_about_updates = True saved_search.save() assert saved_search.should_notify() is False # An update to a barrier in search search barrier2.summary = "New summary" barrier2.save() saved_search = SavedSearch.objects.get(pk=saved_search.pk) assert saved_search.should_notify() is True saved_search.notify_about_additions = True saved_search.mark_as_notified() saved_search = SavedSearch.objects.get(pk=saved_search.pk) assert saved_search.should_notify() is False