collection_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package store
  2. import (
  3. "git.andreafazzi.eu/andrea/probo/models"
  4. "github.com/remogatto/prettytest"
  5. )
  6. type collectionTestSuite struct {
  7. prettytest.Suite
  8. }
  9. func (t *collectionTestSuite) TestCreateCollection() {
  10. quizStore := NewQuizStore()
  11. quiz_1, _ := quizStore.Create(
  12. &models.Quiz{
  13. Question: &models.Question{Text: "Question text #tag1 #tag3."},
  14. Answers: []*models.Answer{
  15. {Text: "Answer 1"},
  16. {Text: "Answer 2"},
  17. {Text: "Answer 3"},
  18. {Text: "Answer 4"},
  19. },
  20. })
  21. quizStore.Create(
  22. &models.Quiz{
  23. Question: &models.Question{Text: "Question text #tag2."},
  24. Answers: []*models.Answer{
  25. {Text: "Answer 1"},
  26. {Text: "Answer 2"},
  27. {Text: "Answer 3"},
  28. {Text: "Answer 4"},
  29. },
  30. })
  31. quiz_2, _ := quizStore.Create(
  32. &models.Quiz{
  33. Question: &models.Question{Text: "Question text #tag3."},
  34. Answers: []*models.Answer{
  35. {Text: "Answer 1"},
  36. {Text: "Answer 2"},
  37. {Text: "Answer 3"},
  38. {Text: "Answer 4"},
  39. },
  40. })
  41. collectionStore := NewStore[*models.Collection]()
  42. collection, err := collectionStore.Create(
  43. &models.Collection{
  44. Name: "My Collection",
  45. })
  46. t.Nil(err, "Collection should be created without error")
  47. if !t.Failed() {
  48. quizzes := quizStore.FilterInCollection(collection, &models.Filter{
  49. Tags: []*models.Tag{
  50. {Name: "#tag1"},
  51. {Name: "#tag3"},
  52. },
  53. })
  54. t.Equal(1, len(quizzes))
  55. count := 0
  56. for _, q := range collection.Quizzes {
  57. if quiz_1.ID == q.ID || quiz_2.ID == q.ID {
  58. count++
  59. }
  60. }
  61. t.Equal(1, count)
  62. t.Equal(1, len(collection.Quizzes))
  63. }
  64. }