Example #1
0
    def test_coordinates_are_optionnal_for_grab(self):
        move = self.blend_move(type=MOVE_TYPE_DIPPED)
        payload = MovePayload(MOVE_TYPE_GRABBED)\
            .set_id(move.id)

        payload.patch(move.id, user=self.admin)
        self.assertEqual(move.type, MOVE_TYPE_GRABBED)

        payload.set_coordinates()\
            .patch(move.id, user=self.admin)
        self.assertEqual(move.type, MOVE_TYPE_GRABBED)
Example #2
0
    def test_from_non_authenticated_move_type_need_tracking_code(self):
        move = self.blend_move(type=MOVE_TYPE_COMMENT)
        payload = MovePayload(MOVE_TYPE_GRABBED)\
            .set_id(move.id)

        payload.patch(move.id, user=self.admin, code=422)\
            .assertRaiseJsonApiError('/data/attributes/tracking-code')

        payload.set_tracking_code(move.geokret.tracking_code)\
            .patch(move.id, user=self.admin)
        self.assertEqual(move.type, MOVE_TYPE_GRABBED)
Example #3
0
    def test_author_change_restrictions(self):
        move = self.blend_move(type=MOVE_TYPE_GRABBED, author=self.user_1)
        payload = MovePayload(MOVE_TYPE_GRABBED)\
            .set_id(move.id)\
            .set_author(self.user_2.id)

        payload.patch(move.id, user=self.user_1, code=403)\
            .assertRaiseJsonApiError('/data/relationships/author')

        payload.patch(move.id, user=self.admin)
        self.assertEqual(move.author.id, self.user_2.id)
Example #4
0
    def test_must_include_coordinates_if_missing_from_last_move(self):
        move = self.blend_move(type=MOVE_TYPE_GRABBED)
        payload = MovePayload(MOVE_TYPE_DIPPED)\
            .set_id(move.id)

        payload.patch(move.id, user=self.admin, code=422)\
            .assertRaiseJsonApiError('/data/attributes/latitude')\
            .assertRaiseJsonApiError('/data/attributes/longitude')

        payload.set_coordinates()\
            .patch(move.id, user=self.admin)
        self.assertEqual(move.type, MOVE_TYPE_DIPPED)
Example #5
0
    def test_geokret_relation_can_be_changed_only_by_admin(self):
        geokret = self.blend_geokret()
        move = self.blend_move(type=MOVE_TYPE_GRABBED, author=self.user_1)
        payload = MovePayload(MOVE_TYPE_GRABBED)\
            .set_id(move.id)\
            .set_geokret(geokret.id)

        payload.patch(move.id, user=self.user_1, code=403)\
            .assertRaiseJsonApiError('/data/relationships/geokret')

        payload.patch(move.id, user=self.admin)
        self.assertEqual(move.geokret.id, geokret.id)
Example #6
0
    def test_convert_to_dropped(self):
        move = self.blend_move(type=MOVE_TYPE_GRABBED)
        payload = MovePayload(MOVE_TYPE_DROPPED)\
            .set_id(move.id)

        payload.patch(move.id, user=self.admin, code=422)\
            .assertRaiseJsonApiError('/data/attributes/latitude')\
            .assertRaiseJsonApiError('/data/attributes/longitude')

        payload.set_coordinates()\
            .patch(move.id, user=self.admin)
        self.assertEqual(move.type, MOVE_TYPE_DROPPED)
        self.assertEqual(float(move.latitude), 43.78)
        self.assertEqual(float(move.longitude), 7.06)
Example #7
0
    def test_move_datetime_cannot_be_before_geokret_birth(self):
        geokret = self.blend_geokret(created_on_datetime='2018-12-28T15:25:56')
        move = self.blend_move(type=MOVE_TYPE_GRABBED,
                               geokret=geokret,
                               author=self.user_1)

        payload = MovePayload(MOVE_TYPE_GRABBED)\
            .set_id(move.id)\
            .set_moved_on_datetime('2018-12-28T14:00:00')

        payload.patch(move.id, user=self.user_1, code=422)\
            .assertRaiseJsonApiError('/data/attributes/moved-on-datetime')

        payload.set_moved_on_datetime(geokret.created_on_datetime)\
            .patch(move.id, user=self.user_1)
Example #8
0
    def test_convert_to_grabbed(self):
        move = self.blend_move(type=MOVE_TYPE_DROPPED,
                               latitude=43.78,
                               longitude=7.06)
        payload = MovePayload(MOVE_TYPE_GRABBED)\
            .set_id(move.id)

        payload.patch(move.id, user=self.admin)
        self.assertEqual(move.type, MOVE_TYPE_GRABBED)
        self.assertEqual(float(move.latitude), 43.78)
        self.assertEqual(float(move.longitude), 7.06)

        payload.set_coordinates(None, None)\
            .patch(move.id, user=self.admin)
        self.assertEqual(move.type, MOVE_TYPE_GRABBED)
        self.assertIsNone(move.latitude)
        self.assertIsNone(move.longitude)
Example #9
0
    def test_move_datetime_same_as_another_move(self):
        geokret = self.blend_geokret(created_on_datetime='2018-12-28T16:26:16')
        move_1 = self.blend_move(type=MOVE_TYPE_GRABBED,
                                 geokret=geokret,
                                 author=self.user_1,
                                 moved_on_datetime='2018-12-28T16:26:49')
        move_2 = self.blend_move(type=MOVE_TYPE_GRABBED,
                                 geokret=geokret,
                                 author=self.user_1,
                                 moved_on_datetime='2018-12-28T16:26:58')

        payload = MovePayload(MOVE_TYPE_DIPPED)\
            .set_id(move_2.id)\
            .set_coordinates()\
            .set_moved_on_datetime(move_2.moved_on_datetime)
        payload.patch(move_2.id, user=self.user_1)

        payload.set_moved_on_datetime(move_1.moved_on_datetime)\
            .patch(move_2.id, user=self.user_1, code=422)\
            .assertRaiseJsonApiError('/data/attributes/moved-on-datetime')
Example #10
0
    def test_convert_to_seen(self):
        move = self.blend_move(type=MOVE_TYPE_DROPPED,
                               latitude=43.78,
                               longitude=7.06)
        payload = MovePayload(MOVE_TYPE_SEEN)\
            .set_id(move.id)

        payload.patch(move.id, user=self.admin)
        self.assertEqual(move.type, MOVE_TYPE_SEEN)
        self.assertEqual(float(move.latitude), 43.78)
        self.assertEqual(float(move.longitude), 7.06)

        payload._set_attribute('latitude', 43.79)\
            .patch(move.id, user=self.admin)
        self.assertEqual(move.type, MOVE_TYPE_SEEN)
        self.assertEqual(float(move.latitude), 43.79)
        self.assertEqual(float(move.longitude), 7.06)

        payload.set_coordinates(None, None)\
            .patch(move.id, user=self.admin, code=422)\
            .assertRaiseJsonApiError('/data/attributes/latitude')\
            .assertRaiseJsonApiError('/data/attributes/longitude')