db_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package db
  2. import (
  3. "os"
  4. "testing"
  5. "git.andreafazzi.eu/andrea/probo/client"
  6. "git.andreafazzi.eu/andrea/probo/hasher/sha256"
  7. "git.andreafazzi.eu/andrea/probo/store/memory"
  8. "github.com/remogatto/prettytest"
  9. )
  10. type dbTestSuite struct {
  11. prettytest.Suite
  12. }
  13. func TestRunner(t *testing.T) {
  14. prettytest.Run(
  15. t,
  16. new(dbTestSuite),
  17. )
  18. }
  19. func (t *dbTestSuite) TestCreateExam() {
  20. memStore := memory.NewMemoryProboCollectorStore(
  21. sha256.NewDefault256Hasher(sha256.DefaultSHA256HashingFn),
  22. )
  23. memStore.CreateQuiz(
  24. &client.CreateUpdateQuizRequest{
  25. Quiz: &client.Quiz{
  26. Question: &client.Question{Text: "Newly created question text with #tag1."},
  27. Answers: []*client.Answer{
  28. {Text: "Answer 1", Correct: true},
  29. {Text: "Answer 2", Correct: false},
  30. {Text: "Answer 3", Correct: false},
  31. {Text: "Answer 4", Correct: false},
  32. },
  33. },
  34. })
  35. store, err := NewDBProboCollectorStore("testdata/test.sqlite", memStore)
  36. defer os.Remove("testdata/test.sqlite")
  37. t.Nil(err)
  38. if !t.Failed() {
  39. collection, err := memStore.CreateCollection(&client.CreateUpdateCollectionRequest{
  40. Collection: &client.Collection{
  41. Name: "Collection name",
  42. Query: "#tag1",
  43. },
  44. })
  45. t.Nil(err)
  46. if !t.Failed() {
  47. exam, err := store.CreateExam(&client.CreateUpdateExamRequest{
  48. Exam: &client.Exam{
  49. Name: "Exam",
  50. Description: "Exam description",
  51. CollectionID: collection.ID,
  52. },
  53. })
  54. t.Nil(err)
  55. if !t.Failed() {
  56. t.Not(t.Nil(exam))
  57. examFromDb, err := store.ReadExamByID(&client.ReadExamByIDRequest{ID: exam.ID})
  58. t.Nil(err)
  59. if !t.Failed() {
  60. t.Equal(examFromDb.ID, exam.ID)
  61. }
  62. }
  63. }
  64. }
  65. }