mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-10 13:18:45 +02:00
Several kinds of FxMS messages support a common pattern of taking either a string or an object containing a string ID, allowing for both raw strings and translated string IDs to be used in messages. This patch refactors that pattern out into a common definition (localizedText and localizableText) in a common schema which other schemas can then reference. Our schema bundling script has been updated to bundle these definitions from the common schema as top-level definitions (and subsequently rewrite the references from FxMSCOmmon.schema.json to the generated schema) because Nimbus and Experimenter only support a single schema file per feature. To ensure compatability with Experimenter, all our in-tree messages have been extracted into a test corpus that is validated with the Experimenter JSON Schema validator. A future patch in this series will clean this up so we don't need to have separate copies of messages in the tree. We are now also validating all messages from the CFRMessageProvider with our in-tree JSON Schema validator that Nimbus uses. The OnboardingMessageProvider and PanelTestProvider tests have also been updated so that all three are using the same testing infrastructure. Differential Revision: https://phabricator.services.mozilla.com/D150704
32 lines
1 KiB
JavaScript
32 lines
1 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
const { CFRMessageProvider } = ChromeUtils.import(
|
|
"resource://activity-stream/lib/CFRMessageProvider.jsm"
|
|
);
|
|
|
|
add_task(async function test_cfrMessages() {
|
|
const { experimentValidator, messageValidators } = await makeValidators();
|
|
|
|
const messages = await CFRMessageProvider.getMessages();
|
|
for (const message of messages) {
|
|
const validator = messageValidators[message.template];
|
|
Assert.ok(
|
|
typeof validator !== "undefined",
|
|
typeof validator !== "undefined"
|
|
? `Schema validator found for ${message.template}.`
|
|
: `No schema validator found for template ${message.template}. Please update this test to add one.`
|
|
);
|
|
|
|
assertValidates(
|
|
validator,
|
|
message,
|
|
`Message ${message.id} validates as template ${message.template}`
|
|
);
|
|
assertValidates(
|
|
experimentValidator,
|
|
message,
|
|
`Message ${message.id} validates as MessagingExperiment`
|
|
);
|
|
}
|
|
});
|