diff --git a/test/views/settings/formSearchObject.test.js b/test/views/settings/formSearchObject.test.js new file mode 100644 index 00000000..fb6021a1 --- /dev/null +++ b/test/views/settings/formSearchObject.test.js @@ -0,0 +1,213 @@ +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', () => { + 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() + }) +})