MM-62548: CPA Reordering - drag and drop (#30097)

Этот коммит содержится в:
Caleb Roseland
2025-02-13 17:09:35 -06:00
коммит произвёл GitHub
родитель b2147476cc
Коммит 2182b1eaf9
11 изменённых файлов: 292 добавлений и 110 удалений

Просмотреть файл

@@ -6,6 +6,7 @@ package app
import (
"encoding/json"
"net/http"
"sort"
"github.com/mattermost/mattermost/server/public/model"
"github.com/mattermost/mattermost/server/v8/channels/store"
@@ -68,6 +69,10 @@ func (a *App) ListCPAFields() ([]*model.PropertyField, *model.AppError) {
return nil, model.NewAppError("GetCPAFields", "app.custom_profile_attributes.search_property_fields.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
}
sort.Slice(fields, func(i, j int) bool {
return model.CustomProfileAttributesPropertySortOrder(fields[i]) < model.CustomProfileAttributesPropertySortOrder(fields[j])
})
return fields, nil
}

Просмотреть файл

@@ -51,7 +51,7 @@ func TestGetCPAField(t *testing.T) {
GroupID: cpaGroupID,
Name: "Test Field",
Type: model.PropertyFieldTypeText,
Attrs: map[string]any{"visibility": "hidden"},
Attrs: model.StringInterface{"visibility": "hidden"},
}
createdField, err := th.App.CreateCPAField(field)
@@ -76,13 +76,14 @@ func TestListCPAFields(t *testing.T) {
require.NoError(t, cErr)
t.Run("should list the CPA property fields", func(t *testing.T) {
field1 := &model.PropertyField{
field1 := model.PropertyField{
GroupID: cpaGroupID,
Name: "Field 1",
Type: model.PropertyFieldTypeText,
Attrs: model.StringInterface{model.CustomProfileAttributesPropertyAttrsSortOrder: 1},
}
_, err := th.App.Srv().propertyService.CreatePropertyField(field1)
_, err := th.App.Srv().propertyService.CreatePropertyField(&field1)
require.NoError(t, err)
field2 := &model.PropertyField{
@@ -93,23 +94,20 @@ func TestListCPAFields(t *testing.T) {
_, err = th.App.Srv().propertyService.CreatePropertyField(field2)
require.NoError(t, err)
field3 := &model.PropertyField{
field3 := model.PropertyField{
GroupID: cpaGroupID,
Name: "Field 3",
Type: model.PropertyFieldTypeText,
Attrs: model.StringInterface{model.CustomProfileAttributesPropertyAttrsSortOrder: 0},
}
_, err = th.App.Srv().propertyService.CreatePropertyField(field3)
_, err = th.App.Srv().propertyService.CreatePropertyField(&field3)
require.NoError(t, err)
fields, appErr := th.App.ListCPAFields()
require.Nil(t, appErr)
require.Len(t, fields, 2)
fieldNames := []string{}
for _, field := range fields {
fieldNames = append(fieldNames, field.Name)
}
require.ElementsMatch(t, []string{"Field 1", "Field 3"}, fieldNames)
require.Equal(t, "Field 3", fields[0].Name)
require.Equal(t, "Field 1", fields[1].Name)
})
}
@@ -146,7 +144,7 @@ func TestCreateCPAField(t *testing.T) {
GroupID: cpaGroupID,
Name: model.NewId(),
Type: model.PropertyFieldTypeText,
Attrs: map[string]any{"visibility": "hidden"},
Attrs: model.StringInterface{"visibility": "hidden"},
}
createdField, err := th.App.CreateCPAField(field)
@@ -226,14 +224,14 @@ func TestPatchCPAField(t *testing.T) {
GroupID: cpaGroupID,
Name: model.NewId(),
Type: model.PropertyFieldTypeText,
Attrs: map[string]any{"visibility": "hidden"},
Attrs: model.StringInterface{"visibility": "hidden"},
}
createdField, err := th.App.CreateCPAField(newField)
require.Nil(t, err)
patch := &model.PropertyFieldPatch{
Name: model.NewPointer("Patched name"),
Attrs: model.NewPointer(map[string]any{"visibility": "default"}),
Attrs: model.NewPointer(model.StringInterface{"visibility": "default"}),
TargetID: model.NewPointer(model.NewId()),
TargetType: model.NewPointer(model.NewId()),
}