diff --git a/app/controller/post_resources.py b/app/controller/post_resources.py index 35bf8b14..9d1aa4df 100644 --- a/app/controller/post_resources.py +++ b/app/controller/post_resources.py @@ -22,6 +22,16 @@ def post(self): except ValidationError as err: return make_response(jsonify(err.messages), 400) + @jwt_required() + def get(self): + user = current_user + if not user.is_professor(): + ps = post_schema.PostSchema( + many=True, context={'reg_student': user.reg}) + else: + ps = post_schema.PostSchema(many=True) + return make_response(ps.jsonify(user.posts), 200) + class PostAgreesList(Resource): @student_required() diff --git a/app/schemas/post_schema.py b/app/schemas/post_schema.py index 1e1cf2c0..9c878437 100644 --- a/app/schemas/post_schema.py +++ b/app/schemas/post_schema.py @@ -7,9 +7,9 @@ class Meta: model = post.Post id_post = fields.Integer(required=True, validate=validate.Range(min=0)) - reg_student = fields.Integer(required=True, validate=validate.Range(min=0)) + reg_student = fields.Integer(required=True, validate=validate.Range(min=0), load_only=True) id_professor = fields.Integer(required=True, validate=validate.Range(min=0)) - discipline_code = fields.String(required=True, validate=validate.Length(max=80)) + discipline_code = fields.String(required=True, validate=validate.Length(max=80), load_only=True) content = fields.String(required=True, validate=validate.Length(min=1, max=480)) rating = fields.Float(required=True, validate=validate.Range(min=0, max=10)) is_anonymous = fields.Boolean(required=True) diff --git a/app/services/post_services.py b/app/services/post_services.py index 168f9c4d..9f14ed50 100644 --- a/app/services/post_services.py +++ b/app/services/post_services.py @@ -74,4 +74,6 @@ def undisagree_post(post_db, student_db): def disagree_post(post_db, student_db): post_db.disagrees.append(student_db) db.session.commit() - return post_db, 200 + + return post_db, 200 + diff --git a/app/services/student_services.py b/app/services/student_services.py index 47f855b8..0b940c76 100644 --- a/app/services/student_services.py +++ b/app/services/student_services.py @@ -26,12 +26,6 @@ def __validate_student_relationship(student): return None, 200 - -def get_student_reg(reg_student): - student = Student.query.filter_by(reg_student=reg_student).first() - return student - - def delete_student(student_db): Student.delete(student_db) return {'message': "Student successfully deleted!"}, 204 diff --git a/tests/tests_post.py b/tests/tests_post.py index 34e4b8f9..21af32c1 100644 --- a/tests/tests_post.py +++ b/tests/tests_post.py @@ -18,6 +18,13 @@ def valid_post_id(self): "id_post": 1, } +def get_posts(self, headers=None): + if headers is None: + headers = self.create_student_token() + + return self.client.get(url_for('restapi.postlist'), headers = headers) + + def register_post(self, post=None, headers=None): if headers is None: headers = self.create_student_token() @@ -109,6 +116,25 @@ def test_api_must_validate_discipline_relationship_not_found(self): self.assertEqual(response.status_code, 404) self.assertEqual(response.json['message'], "Discipline not found!") +class TestGetPostList(TestFlaskBase): + + def test_must_get_student_post_found_empty(self): + response = get_posts(self) + status_code_expected = 200 + + self.assertEqual(response.status_code, status_code_expected) + self.assertEqual(response.json, []) + + def test_must_get_student_post_found(self): + register_post(self) + response = get_posts(self) + status_code_expected = 200 + self.assertEqual(response.status_code, status_code_expected) + + + + + class TestPostAgree(TestFlaskBase): def test_api_must_agree_post(self):