From bccf40cfde4771862a84364168c42093cf85f0c0 Mon Sep 17 00:00:00 2001 From: aliraza556 Date: Tue, 2 Jul 2024 19:19:52 +0500 Subject: [PATCH] Write DeleteFeature UT --- handlers/features_test.go | 87 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 2 deletions(-) diff --git a/handlers/features_test.go b/handlers/features_test.go index 8fdac164f..d98348d71 100644 --- a/handlers/features_test.go +++ b/handlers/features_test.go @@ -1,13 +1,96 @@ package handlers -import "testing" +import ( + "context" + "github.com/go-chi/chi" + "github.com/google/uuid" + "github.com/stakwork/sphinx-tribes/auth" + "github.com/stakwork/sphinx-tribes/db" + "github.com/stretchr/testify/assert" + "net/http" + "net/http/httptest" + "testing" +) func TestCreateOrEditFeatures(t *testing.T) { } func TestDeleteFeature(t *testing.T) { - + teardownSuite := SetupSuite(t) + defer teardownSuite(t) + oHandler := NewFeatureHandler(db.TestDB) + + person := db.Person{ + Uuid: uuid.New().String(), + OwnerAlias: "test-alias", + UniqueName: "test-unique-name", + OwnerPubKey: "test-pubkey", + PriceToMeet: 0, + Description: "test-description", + } + db.TestDB.CreateOrEditPerson(person) + + workspace := db.Workspace{ + Uuid: uuid.New().String(), + Name: "test-workspace" + uuid.New().String(), + OwnerPubKey: person.OwnerPubKey, + Github: "https://github.com/test", + Website: "https://www.testwebsite.com", + Description: "test-description", + } + db.TestDB.CreateOrEditWorkspace(workspace) + workspace = db.TestDB.GetWorkspaceByUuid(workspace.Uuid) + + feature := db.WorkspaceFeatures{ + Uuid: uuid.New().String(), + WorkspaceUuid: workspace.Uuid, + Name: "test-feature", + Url: "https://github.com/test-feature", + Priority: 0, + } + db.TestDB.CreateOrEditFeature(feature) + feature = db.TestDB.GetFeatureByUuid(feature.Uuid) + + ctx := context.WithValue(context.Background(), auth.ContextKey, person.OwnerPubKey) + + t.Run("should return error if not authorized", func(t *testing.T) { + featureUUID := feature.Uuid + rr := httptest.NewRecorder() + handler := http.HandlerFunc(oHandler.DeleteFeature) + + rctx := chi.NewRouteContext() + rctx.URLParams.Add("uuid", featureUUID) + req, err := http.NewRequestWithContext(context.WithValue(context.Background(), chi.RouteCtxKey, rctx), http.MethodDelete, "/features/"+featureUUID, nil) + if err != nil { + t.Fatal(err) + } + + handler.ServeHTTP(rr, req) + + assert.Equal(t, http.StatusUnauthorized, rr.Code) + }) + + t.Run("should delete feature on successful delete", func(t *testing.T) { + featureUUID := feature.Uuid + + rr := httptest.NewRecorder() + handler := http.HandlerFunc(oHandler.DeleteFeature) + + rctx := chi.NewRouteContext() + rctx.URLParams.Add("uuid", featureUUID) + req, err := http.NewRequestWithContext(context.WithValue(ctx, chi.RouteCtxKey, rctx), http.MethodDelete, "/features/"+featureUUID, nil) + if err != nil { + t.Fatal(err) + } + + handler.ServeHTTP(rr, req) + + assert.Equal(t, http.StatusOK, rr.Code) + + deletedFeature := db.TestDB.GetFeatureByUuid(featureUUID) + assert.Equal(t, db.WorkspaceFeatures{}, deletedFeature) + }) } func TestGetFeaturesByWorkspaceUuid(t *testing.T) {