123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- package memory
- import (
- "fmt"
- "reflect"
- "testing"
- "git.andreafazzi.eu/andrea/probo/client"
- "git.andreafazzi.eu/andrea/probo/hasher/sha256"
- "github.com/remogatto/prettytest"
- )
- type testSuite struct {
- prettytest.Suite
- }
- func TestRunner(t *testing.T) {
- prettytest.Run(
- t,
- new(testSuite),
- new(collectionTestSuite),
- )
- }
- func (t *testSuite) TestReadQuizByHash() {
- store := NewMemoryProboCollectorStore(
- sha256.NewDefault256Hasher(sha256.DefaultSHA256HashingFn),
- )
- quiz, _ := store.CreateQuiz(
- &client.CreateUpdateQuizRequest{
- Quiz: &client.Quiz{
- Question: &client.Question{Text: "Newly created question text."},
- Answers: []*client.Answer{
- {Text: "Answer 1", Correct: true},
- {Text: "Answer 2", Correct: false},
- {Text: "Answer 3", Correct: false},
- {Text: "Answer 4", Correct: false},
- },
- },
- })
- quizFromMemory, err := store.ReadQuizByHash(quiz.Hash)
- t.Nil(err, "Quiz should be found in the store")
- if !t.Failed() {
- t.True(reflect.DeepEqual(quizFromMemory, quiz), "Quiz should be equal")
- }
- }
- func (t *testSuite) TestParseTextForTags() {
- store := NewMemoryProboCollectorStore(
- sha256.NewDefault256Hasher(sha256.DefaultSHA256HashingFn),
- )
- quiz, _ := store.CreateQuiz(
- &client.CreateUpdateQuizRequest{
- Quiz: &client.Quiz{
- Question: &client.Question{Text: "Newly created question text with #tag1."},
- Answers: []*client.Answer{
- {Text: "Answer 1", Correct: true},
- {Text: "Answer 2 with #tag2", Correct: false},
- {Text: "Answer 3", Correct: false},
- {Text: "Answer 4", Correct: false},
- },
- },
- })
- quizFromMemory, err := store.ReadQuizByHash(quiz.Hash)
- t.Nil(err, "Quiz should be found in the store")
- if !t.Failed() {
- t.True(len(quizFromMemory.Tags) == 2, "Two tags should be present.")
- t.Equal("#tag1", quizFromMemory.Tags[0].Name)
- t.Equal("#tag2", quizFromMemory.Tags[1].Name)
- }
- }
- func (t *testSuite) TestUpdateQuiz() {
- store := NewMemoryProboCollectorStore(
- sha256.NewDefault256Hasher(sha256.DefaultSHA256HashingFn),
- )
- quiz, _ := store.CreateQuiz(
- &client.CreateUpdateQuizRequest{
- Quiz: &client.Quiz{
- Question: &client.Question{Text: "Newly created question text."},
- Answers: []*client.Answer{
- {Text: "Answer 1", Correct: true},
- {Text: "Answer 2", Correct: false},
- {Text: "Answer 3", Correct: false},
- {Text: "Answer 4", Correct: false},
- },
- },
- })
- createdQuizHash := quiz.Hash
- updatedQuiz, updated, err := store.UpdateQuiz(
- &client.CreateUpdateQuizRequest{
- Quiz: &client.Quiz{
- Question: &client.Question{Text: "Updated question text."},
- Answers: []*client.Answer{
- {Text: "Answer 1", Correct: true},
- {Text: "Updated Answer 2", Correct: false},
- {Text: "Answer 3", Correct: false},
- {Text: "Answer 4", Correct: false},
- },
- },
- }, quiz.ID)
- t.Nil(err, fmt.Sprintf("The update returned an error: %v", err))
- if !t.Failed() {
- t.True(updated)
- t.True(createdQuizHash != updatedQuiz.Hash, "The two hashes should not be equal.")
- t.Equal(4, len(updatedQuiz.Answers))
- t.Equal("Updated question text.", updatedQuiz.Question.Text)
- t.Equal("Updated Answer 2", updatedQuiz.Answers[1].Text)
- }
- }
- func (t *testSuite) TestDeleteQuiz() {
- store := NewMemoryProboCollectorStore(
- sha256.NewDefault256Hasher(sha256.DefaultSHA256HashingFn),
- )
- quiz, _ := store.CreateQuiz(
- &client.CreateUpdateQuizRequest{
- Quiz: &client.Quiz{
- Question: &client.Question{Text: "This test should be removed."},
- Answers: []*client.Answer{
- {Text: "Answer 1", Correct: true},
- {Text: "Answer 2", Correct: false},
- {Text: "Answer 3", Correct: false},
- {Text: "Answer 4", Correct: false},
- },
- },
- })
- deletedQuiz, err := store.DeleteQuiz(&client.DeleteQuizRequest{ID: quiz.ID})
- t.Equal(quiz.ID, deletedQuiz.ID, "Returned deleted quiz ID should be equal to the request")
- t.Nil(err, fmt.Sprintf("The update returned an error: %v", err))
- _, err = store.ReadQuizByHash(deletedQuiz.Hash)
- t.True(err != nil, "Reading a non existent quiz should return an error")
- }
|