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}