1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-21 14:19:43 +02:00
documize/domain/space/space_test.go

292 lines
6.3 KiB
Go
Raw Normal View History

2017-08-22 17:23:30 +01:00
package space
import (
"database/sql"
2017-08-22 17:23:30 +01:00
"testing"
"github.com/documize/community/core/uniqueid"
"github.com/documize/community/domain/test"
"github.com/documize/community/model/space"
)
2017-09-01 15:28:05 +01:00
// TestSpace tests all space database operations.
func TestSpace(t *testing.T) {
2017-08-22 17:23:30 +01:00
rt, s, ctx := test.SetupTest()
2017-09-01 15:28:05 +01:00
spaceID := uniqueid.Generate()
spaceID2 := uniqueid.Generate()
sp := space.Space{}
sp2 := space.Space{}
r := space.Role{}
r2 := space.Role{}
r3 := space.Role{}
2017-08-22 17:23:30 +01:00
var err error
2017-09-01 15:28:05 +01:00
t.Run("Add Space", func(t *testing.T) {
ctx.Transaction, err = rt.Db.Beginx()
if err != nil {
return
}
2017-09-01 15:28:05 +01:00
sp.RefID = spaceID
sp.OrgID = ctx.OrgID
sp.UserID = ctx.UserID
sp.Type = space.ScopePublic
sp.Name = "PublicTestSpace"
2017-09-01 15:28:05 +01:00
err = s.Space.Add(ctx, sp)
if err != nil {
ctx.Transaction.Rollback()
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")
2017-09-01 15:28:05 +01:00
}
2017-09-01 15:28:05 +01:00
ctx.Transaction.Commit()
spGet, err := s.Space.Get(ctx, sp.RefID)
if err != nil || sp.Name != spGet.Name {
t.Error("failed to get sp space")
2017-09-01 15:28:05 +01:00
}
})
2017-09-01 15:57:10 +01:00
t.Run("Update Space", func(t *testing.T) {
ctx.Transaction, err = rt.Db.Beginx()
sp, err := s.Space.Get(ctx, spaceID)
if err != nil {
ctx.Transaction.Rollback()
t.Error("failed to get space prior to update")
2017-09-01 15:57:10 +01:00
return
}
sp.Name = "test update"
err = s.Space.Update(ctx, sp)
if err != nil {
ctx.Transaction.Rollback()
t.Error("failed to update space")
return
}
ctx.Transaction.Commit()
sp, err = s.Space.Get(ctx, spaceID)
if err != nil || sp.Name != "test update" {
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
2017-09-01 15:57:10 +01:00
}
})
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
2017-09-01 15:28:05 +01:00
t.Run("Delete Space", func(t *testing.T) {
ctx.Transaction, err = rt.Db.Beginx()
_, err = s.Space.Delete(ctx, spaceID)
if err != nil {
ctx.Transaction.Rollback()
t.Error("failed to delete space")
return
}
ctx.Transaction.Commit()
})
2017-09-01 16:29:51 +01:00
//
2017-09-01 16:29:51 +01:00
// 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()
})
2017-08-22 17:23:30 +01:00
}