From 10cab78b6fd3a22b413391339229b05e1826dbdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20K=C3=A1n=C4=9B?= Date: Sun, 21 Mar 2021 16:28:07 +0100 Subject: [PATCH] Add tests for Model.SaveAnswer --- pkg/model/model_test.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pkg/model/model_test.go b/pkg/model/model_test.go index d149c23..5e68207 100644 --- a/pkg/model/model_test.go +++ b/pkg/model/model_test.go @@ -132,3 +132,37 @@ func TestModel_NextQuestion_noNextQuestion(t *testing.T) { t.Fatalf("Unexpected error type after switching to next question from the last one: %v", err) } } + +func TestModel_SaveAnswer(t *testing.T) { + m := newTestModelWithData(t) + c := context.Background() + answerId := uuid.MustParse("5155b997-eb2c-4cd0-a067-2bb01379730f") + + if _, err := m.SaveAnswer(uuid.MustParse("321f3bb4-f789-49db-ad14-45299a4725a0"), answerId, time.Unix(1613388000, 0), c); err != nil { + t.Fatalf("Saving answer failed: %v", err) + } +} + +func TestModel_SaveAnswer_again(t *testing.T) { + m := newTestModelWithData(t) + c := context.Background() + answerId := uuid.MustParse("5155b997-eb2c-4cd0-a067-2bb01379730f") + + if _, err := m.SaveAnswer(uuid.MustParse("321f3bb4-f789-49db-ad14-45299a4725a0"), answerId, time.Unix(1613388000, 0), c); err != nil { + t.Fatalf("Saving answer failed: %v", err) + } + + // same answer + if _, err := m.SaveAnswer(uuid.MustParse("321f3bb4-f789-49db-ad14-45299a4725a0"), answerId, time.Unix(1613388000, 500), c); err == nil { + t.Fatalf("Saving answer again succeeded") + } else if !errors.Is(err, AlreadyAnswered) { + t.Fatalf("Saving answer again failed with unexpected error type: %v", err) + } + + // different answer + if _, err := m.SaveAnswer(uuid.MustParse("321f3bb4-f789-49db-ad14-45299a4725a0"), uuid.MustParse("b88b7f4e-1b17-49ea-8e90-cf42ae4e0f09"), time.Unix(1613388000, 500), c); err == nil { + t.Fatalf("Saving answer again succeeded") + } else if !errors.Is(err, AlreadyAnswered) { + t.Fatalf("Saving answer again failed with unexpected error type: %v", err) + } +}