Пример #1
0
    def test_patch_status(self):
        reminder = Reminder(creator=self.user)
        reminder.save()

        self.validate_response(
            f"{self.endpoint}{reminder.pk}/",
            method="patch",
            headers=self.auth_headers,
            data={"status": ReminderStatus.NOTIFIED.name},
            expected_status_code=status.HTTP_400_BAD_REQUEST,
        )

        reminder.refresh_from_db()
        self.assertEqual("CREATED", reminder.status)

        self.validate_response(
            f"{self.endpoint}{reminder.pk}/",
            method="patch",
            headers=self.auth_headers,
            data={"status": ReminderStatus.DONE.name},
            expected_status_code=status.HTTP_200_OK,
        )

        reminder.refresh_from_db()
        self.assertEqual("DONE", reminder.status)
Пример #2
0
    def test_patch_normal_readonly(self):
        reminder = Reminder(creator=self.user)
        reminder.save()

        dtm = utcnow() - timedelta(days=1)

        dataset = {
            "created_at": dtm,
            "creator": self.user2.pk,
            "notified_at": dtm,
        }

        old = {_f: getattr(reminder, _f) for _f in dataset}

        for field, value in dataset.items():
            self.validate_response(
                f"{self.endpoint}{reminder.pk}/",
                method="patch",
                headers=self.auth_headers,
                data={field: value},
                expected_status_code=status.HTTP_200_OK,
            )

        reminder.refresh_from_db()

        for field, expected_value in old.items():
            self.assertEqual(expected_value, getattr(reminder, field), field)
Пример #3
0
    def test_post_user(self):
        user = self.create_user()

        rem = Reminder(creator=user, title=user.username)
        rem.save()

        client = Client()
        client.login(username=user.username, password=user.username)

        self.validate_response(
            client=client,
            method="post",
            url=f"{rem.get_absolute_url()}delete/",
            expected_view_name="reminders:all_reminders",
            expected_view=AllRemindersView,
            expected_redirect_chain=[("/", 302)],
            expected_template="reminders/all_reminders.html",
            content_filters=(
                lambda _c: b"error" not in _c,
                lambda _c: f"title_{user.username}".encode() not in _c,
                lambda _c: ReminderStatus.NOTIFIED.value.encode() not in _c,
            ),
        )

        with self.assertRaises(Reminder.DoesNotExist):
            rem.refresh_from_db()
Пример #4
0
    def test_delete_normal(self):
        reminder = Reminder(creator=self.user)
        reminder.save()

        self.validate_response(
            f"{self.endpoint}{reminder.pk}/",
            method="delete",
            headers=self.auth_headers,
            expected_status_code=status.HTTP_204_NO_CONTENT,
        )

        with self.assertRaises(Reminder.DoesNotExist):
            reminder.refresh_from_db()
Пример #5
0
    def test_post_user(self):
        user = self.create_user()
        client = Client()
        client.login(username=user.username, password=user.username)

        rem = Reminder(creator=user, title=user.username)
        rem.save()

        created_at = rem.created_at
        dtm = utcnow() + timedelta(days=1)

        self.validate_response(
            client=client,
            method="post",
            url=f"{rem.get_absolute_url()}update/",
            form_data={
                "created_at": dtm,
                "status": ReminderStatus.NOTIFIED,
                "title": f"title_{user.username}",
                "participants": [
                    user.pk,
                ],
            },
            expected_view_name="reminders:reminder",
            expected_view=ReminderView,
            expected_redirect_chain=[(rem.get_absolute_url(), 302)],
            expected_template="reminders/reminder.html",
            content_filters=(
                lambda _c: b"error" not in _c,
                lambda _c: f"title_{user.username}".encode() in _c,
                lambda _c: ReminderStatus.NOTIFIED.value.encode() not in _c,
            ),
        )

        rem.refresh_from_db()

        self.assertEqual(rem.title, f"title_{user.username}")
        self.assertEqual(rem.status, ReminderStatus.CREATED.name)
        self.assertEqual(rem.created_at, created_at)
        self.assertNotEqual(rem.created_at, dtm)
Пример #6
0
    def test_post_user(self):
        user = self.create_user()
        client = Client()
        client.login(username=user.username, password=user.username)
        reminder = Reminder(creator=user, title=user.username)
        reminder.save()

        view_url = f"{reminder.get_absolute_url()}done/"

        self.validate_response(
            client=client,
            method="post",
            url=view_url,
            expected_view_name="reminders:reminder",
            expected_view=ReminderView,
            expected_redirect_chain=[(reminder.get_absolute_url(), 301)],
            expected_template="reminders/reminder.html",
            content_filters=(lambda _c: b"error" not in _c, ),
        )

        reminder.refresh_from_db()

        self.assertEqual(reminder.status, ReminderStatus.DONE.name)