diff --git a/domain/space/space_test.go b/domain/space/space_test.go index 7441e869..05031fd3 100644 --- a/domain/space/space_test.go +++ b/domain/space/space_test.go @@ -1,6 +1,7 @@ package space import ( + "database/sql" "testing" "github.com/documize/community/core/uniqueid" @@ -12,6 +13,12 @@ import ( func TestSpace(t *testing.T) { rt, s, ctx := test.SetupTest() spaceID := uniqueid.Generate() + spaceID2 := uniqueid.Generate() + sp := space.Space{} + sp2 := space.Space{} + r := space.Role{} + r2 := space.Role{} + r3 := space.Role{} var err error t.Run("Add Space", func(t *testing.T) { @@ -19,23 +26,37 @@ func TestSpace(t *testing.T) { if err != nil { return } - sp := space.Space{} + sp.RefID = spaceID sp.OrgID = ctx.OrgID - sp.Type = space.ScopePrivate sp.UserID = ctx.UserID - sp.Name = "test" + sp.Type = space.ScopePublic + sp.Name = "PublicTestSpace" err = s.Space.Add(ctx, sp) if err != nil { ctx.Transaction.Rollback() - t.Error("failed to delete space") + t.Error("failed to add sp space") } + + r.RefID = uniqueid.Generate() + r.LabelID = spaceID + r.OrgID = ctx.OrgID + r.UserID = "testAddSpace" + r.CanView = true + r.CanEdit = true + + err = s.Space.AddRole(ctx, r) + if err != nil { + ctx.Transaction.Rollback() + t.Error("failed to add role r") + } + ctx.Transaction.Commit() - sp2, err := s.Space.Get(ctx, sp.RefID) - if err != nil || sp.Name != sp2.Name { - t.Error("failed to create space") + spGet, err := s.Space.Get(ctx, sp.RefID) + if err != nil || sp.Name != spGet.Name { + t.Error("failed to get sp space") } }) @@ -45,7 +66,7 @@ func TestSpace(t *testing.T) { sp, err := s.Space.Get(ctx, spaceID) if err != nil { ctx.Transaction.Rollback() - t.Error("failed to get space") + t.Error("failed to get space prior to update") return } @@ -61,10 +82,172 @@ func TestSpace(t *testing.T) { sp, err = s.Space.Get(ctx, spaceID) if err != nil || sp.Name != "test update" { - t.Error("failed to update space") + t.Error("failed to get the space after update") } }) + t.Run("Get All", func(t *testing.T) { + ctx.Transaction, err = rt.Db.Beginx() + if err != nil { + return + } + + sp2.UserID = ctx.UserID + sp2.RefID = spaceID2 + sp2.OrgID = ctx.OrgID + sp2.Type = space.ScopePrivate + sp2.Name = "PrivateTestSpace" + + err = s.Space.Add(ctx, sp2) + if err != nil { + ctx.Transaction.Rollback() + t.Error("failed to add sp2") + } + + r2.RefID = uniqueid.Generate() + r2.LabelID = spaceID2 + r2.OrgID = ctx.OrgID + r2.UserID = ctx.UserID + r2.CanView = true + r2.CanEdit = true + + err = s.Space.AddRole(ctx, r2) + if err != nil { + ctx.Transaction.Rollback() + t.Error("failed to add role") + } + + ctx.Transaction.Commit() + + spSlice, err := s.Space.GetAll(ctx) + if err != nil || spSlice == nil { + t.Error("failed to get all spaces") + } + }) + + t.Run("PublicSpaces", func(t *testing.T) { + ctx.Transaction, err = rt.Db.Beginx() + if err != nil { + return + } + + spSlice, err := s.Space.PublicSpaces(ctx, sp.OrgID) + if err != nil || spSlice == nil { + t.Error("failed to get public spaces") + } + + ctx.Transaction.Commit() + }) + + t.Run("Change Owner", func(t *testing.T) { + ctx.Transaction, err = rt.Db.Beginx() + if err != nil { + return + } + newUserID := "Updated Owner" + + err := s.Space.ChangeOwner(ctx, sp.UserID, newUserID) + if err != nil { + ctx.Transaction.Rollback() + t.Error("failed to change Owner") + return + } + ctx.Transaction.Commit() + + sp, err = s.Space.Get(ctx, spaceID) + if err != nil || sp.UserID != newUserID { + t.Error("failed to get space w/ new owner") + } + }) + + t.Run("Viewers", func(t *testing.T) { + viewers, err := s.Space.Viewers(ctx) + if err != nil || viewers == nil { + t.Error("failed to get viewers") + return + } + }) + + t.Run("Add Role", func(t *testing.T) { + ctx.Transaction, err = rt.Db.Beginx() + + r3.CanView = true + r3.CanEdit = true + r3.RefID = uniqueid.Generate() + r3.LabelID = spaceID + r3.OrgID = ctx.OrgID + r3.UserID = "testAddRole" + + err = s.Space.AddRole(ctx, r3) + if err != nil { + ctx.Transaction.Rollback() + t.Error("failed to add role") + return + } + ctx.Transaction.Commit() + + roles, err := s.Space.GetRoles(ctx, spaceID) + if err != nil || roles == nil { + t.Error("Could not get any roles") + return + } + // TODO: could we Verify the role was added with the if r3.UserID == Returned.UserID? + }) + + t.Run("Get User Roles", func(t *testing.T) { + userRoles, err := s.Space.GetUserRoles(ctx) + if err != nil || userRoles == nil { + t.Error("failed to get user roles") + return + } + }) + + t.Run("Move space Roles", func(t *testing.T) { + ctx.Transaction, err = rt.Db.Beginx() + err := s.Space.MoveSpaceRoles(ctx, spaceID, spaceID2) + if err != nil { + ctx.Transaction.Rollback() + t.Error("failed to move space roles") + return + } + ctx.Transaction.Commit() + }) + + t.Run("Delete Role", func(t *testing.T) { + ctx.Transaction, err = rt.Db.Beginx() + rowsDeleted, err := s.Space.DeleteRole(ctx, r3.RefID) + if err != nil || rowsDeleted == 0 { + ctx.Transaction.Rollback() + t.Error("failed to delete roles") + return + } + ctx.Transaction.Commit() + }) + + t.Run("Delete space Roles", func(t *testing.T) { + ctx.Transaction, err = rt.Db.Beginx() + _, err := s.Space.DeleteSpaceRoles(ctx, spaceID) + if err != nil && err != sql.ErrNoRows { + ctx.Transaction.Rollback() + t.Error("failed to delete space roles") + return + } + ctx.Transaction.Commit() + }) + + t.Run("Delete user space Roles", func(t *testing.T) { + ctx.Transaction, err = rt.Db.Beginx() + _, err := s.Space.DeleteUserSpaceRoles(ctx, spaceID2, ctx.UserID) + if err != nil && err != sql.ErrNoRows { + ctx.Transaction.Rollback() + t.Error("failed to delete user space roles") + return + } + ctx.Transaction.Commit() + }) + + //Delete spaces last, otherwise tests may fail + t.Run("Delete Space", func(t *testing.T) { ctx.Transaction, err = rt.Db.Beginx() @@ -78,5 +261,31 @@ func TestSpace(t *testing.T) { ctx.Transaction.Commit() }) + // // teardown code goes here + // + + t.Run("Delete sp2 Space", func(t *testing.T) { + ctx.Transaction, err = rt.Db.Beginx() + + _, err = s.Space.Delete(ctx, spaceID2) + if err != nil { + ctx.Transaction.Rollback() + t.Error("failed to delete space in teardown") + return + } + + ctx.Transaction.Commit() + }) + + t.Run("Delete r Role", func(t *testing.T) { + ctx.Transaction, err = rt.Db.Beginx() + rowsDeleted, err := s.Space.DeleteRole(ctx, r.RefID) + if err != nil || rowsDeleted == 0 { + ctx.Transaction.Rollback() + t.Error("failed to delete role r in teardown") + return + } + ctx.Transaction.Commit() + }) }