From ae615df8c81ddf7b41f161516ebf9ca91c0e7d26 Mon Sep 17 00:00:00 2001 From: Maxim Lebedev Date: Thu, 28 Jul 2022 23:30:51 +0500 Subject: [PATCH] :test_tube: Added failing test --- internal/client/usecase/client_ucase_test.go | 50 ++++++++++++++++---- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/internal/client/usecase/client_ucase_test.go b/internal/client/usecase/client_ucase_test.go index 386fffb..4684c08 100644 --- a/internal/client/usecase/client_ucase_test.go +++ b/internal/client/usecase/client_ucase_test.go @@ -2,11 +2,13 @@ package usecase_test import ( "context" + "errors" "path" "reflect" "sync" "testing" + "source.toby3d.me/toby3d/auth/internal/client" repository "source.toby3d.me/toby3d/auth/internal/client/repository/memory" "source.toby3d.me/toby3d/auth/internal/client/usecase" "source.toby3d.me/toby3d/auth/internal/domain" @@ -15,18 +17,48 @@ import ( func TestDiscovery(t *testing.T) { t.Parallel() - client := domain.TestClient(t) - store := new(sync.Map) - store.Store(path.Join(repository.DefaultPathPrefix, client.ID.String()), client) + testClient, localhostClient := domain.TestClient(t), domain.TestClient(t) + localhostClient.ID, _ = domain.ParseClientID("http://localhost.toby3d.me/") - result, err := usecase.NewClientUseCase(repository.NewMemoryClientRepository(store)). - Discovery(context.Background(), client.ID) - if err != nil { - t.Fatal(err) + for _, client := range []*domain.Client{testClient, localhostClient} { + store.Store(path.Join(repository.DefaultPathPrefix, client.ID.String()), client) } - if !reflect.DeepEqual(result, client) { - t.Errorf("Discovery(%s) = %+v, want %+v", client.ID, result, client) + for _, tc := range []struct { + name string + in *domain.Client + out *domain.Client + expError error + }{{ + name: "default", + in: testClient, + out: testClient, + }, { + name: "localhost", + in: localhostClient, + expError: client.ErrNotExist, + }} { + tc := tc + + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + result, err := usecase.NewClientUseCase(repository.NewMemoryClientRepository(store)). + Discovery(context.Background(), tc.in.ID) + if tc.expError != nil && !errors.Is(err, tc.expError) { + t.Errorf("Discovery(%s) = %+v, want %+v", tc.in.ID, err, tc.expError) + + return + } + + if tc.expError == nil && err != nil { + t.Fatal(err) + } + + if !reflect.DeepEqual(result, tc.out) { + t.Errorf("Discovery(%s) = %+v, want %+v", tc.in.ID, result, tc.out) + } + }) } }