summaryrefslogtreecommitdiff
path: root/app/db/in_memory_repository_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'app/db/in_memory_repository_test.go')
-rw-r--r--app/db/in_memory_repository_test.go25
1 files changed, 22 insertions, 3 deletions
diff --git a/app/db/in_memory_repository_test.go b/app/db/in_memory_repository_test.go
index cfbab41..8e1e017 100644
--- a/app/db/in_memory_repository_test.go
+++ b/app/db/in_memory_repository_test.go
@@ -7,11 +7,13 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
+ "github.com/xlgmokha/x/pkg/event"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/domain"
)
func TestInMemoryRepository(t *testing.T) {
- storage := NewRepository[*domain.Sparkle]()
+ aggregator := event.New[*domain.Sparkle]()
+ storage := NewRepository[*domain.Sparkle](aggregator)
t.Run("Save", func(t *testing.T) {
t.Run("an invalid Sparkle", func(t *testing.T) {
@@ -30,8 +32,25 @@ func TestInMemoryRepository(t *testing.T) {
assert.Equal(t, "because", sparkles[0].Reason)
})
+ t.Run("publishes an event", func(t *testing.T) {
+ called := false
+ var payload *domain.Sparkle
+
+ aggregator.SubscribeTo("after.create", func(item *domain.Sparkle) {
+ called = true
+ payload = item
+ })
+
+ sparkle := &domain.Sparkle{Sparklee: "@tanuki", Reason: "because"}
+ require.NoError(t, storage.Save(t.Context(), sparkle))
+
+ require.True(t, called)
+ require.NotNil(t, payload)
+ assert.Equal(t, sparkle, payload)
+ })
+
t.Run("prevents race conditions", func(t *testing.T) {
- repository := NewRepository[*domain.Sparkle]()
+ repository := NewRepository[*domain.Sparkle](aggregator)
ctx := context.Background()
numGoroutines := 100
@@ -92,7 +111,7 @@ func TestInMemoryRepository(t *testing.T) {
})
t.Run("All", func(t *testing.T) {
- repository := NewRepository[*domain.Sparkle]()
+ repository := NewRepository[*domain.Sparkle](aggregator)
require.NoError(t, repository.Save(t.Context(), &domain.Sparkle{
Sparklee: "@tanuki",
Reason: "because",