feat(server): owner role group, custom role colors with effects and animated avatars
This commit is contained in:
1 parent
7ef298f587
commit
bef8898cd8
8 files changed
+67
-19
No files matched your search
Binary file not shown.
@@ -90,9 +90,17 @@ public sealed class WorkspaceStructureTests
|
||||
Assert.Equal("管理员", role.Suffix); Assert.Equal(["alice"], role.Members);
|
||||
// 默认的「管理组」一直在;删掉自己建的不影响它,删掉默认组后也不会再自动出现
|
||||
var remaining = env.Service.DeleteWorkspaceRole(ch.Id, owner, created.Role.Id);
|
||||
Assert.Equal(WorkspaceRole.DefaultId, Assert.Single(remaining.Roles).Id);
|
||||
Assert.Empty(env.Service.DeleteWorkspaceRole(ch.Id, owner, WorkspaceRole.DefaultId).Roles);
|
||||
Assert.Empty(env.Service.CreateWorkspaceChannel(ch.Id, owner, "再写一次", null).Roles);
|
||||
Assert.Equal([WorkspaceRole.OwnerId, WorkspaceRole.DefaultId], remaining.Roles.Select(r => r.Id));
|
||||
Assert.Equal(WorkspaceRole.OwnerId, Assert.Single(env.Service.DeleteWorkspaceRole(ch.Id, owner, WorkspaceRole.DefaultId).Roles).Id);
|
||||
// Owner 组删不掉、不能加成员,但前后缀和颜色可以改,名称和权限保持不变
|
||||
Assert.Throws<WebDropException>(() => env.Service.DeleteWorkspaceRole(ch.Id, owner, WorkspaceRole.OwnerId));
|
||||
Assert.Throws<WebDropException>(() => env.Service.SetWorkspaceRoleMembers(ch.Id, owner, WorkspaceRole.OwnerId, ["alice"]));
|
||||
var edited = env.Service.UpdateWorkspaceRole(ch.Id, owner, WorkspaceRole.OwnerId, "改名", "**主**", "*Owner*", "g:#ff0000,#0000ff", []).Roles.Single();
|
||||
Assert.Equal("Owner 组", edited.Name); Assert.Equal("**主**", edited.Prefix); Assert.Equal("g:#ff0000,#0000ff", edited.Color); Assert.Equal(WorkspacePermission.All, edited.Permissions);
|
||||
Assert.Throws<WebDropException>(() => env.Service.UpdateWorkspaceRole(ch.Id, owner, WorkspaceRole.OwnerId, "x", null, null, "#12345", []));
|
||||
Assert.Equal("g:#ff0000,#0000ff|marquee", env.Service.UpdateWorkspaceRole(ch.Id, owner, WorkspaceRole.OwnerId, "x", null, null, "g:#ff0000,#0000ff|marquee", []).Roles.Single().Color); // 动画效果跟在颜色后面
|
||||
Assert.Throws<WebDropException>(() => env.Service.UpdateWorkspaceRole(ch.Id, owner, WorkspaceRole.OwnerId, "x", null, null, "#ff0000|spin", []));
|
||||
Assert.Single(env.Service.CreateWorkspaceChannel(ch.Id, owner, "再写一次", null).Roles);
|
||||
}
|
||||
[Fact]
|
||||
public void StructureStoredBeforeRolesExistedStillLoadsWithAnEmptyRoleList()
|
||||
@@ -104,7 +112,7 @@ public sealed class WorkspaceStructureTests
|
||||
public void EverySpaceStartsWithADefaultAdminGroupThatCanHoldMembers()
|
||||
{
|
||||
var (env, ch, owner, alice, bob, _) = RoleSpace(); using var _env = env;
|
||||
var admin = Assert.Single(env.Service.GetWorkspace(ch.Id, owner).Roles);
|
||||
var admin = Assert.Single(env.Service.GetWorkspace(ch.Id, owner).Roles, r => r.Id == WorkspaceRole.DefaultId);
|
||||
Assert.Equal(WorkspaceRole.DefaultId, admin.Id); Assert.Equal("管理组", admin.Name); Assert.Empty(admin.Members);
|
||||
Assert.Contains(WorkspacePermission.RemoveMembers, admin.Permissions); Assert.Contains(WorkspacePermission.ManageStructure, admin.Permissions);
|
||||
env.Service.SetWorkspaceRoleMembers(ch.Id, owner, admin.Id, ["alice"]);
|
||||
|
||||
Reference in new issue
Block a user