feat(office): users admin UI, table rendering, and user save fixes
Add Users list/detail with ACL toggles and library people update/status APIs. Fix project table layout and ANSI-safe cell rendering, and decode array responses from people/status so saves no longer fail on JSON unmarshal. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package ui
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/eslider/go-onlyoffice/cmd/office/model"
|
||||
)
|
||||
|
||||
func TestListToolbarShowsFilterAndActions(t *testing.T) {
|
||||
b := newListToolbar()
|
||||
b.SetWidth(60)
|
||||
view := b.View(ListToolbarMeta{
|
||||
Subject: "projects",
|
||||
Count: 3,
|
||||
})
|
||||
if !strings.Contains(view, "projects (3)") {
|
||||
t.Fatalf("missing subject: %q", view)
|
||||
}
|
||||
if !strings.Contains(view, "💾") || !strings.Contains(view, "🗑") {
|
||||
t.Fatalf("missing action icons: %q", view)
|
||||
}
|
||||
}
|
||||
|
||||
func TestListToolbarActionsEnabledFromMeta(t *testing.T) {
|
||||
b := newListToolbar()
|
||||
on := ListToolbarMeta{SaveEnabled: true, DeleteEnabled: true}
|
||||
off := ListToolbarMeta{}
|
||||
if !b.IsActionEnabled(model.ActionSave, on) {
|
||||
t.Fatal("save should be enabled")
|
||||
}
|
||||
if b.IsActionEnabled(model.ActionSave, off) {
|
||||
t.Fatal("save should be disabled")
|
||||
}
|
||||
if !b.IsActionEnabled(model.ActionDelete, on) {
|
||||
t.Fatal("delete should be enabled")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCanSaveFromListRequiresSelection(t *testing.T) {
|
||||
m := Model{
|
||||
items: []model.Item{
|
||||
{ID: "1", Title: "A", Kind: model.KindProject, Selected: true},
|
||||
},
|
||||
}
|
||||
if m.canSaveFromList() {
|
||||
t.Fatal("save should require matching loaded detail")
|
||||
}
|
||||
m.detail = newDetailPane()
|
||||
m.detail.SetSize(40, 20)
|
||||
m.detail.LoadForm(model.Item{ID: "1", Kind: model.KindProject}, model.FormFields{
|
||||
PrimaryLabel: "Title", SecondaryLabel: "Description",
|
||||
Primary: "A", HasStatus: true,
|
||||
})
|
||||
if !m.canSaveFromList() {
|
||||
t.Fatal("save should be enabled with one selected row and loaded detail")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user