def test_updated_barriers_since_notified_other_user(self):
        """
        Changes made by the other users should be included in updated_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"])

        saved_search = SavedSearch.objects.create(
            user=user, name="Medium", filters={"priority": ["MEDIUM"]})
        saved_search.mark_as_notified()

        assert saved_search.updated_barriers_since_notified.exists() is False

        barrier1.summary = "New summary"
        barrier1.save()

        barrier2.summary = "New summary"
        barrier2.save()

        saved_search = SavedSearch.objects.get(pk=saved_search.pk)
        assert barrier2 in saved_search.updated_barriers_since_notified
        assert saved_search.updated_barriers_since_notified.count() == 1
    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 == []
Example #3
0
    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_updated_barrier_ids_other_user(self):
        """
        Changes made by the other users should be included in updated_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.updated_barrier_ids == []

        barrier1.summary = "New summary"
        barrier1.save()

        barrier2.summary = "New summary"
        barrier2.save()

        saved_search = SavedSearch.objects.get(pk=saved_search.pk)
        assert saved_search.updated_barrier_ids == [barrier2.id]
    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