示例#1
0
 def test_relationships_move_can_be_overrided_by_comment_author(
         self, username, expected):
     user = getattr(self, username) if username else None
     move_comment = self.blend_move_comment(author=self.user_1)
     move2 = self.blend_move()
     response = MoveCommentPayload()\
         .set_move(move2)\
         .patch(move_comment.id, user=user, code=expected)
     if expected == 200:
         response.assertHasRelationshipMoveData(move2)
示例#2
0
    def test_filter_by_move(self):
        move_comment = self.blend_move_comment()
        self.blend_move_comment(count=3)

        response = MoveCommentPayload()\
            .get_collection(args={'filter': '[{"name":"move__id","op":"has","val":"%s"}]' % move_comment.move_id})\
            .assertCount(1)
        response.data[0].assertHasPublicAttributes(move_comment)

        response = MoveCommentPayload()\
            .get_collection(args={'filter': '[{"name":"move","op":"has","val":{"name":"id","op":"eq","val":"%s"}}]' % move_comment.move_id})\
            .assertCount(1)
        response.data[0].assertHasPublicAttributes(move_comment)
示例#3
0
    def test_missing_cannot_be_posted_on_old_moves(self):
        geokret = self.blend_geokret(created_on_datetime='2019-01-12T22:53:05')
        move1 = self.blend_move(type=MOVE_TYPE_DROPPED,
                                geokret=geokret,
                                moved_on_datetime='2019-01-12T22:53:21')
        move2 = self.blend_move(type=MOVE_TYPE_DROPPED,
                                geokret=geokret,
                                moved_on_datetime='2019-01-12T22:53:43')
        move_comment = self.blend_move_comment(move=move2,
                                               type=MOVE_COMMENT_TYPE_MISSING)
        payload = MoveCommentPayload()
        payload.set_move(move1)\
            .set_type(MOVE_COMMENT_TYPE_MISSING)\
            .patch(move_comment.id, user=self.admin, code=422)\
            .assertRaiseJsonApiError('/data/relationships/move')

        payload.set_move(move1)\
            .set_type(MOVE_COMMENT_TYPE_COMMENT)\
            .patch(move_comment.id, user=self.admin)\
            .assertHasRelationshipMoveData(move1)

        move3 = self.blend_move(type=MOVE_TYPE_DROPPED,
                                geokret=geokret,
                                moved_on_datetime='2019-01-12T23:07:03')
        payload.set_move(move3)\
            .set_type(MOVE_COMMENT_TYPE_MISSING)\
            .patch(move_comment.id, user=self.admin)\
            .assertHasRelationshipMoveData(move3)
 def test_geokret_missing_comment_not_accepted_for_some_move_type(
         self, move_type, expected):
     move = self.blend_move(type=move_type)
     result = MoveCommentPayload().blend()\
         .set_move(move)\
         .set_type(MOVE_COMMENT_TYPE_MISSING)\
         .post(user=self.user_1, code=expected)
     if expected == 422:
         result.assertRaiseJsonApiError('/data/relationships/move/data')
         self.assertEqual(len(move.comments), 0)
         self.assertFalse(move.geokret.missing)
     else:
         self.assertEqual(len(move.comments), 1)
         self.assertTrue(move.geokret.missing)
 def test_geokret_id_stored_in_database_for_compatibility_with_legacy(self):
     move = self.blend_move()
     payload = MoveCommentPayload().blend()\
         .set_move(move)\
         .post(user=self.user_1)
     move_comment = safe_query(self, MoveComment, 'id', payload.id, 'id')
     self.assertIsNotNone(move_comment.geokret_id)
     self.assertEqual(move_comment.geokret_id, move.geokret.id)
 def test_geokret_missing_status_computed(self):
     move = self.blend_move(type=MOVE_TYPE_DROPPED)
     move_comment = self.blend_move_comment(move=move,
                                            type=MOVE_COMMENT_TYPE_MISSING,
                                            author=self.user_1)
     self.assertTrue(move.geokret.missing)
     MoveCommentPayload().delete(move_comment.id, user=self.user_1)
     self.assertFalse(move.geokret.missing)
