1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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));
});
});
|