Skip to content

Commit 0f9d198

Browse files
authored
Better objects for answer and question (#2654)
1 parent a34fd25 commit 0f9d198

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

src/apps/homework/api/serializers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,10 +204,11 @@ class Meta:
204204
class AnswerSimpleSerializer(serializers.ModelSerializer):
205205
url = serializers.URLField(source="get_absolute_url")
206206
author = UserSafeSerializer()
207+
question = QuestionSerializer()
207208

208209
class Meta:
209210
model = Answer
210-
fields = ("url", "author")
211+
fields = ("slug", "url", "author", "question")
211212

212213

213214
class AnswerCrossCheckSerializer(serializers.ModelSerializer):

src/apps/homework/models/answer_cross_check.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
class AnswerCrossCheckQuerySet(models.QuerySet):
1313
def for_viewset(self) -> "AnswerCrossCheckQuerySet":
14-
return self.select_related("checker", "answer")
14+
return self.select_related("checker", "answer", "answer__question")
1515

1616
def count_for_question(self, question: "Question") -> dict[str, int]:
1717
return self.filter(answer__question=question).aggregate(

src/apps/homework/tests/homework/api/tests_crosschecks_api.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,17 @@ def test_base_response(api, question, crosscheck):
3131
got = api.get(f"/api/v2/homework/crosschecks/?question={question.slug}")[0]
3232

3333
assert got["answer"]["url"] == crosscheck.answer.get_absolute_url()
34+
assert got["answer"]["slug"] == str(crosscheck.answer.slug)
35+
3436
assert got["answer"]["author"]["uuid"] == str(crosscheck.answer.author.uuid)
3537
assert got["answer"]["author"]["first_name"] == crosscheck.answer.author.first_name
3638
assert got["answer"]["author"]["last_name"] == crosscheck.answer.author.last_name
3739
assert got["answer"]["author"]["avatar"] is None
3840

41+
assert got["answer"]["question"]["slug"] == str(question.slug)
42+
assert got["answer"]["question"]["name"] == question.name
43+
assert "text" in got["answer"]["question"]
44+
3945

4046
@pytest.mark.parametrize(("checked", "is_checked"), [(None, False), (datetime(2032, 1, 1, tzinfo=timezone.utc), True)])
4147
def test_is_checked(api, question, crosscheck, checked, is_checked):

0 commit comments

Comments
 (0)