main
1package db
2
3import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 "github.com/stretchr/testify/require"
8 "gitlab.com/mokhax/sparkled/pkg/domain"
9)
10
11func TestRepository(t *testing.T) {
12 storage := NewRepository()
13
14 t.Run("Save", func(t *testing.T) {
15 t.Run("an invalid Sparkle", func(t *testing.T) {
16 err := storage.Save(&domain.Sparkle{Reason: "because"})
17
18 counter := 0
19 storage.Each(func(item *domain.Sparkle) {
20 counter++
21 })
22
23 assert.NotNil(t, err)
24 assert.Equal(t, 0, counter)
25 })
26
27 t.Run("a valid Sparkle", func(t *testing.T) {
28 sparkle := &domain.Sparkle{Sparklee: "@tanuki", Reason: "because"}
29 require.NoError(t, storage.Save(sparkle))
30
31 sparkles := []*domain.Sparkle{}
32 storage.Each(func(item *domain.Sparkle) {
33 sparkles = append(sparkles, item)
34 })
35 assert.Equal(t, 1, len(sparkles))
36 assert.NotEmpty(t, sparkles[0].ID)
37 assert.Equal(t, "@tanuki", sparkles[0].Sparklee)
38 assert.Equal(t, "because", sparkles[0].Reason)
39 })
40 })
41}