示例#7
0
 def test_geokret_owner_can_edit_comments(self, username, expected):
     user = getattr(self, username) if username else None
     geokret = self.blend_geokret(owner=self.user_1)
     move = self.blend_move(geokret=geokret)
     move_comment = self.blend_move_comment(move=move)
     MoveCommentPayload()\
         .set_comment("Some other comment")\
         .patch(move_comment.id, user=user, code=expected)
示例#8
0
    def test_missing_can_be_reported_multiple_times(self, move_type):
        geokret = self.blend_geokret(created_on_datetime='2019-01-12T23:33:08')
        move = self.blend_move(type=move_type,
                               geokret=geokret,
                               moved_on_datetime='2019-01-12T23:33:20')

        payload = MoveCommentPayload().blend()\
            .set_move(move)\
            .set_type(MOVE_COMMENT_TYPE_COMMENT)
        comment1 = payload.post(user=self.user_1)
        comment2 = payload.post(user=self.user_1)
        comment3 = payload.post(user=self.user_1)

        payload = MoveCommentPayload().set_type(MOVE_COMMENT_TYPE_MISSING)
        payload.patch(comment1.id, user=self.user_1)
        payload.patch(comment2.id, user=self.user_1)
        payload.patch(comment3.id, user=self.user_1)
 def test_as_(self, username, expected):
     user = getattr(self, username) if username else None
     move = self.blend_move()
     MoveCommentPayload()\
         .set_type(MOVE_COMMENT_TYPE_COMMENT)\
         .set_move(move)\
         .set_comment("Some comment")\
         .post(user=user, code=expected)
 def test_geokret_missing_status_computed(self):
     move = self.blend_move(type=MOVE_TYPE_DROPPED)
     self.assertFalse(move.geokret.missing)
     MoveCommentPayload()\
         .set_comment("Comment")\
         .set_move(move)\
         .set_type(MOVE_COMMENT_TYPE_MISSING)\
         .post(user=self.user_1)
     self.assertTrue(move.geokret.missing)
示例#11
0
 def test_has_public_attributes_as_(self, username):
     user = getattr(self, username) if username else None
     move_comments = self.blend_move_comment(count=3)
     response = MoveCommentPayload()\
         .get_collection(user=user)\
         .assertCount(3)
     response.data[0].assertHasPublicAttributes(move_comments[0])
     response.data[1].assertHasPublicAttributes(move_comments[1])
     response.data[2].assertHasPublicAttributes(move_comments[2])
示例#12
0
    def test_order_by(self):
        move_comments = self.blend_move_comment(count=3)

        response = MoveCommentPayload()\
            .get_collection(args={'sort': '-id'})\
            .assertCount(3)
        response.data[0].assertHasId(move_comments[2].id)
        response.data[1].assertHasId(move_comments[1].id)
        response.data[2].assertHasId(move_comments[0].id)
