Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
const TEST_SEARCH_TERM = "civilisations";
const TESTS = [
// The same parameter can be used more than once.
{
param: "{searchTerms}/{searchTerms}",
expected: `${TEST_SEARCH_TERM}/${TEST_SEARCH_TERM}`,
},
// Optional parameters are replaced if we known them.
{ param: "{searchTerms?}", expected: TEST_SEARCH_TERM },
{ param: "{unknownOptional?}", expected: "" },
{ param: "{unknownRequired}", expected: "{unknownRequired}" },
{ param: "{language}", expected: Services.locale.requestedLocale },
{ param: "{language?}", expected: Services.locale.requestedLocale },
{ param: "{inputEncoding}", charset: "UTF-8", expected: "UTF-8" },
{
param: "{inputEncoding?}",
charset: "windows-1252",
expected: "windows-1252",
},
// Output encoding is always UTF-8 regardless of the input encoding.
{
param: "{outputEncoding}",
charset: "windows-1252",
expected: "UTF-8",
},
{ param: "{outputEncoding?}", charset: "UTF-8", expected: "UTF-8" },
{ param: "{count}", expected: "20" },
{ param: "{count?}", expected: "" },
{ param: "{startIndex}", expected: "1" },
{ param: "{startIndex?}", expected: "" },
{ param: "{startPage}", expected: "1" },
{ param: "{startPage?}", expected: "" },
];
add_setup(async function () {
let id = 0;
let config = TESTS.map(t => {
return {
identifier: `engine-${id++}`,
base: {
charset: t.charset ?? "UTF-8",
urls: {
search: {
params: [
{
name: "sourceId",
value: "ncc-1701-c",
},
{
name: "test",
value: t.param,
},
],
searchTermParamName: "search",
},
},
},
};
});
SearchTestUtils.setRemoteSettingsConfig(config);
await Services.search.init();
});
add_task(async function test_paramSubstitution() {
for (let [i, test] of TESTS.entries()) {
let engine = await Services.search.getEngineById(`engine-${i}`);
let submission = engine.getSubmission(TEST_SEARCH_TERM);
Assert.equal(
submission.uri.spec,
`https://example.com/?sourceId=ncc-1701-c&test=${test.expected}&search=${TEST_SEARCH_TERM}`,
`Should have the expected replacement for ${test.param}`
);
}
});