admin-fe/test/views/settings/formSearchObject.test.js
2020-03-21 03:21:05 +03:00

213 lines
5.9 KiB
JavaScript

import { formSearchObject } from '@/store/modules/normalizers'
import _ from 'lodash'
describe('Form search object', () => {
it('forms search object for regular setting', () => {
const description = [{
description: "Upload general settings",
group: ":pleroma",
key: "Pleroma.Upload",
label: "Pleroma.Upload",
children: [
{ description: "Module which will be used for uploads",
key: ":uploader",
label: "Uploader" },
{ description: "List of filter modules for uploads",
key: ":filters",
label: "Filters" }
]
}]
const expected = [
{ label: "Pleroma.Upload",
key: "Pleroma.Upload",
groupKey: "Pleroma.Upload",
groupLabel: "Pleroma.Upload",
search: [
"pleroma.upload",
"pleroma.upload",
"upload general settings"
]
},
{ label: "Uploader",
key: ":uploader",
groupKey: "Pleroma.Upload",
groupLabel: "Pleroma.Upload",
search: [
":uploader",
"uploader",
"module which will be used for uploads"
]
},
{ label: "Filters",
key: ":filters",
groupKey: "Pleroma.Upload",
groupLabel: "Pleroma.Upload",
search: [
":filters",
"filters",
"list of filter modules for uploads"
]
}
]
expect(_.isEqual(formSearchObject(description), expected)).toBeTruthy()
})
it('forms search object for setting without key', () => {
const description = [{
description: "`Swoosh.Adapters.Local` adapter specific settings",
group: ":swoosh",
label: "Swoosh",
children: [
{ description: "Run the preview server together as part of your app",
group: [":subgroup", "Swoosh.Adapters.Local"],
key: ":serve_mailbox",
label: "Serve mailbox"
}
]
}]
const expected = [
{ label: "Swoosh",
key: ":swoosh",
groupKey: ":swoosh",
groupLabel: "Swoosh",
search: ["swoosh", "`swoosh.adapters.local` adapter specific settings"]
},
{ label: "Serve mailbox",
key: ":serve_mailbox",
groupKey: ":swoosh",
groupLabel: "Swoosh",
search: [
":serve_mailbox",
"serve mailbox",
"run the preview server together as part of your app"
]
}
]
expect(_.isEqual(formSearchObject(description), expected)).toBeTruthy()
})
it('forms search object for setting without key and description', () => {
const description = [{
group: ":cors_plug",
label: "Cors plug",
children: [
{ key: ":max_age",
label: "Max age" },
{ key: ":methods",
label: "Methods" }
]
}]
const expected = [
{ label: "Cors plug",
key: ":cors_plug",
groupKey: ":cors_plug",
groupLabel: "Cors plug",
search: ["cors plug"]
},
{ label: "Max age",
key: ":max_age",
groupKey: ":cors_plug",
groupLabel: "Cors plug",
search: [":max_age", "max age"]
},
{ label: "Methods",
key: ":methods",
groupKey: ":cors_plug",
groupLabel: "Cors plug",
search: [":methods", "methods"]
}
]
expect(_.isEqual(formSearchObject(description), expected)).toBeTruthy()
})
it('forms search object for setting without key in pleroma group', () => {
const description = [{
description: "Allows to set a token",
group: ":pleroma",
label: "Pleroma",
children: [
{ description: "Token",
key: ":admin_token",
label: "Admin token" }
]
}]
const expected = [{
label: "Admin token",
key: ":admin_token",
groupKey: ":pleroma",
groupLabel: "Pleroma",
search: [":admin_token", "admin token", "token"]
}]
expect(_.isEqual(formSearchObject(description), expected)).toBeTruthy()
})
it('forms search object for nested setting', () => {
const description = [{
description: "Media proxy",
group: ":pleroma",
key: ":media_proxy",
label: "Media proxy",
children: [
{ description: "Options for Pleroma.ReverseProxy",
key: ":proxy_opts",
label: "Proxy opts",
children: [
{ description: "HTTP options",
key: ":http",
label: "Http",
children: [
{ description: "Adapter specific options",
key: ":adapter",
label: "Adapter",
children: [
{ description: "SSL options for HTTP adapter",
key: ":ssl_options",
label: "SSL Options"
}
]
}
]
}
]}
]
}]
const expected = [
{
label: "Media proxy",
key: ":media_proxy",
groupKey: ":media_proxy",
groupLabel: "Media proxy",
search: [":media_proxy", "media proxy", "media proxy"]
},
{
label: "Proxy opts",
key: ":proxy_opts",
groupKey: ":media_proxy",
groupLabel: "Media proxy",
search: [":proxy_opts", "proxy opts", "options for pleroma.reverseproxy"]
},
{
label: "Http",
key: ":http",
groupKey: ":media_proxy",
groupLabel: "Media proxy",
search: [":http", "http", "http options"]
},
{
label: "Adapter",
key: ":adapter",
groupKey: ":media_proxy",
groupLabel: "Media proxy",
search: [":adapter", "adapter", "adapter specific options"]
},
{
label: "SSL Options",
key: ":ssl_options",
groupKey: ":media_proxy",
groupLabel: "Media proxy",
search: [":ssl_options", "ssl options", "ssl options for http adapter"]
}
]
expect(_.isEqual(formSearchObject(description), expected)).toBeTruthy()
})
})