コード例 #1
0
    def post(self):
        try:
            ids = request.get_json()['articleIds']
        except Exception:
            ids = None

        if ids is None or not ids:
            return {'message': 'No articleIds have been provided.'}, 422

        pipeline = [{
            '$group': {
                '_id': '$article_id',
                'rating': {
                    '$sum': 1
                }
            }
        }, {
            '$project': {
                '_id': 0,
                'articleId': '$_id',
                'rating': 1,
            }
        }, {
            '$sort': {
                'articleId': 1
            }
        }]
        rating = Rating.objects(article_id__in=ids).aggregate(pipeline)

        return list(rating), 200
コード例 #2
0
    def test_create_rating(self):
        user_id = self.token_subject
        article_id = 1

        Rating(user_id=user_id, article_id=article_id).save()

        self.assertIsNotNone(
            Rating.objects.get(user_id=user_id, article_id=article_id))
コード例 #3
0
    def test_create_rating(self):
        user_id = '854c9a9b-4a4a-410f-867c-9985c17878d8'
        article_id = 1

        rating = Rating(user_id=user_id, article_id=article_id)

        self.assertEqual(str(rating.user_id), user_id)
        self.assertEqual(rating.article_id, article_id)
コード例 #4
0
    def test_get_user_article_rating(self):
        with patch('src.middleware.get_jwk.get_jwk') as get_jwk:
            get_jwk.return_value = json.dumps(self.jwk)

            token = 'Bearer {}'.format(self.token)
            article_id = 1

            user_id = self.token_subject
            other_user_id = '83998496-2638-436e-9dc0-c04b5de5a2ce'

            Rating(user_id=user_id, article_id=article_id).save()
            Rating(user_id=other_user_id, article_id=article_id).save()

            request = self.app.get('/ratings/{}/user'.format(article_id),
                                   headers={'Authorization': token})

            self.assertEqual(json.dumps({'rating': 1}),
                             json.dumps(request.json))
            self.assertEqual(200, request.status_code)
コード例 #5
0
    def test_get_rating(self):
        article_id = 1
        user_id = self.token_subject

        Rating(user_id=user_id, article_id=article_id).save()

        request = self.app.get('/ratings/{}'.format(article_id))

        self.assertEqual(json.dumps({'rating': 1}), json.dumps(request.json))
        self.assertEqual(200, request.status_code)
コード例 #6
0
    def test_get_article_ratings_by_ids(self):
        with patch('src.middleware.get_jwk.get_jwk') as get_jwk:
            get_jwk.return_value = json.dumps(self.jwk)

            user_id = self.token_subject
            other_user_id = '83998496-2638-436e-9dc0-c04b5de5a2ce'

            Rating(user_id=user_id, article_id=1).save()
            Rating(user_id=other_user_id, article_id=1).save()
            Rating(user_id=user_id, article_id=2).save()
            Rating(user_id=other_user_id, article_id=3).save()
            Rating(user_id=other_user_id, article_id=4).save()

            payload = json.dumps({'articleIds': [1, 2]})
            request = self.app.post(
                '/ratings/users', headers=self.headers, data=payload)

            self.assertDictEqual(
                {'rating': 2, 'articleId': 1}, request.json[0])
            self.assertDictEqual(
                {'rating': 1, 'articleId': 2}, request.json[1])
            self.assertEqual(200, request.status_code)
コード例 #7
0
    def post(self):
        user_id = g.current_user_id

        try:
            article_id = request.get_json()['articleId']
        except Exception:
            article_id = None

        try:
            RatingSchema().load({'articleId': article_id})
        except ValidationError as e:
            return e.messages, 422

        count = Rating.objects(user_id=user_id, article_id=article_id).count()
        if count == 50:
            return {
                'message':
                'You have given this article the maximum rating possible'
            }, 403

        Rating(user_id=user_id, article_id=article_id).save()

        return {'rated': True}, 201
コード例 #8
0
 def get(self, id):
     user_id = g.current_user_id
     rating = Rating.objects(user_id=user_id, article_id=id).count()
     return {'rating': int(rating)}, 200
コード例 #9
0
    def get(self, id):
        rating = Rating.objects(article_id=id).count()

        return {'rating': int(rating)}, 200