summaryrefslogtreecommitdiffstats
path: root/browser/components/newtab/test/unit/asrouter/templates/OnboardingMessage.test.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/newtab/test/unit/asrouter/templates/OnboardingMessage.test.jsx')
-rw-r--r--browser/components/newtab/test/unit/asrouter/templates/OnboardingMessage.test.jsx80
1 files changed, 80 insertions, 0 deletions
diff --git a/browser/components/newtab/test/unit/asrouter/templates/OnboardingMessage.test.jsx b/browser/components/newtab/test/unit/asrouter/templates/OnboardingMessage.test.jsx
new file mode 100644
index 0000000000..0927e9109b
--- /dev/null
+++ b/browser/components/newtab/test/unit/asrouter/templates/OnboardingMessage.test.jsx
@@ -0,0 +1,80 @@
+import { GlobalOverrider } from "test/unit/utils";
+import { OnboardingMessageProvider } from "lib/OnboardingMessageProvider.jsm";
+import schema from "content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.schema.json";
+import badgeSchema from "content-src/asrouter/templates/OnboardingMessage/ToolbarBadgeMessage.schema.json";
+import whatsNewSchema from "content-src/asrouter/templates/OnboardingMessage/WhatsNewMessage.schema.json";
+
+const DEFAULT_CONTENT = {
+ title: "A title",
+ text: "A description",
+ icon: "icon",
+ primary_button: {
+ label: "some_button_label",
+ action: {
+ type: "SOME_TYPE",
+ data: { args: "example.com" },
+ },
+ },
+};
+
+const L10N_CONTENT = {
+ title: { string_id: "onboarding-private-browsing-title" },
+ text: { string_id: "onboarding-private-browsing-text" },
+ icon: "icon",
+ primary_button: {
+ label: { string_id: "onboarding-button-label-get-started" },
+ action: { type: "SOME_TYPE" },
+ },
+};
+
+describe("OnboardingMessage", () => {
+ let globals;
+ let sandbox;
+ beforeEach(() => {
+ globals = new GlobalOverrider();
+ sandbox = sinon.createSandbox();
+ globals.set("FxAccountsConfig", {
+ promiseConnectAccountURI: sandbox.stub().resolves("some/url"),
+ });
+ globals.set("AddonRepository", {
+ getAddonsByIDs: ([content]) => [
+ {
+ name: content,
+ sourceURI: { spec: "foo", scheme: "https" },
+ icons: { 64: "icon" },
+ },
+ ],
+ });
+ });
+ afterEach(() => {
+ sandbox.restore();
+ globals.restore();
+ });
+ it("should validate DEFAULT_CONTENT", () => {
+ assert.jsonSchema(DEFAULT_CONTENT, schema);
+ });
+ it("should validate L10N_CONTENT", () => {
+ assert.jsonSchema(L10N_CONTENT, schema);
+ });
+ it("should validate all messages from OnboardingMessageProvider", async () => {
+ const messages = await OnboardingMessageProvider.getUntranslatedMessages();
+ // FXA_1 doesn't have content - so filter it out
+ messages
+ .filter(msg => msg.template in ["onboarding", "return_to_amo_overlay"])
+ .forEach(msg => assert.jsonSchema(msg.content, schema));
+ });
+ it("should validate all badge template messages", async () => {
+ const messages = await OnboardingMessageProvider.getUntranslatedMessages();
+
+ messages
+ .filter(msg => msg.template === "toolbar_badge")
+ .forEach(msg => assert.jsonSchema(msg.content, badgeSchema));
+ });
+ it("should validate all What's New template messages", async () => {
+ const messages = await OnboardingMessageProvider.getUntranslatedMessages();
+
+ messages
+ .filter(msg => msg.template === "whatsnew_panel_message")
+ .forEach(msg => assert.jsonSchema(msg.content, whatsNewSchema));
+ });
+});