示例#13
0
 def test_field_type_from_predefined_list(self):
     move = self.blend_move(type=MOVE_TYPE_DROPPED)
     move_comment = self.blend_move_comment(move=move, author=self.user_1)
     payload = MoveCommentPayload()
     payload.set_type(MOVE_COMMENT_TYPE_COMMENT)\
         .patch(move_comment.id, user=self.user_1)
     payload.set_type(MOVE_COMMENT_TYPE_MISSING)\
         .patch(move_comment.id, user=self.user_1)
     payload.set_type(666)\
         .patch(move_comment.id, user=self.user_1, code=422)\
         .assertRaiseJsonApiError('/data/attributes/type')
 def test_option_move_author_can_moderate_move_comments(
         self, enable, expected):
     current_app.config[
         'ALLOW_MOVE_AUTHOR_TO_MODERATE_MOVE_COMMENTS'] = enable
     move = self.blend_move(author=self.user_1)
     move_comment = self.blend_move_comment(move=move)
     MoveCommentPayload()\
         .delete(move_comment.id, user=self.user_1, code=expected)
     current_app.config[
         'ALLOW_MOVE_AUTHOR_TO_MODERATE_MOVE_COMMENTS'] = True
 def test_option_geokret_owner_can_delete_comments(self, enable, expected):
     current_app.config[
         'ALLOW_GEOKRET_OWNER_TO_MODERATE_MOVE_COMMENTS'] = enable
     geokret = self.blend_geokret(owner=self.user_1)
     move = self.blend_move(geokret=geokret)
     move_comment = self.blend_move_comment(move=move)
     MoveCommentPayload()\
         .delete(move_comment.id, user=self.user_1, code=expected)
     current_app.config[
         'ALLOW_GEOKRET_OWNER_TO_MODERATE_MOVE_COMMENTS'] = True
示例#16
0
    def test_pagination(self):
        move_comments = self.blend_move_comment(count=3)

        response = MoveCommentPayload()\
            .get_collection(args={'page[size]': '1'})\
            .assertCount(3)\
            .assertHasPaginationLinks()
        self.assertEqual(len(response['data']), 1)

        response.data[0].assertHasId(move_comments[0].id)
示例#17
0
    def test_filter_by_author(self):
        user = self.blend_user(name="someone")
        move_comment = self.blend_move_comment(author=user)
        self.blend_move_comment(count=3)

        response = MoveCommentPayload()\
            .get_collection(args={'filter': '[{"name":"author__name","op":"has","val":"%s"}]' % user.name})\
            .assertCount(1)
        response.data[0].assertHasPublicAttributes(move_comment)

        self.blend_move_comment(count=3)
        response = MoveCommentPayload()\
            .get_collection(args={'filter': '[{"name":"author__id","op":"has","val":"%s"}]' % user.id})\
            .assertCount(1)
        response.data[0].assertHasPublicAttributes(move_comment)

        response = MoveCommentPayload()\
            .get_collection(args={'filter': '[{"name":"author","op":"has","val":{"name":"name","op":"like","val":"some%"}}]'})\
            .assertCount(1)
        response.data[0].assertHasPublicAttributes(move_comment)
    def test_missing_can_be_reported_again_on_new_moves(self):
        geokret = self.blend_geokret(created_on_datetime='2019-01-13T18:02:17')
        move1 = self.blend_move(type=MOVE_TYPE_DROPPED,
                                geokret=geokret,
                                moved_on_datetime='2019-01-13T18:02:57')
        MoveCommentPayload().blend()\
            .set_move(move1)\
            .set_type(MOVE_COMMENT_TYPE_MISSING)\
            .post(user=self.user_1)
        self.assertTrue(geokret.missing)

        move2 = self.blend_move(type=MOVE_TYPE_DROPPED,
                                geokret=geokret,
                                moved_on_datetime='2019-01-13T18:03:26')
        self.assertFalse(geokret.missing)
        MoveCommentPayload().blend()\
            .set_move(move2)\
            .set_type(MOVE_COMMENT_TYPE_MISSING)\
            .post(user=self.user_1)
        self.assertTrue(geokret.missing)
 def test_field_type_from_predefined_list(self):
     move = self.blend_move(type=MOVE_TYPE_DROPPED)
     payload = MoveCommentPayload().blend(move=move)
     payload.set_type(MOVE_COMMENT_TYPE_COMMENT).post(user=self.user_1)
     payload.set_type(MOVE_COMMENT_TYPE_MISSING).post(user=self.user_1)
     payload.set_type(666).post(user=self.user_1, code=422)\
         .assertRaiseJsonApiError('/data/attributes/type')
    def test_missing_cannot_be_posted_on_old_moves(self):
        geokret = self.blend_geokret(created_on_datetime='2019-01-12T22:53:05')
        move = self.blend_move(type=MOVE_TYPE_DROPPED,
                               geokret=geokret,
                               moved_on_datetime='2019-01-12T22:53:21')
        self.blend_move(type=MOVE_TYPE_DROPPED,
                        geokret=geokret,
                        moved_on_datetime='2019-01-12T22:53:43')
        payload = MoveCommentPayload().blend()\
            .set_move(move)\
            .set_type(MOVE_COMMENT_TYPE_MISSING)

        payload.post(user=self.user_1, code=422)\
            .assertRaiseJsonApiError('/data/relationships/move')

        payload.set_type(MOVE_COMMENT_TYPE_COMMENT).post(user=self.user_1)
