PLT-7709 Add UI settings to plugin manifest (#7794)

* Add UI settings to plugin manifest

* Add another test case

* Add options field to setting

* Updates per feedback

* Report diagnostics on if plugins have settings set

* Add regenerate_help_text field
Этот коммит содержится в:
Joram Wilander
2017-11-08 11:39:30 -05:00
коммит произвёл GitHub
родитель 1d1998c668
Коммит 5ef7277521
3 изменённых файлов: 141 добавлений и 8 удалений

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

@@ -1,3 +1,6 @@
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
package model
import (
@@ -64,6 +67,25 @@ func TestManifestUnmarshal(t *testing.T) {
Webapp: &ManifestWebapp{
BundlePath: "thebundlepath",
},
SettingsSchema: &PluginSettingsSchema{
Header: "theheadertext",
Footer: "thefootertext",
Settings: map[string]*PluginSetting{
"thesetting": &PluginSetting{
DisplayName: "thedisplayname",
Type: PLUGIN_CONFIG_TYPE_DROPDOWN,
HelpText: "thehelptext",
RegenerateHelpText: "theregeneratehelptext",
Options: []*PluginOption{
&PluginOption{
DisplayName: "theoptiondisplayname",
Value: "thevalue",
},
},
Default: "thedefault",
},
},
},
}
var yamlResult Manifest
@@ -73,6 +95,19 @@ backend:
executable: theexecutable
webapp:
bundle_path: thebundlepath
settings_schema:
header: theheadertext
footer: thefootertext
settings:
thesetting:
display_name: thedisplayname
type: dropdown
help_text: thehelptext
regenerate_help_text: theregeneratehelptext
options:
- display_name: theoptiondisplayname
value: thevalue
default: thedefault
`), &yamlResult))
assert.Equal(t, expected, yamlResult)
@@ -84,7 +119,26 @@ webapp:
},
"webapp": {
"bundle_path": "thebundlepath"
}
},
"settings_schema": {
"header": "theheadertext",
"footer": "thefootertext",
"settings": {
"thesetting": {
"display_name": "thedisplayname",
"type": "dropdown",
"help_text": "thehelptext",
"regenerate_help_text": "theregeneratehelptext",
"options": [
{
"display_name": "theoptiondisplayname",
"value": "thevalue"
}
],
"default": "thedefault"
}
}
}
}`), &jsonResult))
assert.Equal(t, expected, jsonResult)
}
@@ -115,6 +169,25 @@ func TestManifestJson(t *testing.T) {
Webapp: &ManifestWebapp{
BundlePath: "thebundlepath",
},
SettingsSchema: &PluginSettingsSchema{
Header: "theheadertext",
Footer: "thefootertext",
Settings: map[string]*PluginSetting{
"thesetting": &PluginSetting{
DisplayName: "thedisplayname",
Type: PLUGIN_CONFIG_TYPE_DROPDOWN,
HelpText: "thehelptext",
RegenerateHelpText: "theregeneratehelptext",
Options: []*PluginOption{
&PluginOption{
DisplayName: "theoptiondisplayname",
Value: "thevalue",
},
},
Default: "thedefault",
},
},
},
}
json := manifest.ToJson()
@@ -159,6 +232,25 @@ func TestManifestClientManifest(t *testing.T) {
Webapp: &ManifestWebapp{
BundlePath: "thebundlepath",
},
SettingsSchema: &PluginSettingsSchema{
Header: "theheadertext",
Footer: "thefootertext",
Settings: map[string]*PluginSetting{
"thesetting": &PluginSetting{
DisplayName: "thedisplayname",
Type: PLUGIN_CONFIG_TYPE_DROPDOWN,
HelpText: "thehelptext",
RegenerateHelpText: "theregeneratehelptext",
Options: []*PluginOption{
&PluginOption{
DisplayName: "theoptiondisplayname",
Value: "thevalue",
},
},
Default: "thedefault",
},
},
},
}
sanitized := manifest.ClientManifest()
@@ -166,6 +258,7 @@ func TestManifestClientManifest(t *testing.T) {
assert.NotEmpty(t, sanitized.Id)
assert.NotEmpty(t, sanitized.Version)
assert.NotEmpty(t, sanitized.Webapp)
assert.NotEmpty(t, sanitized.SettingsSchema)
assert.Empty(t, sanitized.Name)
assert.Empty(t, sanitized.Description)
assert.Empty(t, sanitized.Backend)
@@ -176,4 +269,5 @@ func TestManifestClientManifest(t *testing.T) {
assert.NotEmpty(t, manifest.Name)
assert.NotEmpty(t, manifest.Description)
assert.NotEmpty(t, manifest.Backend)
assert.NotEmpty(t, manifest.SettingsSchema)
}