示例#21
0
 def test_geokret_missing_comment_not_accepted_for_some_move_type(
         self, move_type, expected):
     move = self.blend_move(type=move_type)
     move_comment = self.blend_move_comment(move=move,
                                            type=MOVE_COMMENT_TYPE_COMMENT,
                                            author=self.user_1)
     result = MoveCommentPayload()\
         .set_type(MOVE_COMMENT_TYPE_MISSING)\
         .patch(move_comment.id, user=self.user_1, code=expected)
     if expected == 422:
         result.assertRaiseJsonApiError('/data/relationships/move/data')
         self.assertEqual(move_comment.type, MOVE_COMMENT_TYPE_COMMENT)
         self.assertFalse(move.geokret.missing)
     else:
         result.assertHasType(MOVE_COMMENT_TYPE_MISSING)
         self.assertEqual(move_comment.type, MOVE_COMMENT_TYPE_MISSING)
         self.assertTrue(move.geokret.missing)
 def test_field_comment_cannot_be_blank(self, comment):
     MoveCommentPayload().blend()\
         .set_comment(comment)\
         .post(user=self.user_1, code=422)\
         .assertRaiseJsonApiError('/data/attributes/comment')
 def test_relationships_move_is_mandatory(self):
     MoveCommentPayload().blend()\
         ._del_relationships('move')\
         .set_author(self.user_1)\
         .post(user=self.user_1, code=422)\
         .assertRaiseJsonApiError('/data/relationships/move/data')
 def test_relationships_author_cant_be_overrided(self):
     MoveCommentPayload().blend()\
         .set_author(self.user_2)\
         .post(user=self.user_1, code=422)\
         .assertRaiseJsonApiError('/data/relationships/author/data')
 def test_relationships_author_is_optional(self):
     MoveCommentPayload().blend()\
         ._del_relationships('author')\
         .post(user=self.user_1)\
         .assertHasRelationshipAuthorData(self.user_1.id)
示例#26
0
 def test_move_comment_list_via_author(self):
     move_comment = self.blend_move_comment()
     response = MoveCommentPayload(_url_collection="/v1/users/{}/moves-comments".format(move_comment.author.id))\
         .get_collection()\
         .assertCount(1)
     response.data[0].assertHasPublicAttributes(move_comment)
 def test_field_type_is_of_type_comment(self):
     MoveCommentPayload().blend()\
         .post(user=self.user_1)\
         .assertHasType(MOVE_COMMENT_TYPE_COMMENT)
 def test_field_comment_support_html_subset(self, comment, expected):
     MoveCommentPayload().blend()\
         .set_comment(comment)\
         .post(user=self.user_1)\
         .assertHasComment(expected)
 def test_relationships_author_can_be_overrided_by_admin(self):
     MoveCommentPayload().blend()\
         .set_author(self.user_2)\
         .post(user=self.admin)\
         .assertHasRelationshipAuthorData(self.user_2.id)
 def test_field_comment_is_mandatory(self):
     MoveCommentPayload().blend()\
         ._del_attribute('comment')\
         .post(user=self.user_1, code=422)\
         .assertRaiseJsonApiError('/data/attributes/comment')