Skip to content

Commit 868debb

Browse files
authored
add test for helper functions (#816)
1 parent e6bc495 commit 868debb

File tree

1 file changed

+222
-0
lines changed

1 file changed

+222
-0
lines changed

test/test.helper.js

Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
"use strict";
2+
let assert = require('assert');
3+
let Gmail = require('../src/gmail').Gmail;
4+
let gmail = new Gmail(false);
5+
6+
describe("Helper array_starts_with", () => {
7+
it("returns true when list starts with item", () => {
8+
let list = ["ui", 1, 2, 3];
9+
let result = gmail.helper.array_starts_with(list, "ui");
10+
assert.equal(result, true);
11+
});
12+
13+
it("returns false when list does not start with item", () => {
14+
let list = ["ui", 1, 2, 3];
15+
let result = gmail.helper.array_starts_with(list, "other");
16+
assert.equal(result, false);
17+
});
18+
19+
it("returns false when list is empty", () => {
20+
let list = [];
21+
let result = gmail.helper.array_starts_with(list, "ui");
22+
assert.equal(result, false);
23+
});
24+
25+
it("returns false when list is null", () => {
26+
let result = gmail.helper.array_starts_with(null, "ui");
27+
assert.equal(result, false);
28+
});
29+
30+
it("returns false when list is undefined", () => {
31+
let result = gmail.helper.array_starts_with(undefined, "ui");
32+
assert.equal(result, false);
33+
});
34+
35+
it("works with numeric items", () => {
36+
let list = [1, 2, 3];
37+
let result = gmail.helper.array_starts_with(list, 1);
38+
assert.equal(result, true);
39+
});
40+
41+
it("uses strict equality check", () => {
42+
let list = ["1", 2, 3];
43+
let result = gmail.helper.array_starts_with(list, 1);
44+
assert.equal(result, false);
45+
});
46+
});
47+
48+
describe("Helper array_sublist", () => {
49+
it("returns sublist when itemKey matches first element", () => {
50+
let nestedArray = [
51+
["ui", 1, 2, 3],
52+
["other", 4, 5, 6],
53+
["data", 7, 8, 9]
54+
];
55+
let result = gmail.helper.get.array_sublist(nestedArray, "ui");
56+
assert.deepEqual(result, ["ui", 1, 2, 3]);
57+
});
58+
59+
it("returns first matching sublist when multiple matches exist", () => {
60+
let nestedArray = [
61+
["ui", 1, 2, 3],
62+
["ui", 4, 5, 6],
63+
["data", 7, 8, 9]
64+
];
65+
let result = gmail.helper.get.array_sublist(nestedArray, "ui");
66+
assert.deepEqual(result, ["ui", 1, 2, 3]);
67+
});
68+
69+
it("returns null when no match is found", () => {
70+
let nestedArray = [
71+
["ui", 1, 2, 3],
72+
["other", 4, 5, 6]
73+
];
74+
let result = gmail.helper.get.array_sublist(nestedArray, "notfound");
75+
assert.equal(result, null);
76+
});
77+
78+
it("returns null when nestedArray is null", () => {
79+
let result = gmail.helper.get.array_sublist(null, "ui");
80+
assert.equal(result, null);
81+
});
82+
83+
it("returns null when nestedArray is undefined", () => {
84+
let result = gmail.helper.get.array_sublist(undefined, "ui");
85+
assert.equal(result, null);
86+
});
87+
88+
it("returns null when nestedArray is empty", () => {
89+
let result = gmail.helper.get.array_sublist([], "ui");
90+
assert.equal(result, null);
91+
});
92+
93+
it("handles nested arrays with empty sublists", () => {
94+
let nestedArray = [
95+
[],
96+
["ui", 1, 2, 3]
97+
];
98+
let result = gmail.helper.get.array_sublist(nestedArray, "ui");
99+
assert.deepEqual(result, ["ui", 1, 2, 3]);
100+
});
101+
102+
it("works with numeric itemKeys", () => {
103+
let nestedArray = [
104+
[1, "a", "b"],
105+
[2, "c", "d"]
106+
];
107+
let result = gmail.helper.get.array_sublist(nestedArray, 1);
108+
assert.deepEqual(result, [1, "a", "b"]);
109+
});
110+
111+
it("returns null when sublists contain non-arrays", () => {
112+
let nestedArray = [
113+
"not an array",
114+
["ui", 1, 2, 3]
115+
];
116+
// This should handle the case where a sublist is not an array
117+
// The function will try to check list[0] which will be 'n' for the string
118+
let result = gmail.helper.get.array_sublist(nestedArray, "ui");
119+
assert.deepEqual(result, ["ui", 1, 2, 3]);
120+
});
121+
});
122+
123+
describe("Helper locale_from_url_params", () => {
124+
it("extracts locale from URL with hl parameter", () => {
125+
let url = "https://account.google.com/user/stats?hl=en";
126+
let result = gmail.helper.get.locale_from_url_params(url);
127+
assert.equal(result, "en");
128+
});
129+
130+
it("extracts locale from URL with multiple parameters", () => {
131+
let url = "https://account.google.com/user/stats?foo=bar&hl=no&other=value";
132+
let result = gmail.helper.get.locale_from_url_params(url);
133+
assert.equal(result, "no");
134+
});
135+
136+
it("returns null for URL without hl parameter", () => {
137+
let url = "https://account.google.com/user/stats?foo=bar";
138+
let result = gmail.helper.get.locale_from_url_params(url);
139+
assert.equal(result, null);
140+
});
141+
142+
it("returns null for URL without query string", () => {
143+
let url = "https://account.google.com/user/stats";
144+
let result = gmail.helper.get.locale_from_url_params(url);
145+
assert.equal(result, null);
146+
});
147+
148+
it("returns null for non-URL strings", () => {
149+
let result = gmail.helper.get.locale_from_url_params("not a url");
150+
assert.equal(result, null);
151+
});
152+
153+
it("returns null for null input", () => {
154+
let result = gmail.helper.get.locale_from_url_params(null);
155+
assert.equal(result, null);
156+
});
157+
158+
it("returns null for undefined input", () => {
159+
let result = gmail.helper.get.locale_from_url_params(undefined);
160+
assert.equal(result, null);
161+
});
162+
163+
it("handles http URLs", () => {
164+
let url = "http://www.google.com/support?hl=fr";
165+
let result = gmail.helper.get.locale_from_url_params(url);
166+
assert.equal(result, "fr");
167+
});
168+
169+
it("handles encoded URLs", () => {
170+
let url = "http://support.google.com/?ctx=%67mail&hl=de";
171+
let result = gmail.helper.get.locale_from_url_params(url);
172+
assert.equal(result, "de");
173+
});
174+
});
175+
176+
describe("Helper locale_from_globals_item", () => {
177+
it("returns locale from URL in list", () => {
178+
let list = ["https://account.google.com/user/stats?hl=en"];
179+
let result = gmail.helper.get.locale_from_globals_item(list);
180+
assert.equal(result, "en");
181+
});
182+
183+
it("returns first matching locale from multiple URLs", () => {
184+
let list = [
185+
"https://account.google.com/user/stats?hl=en",
186+
"https://other.com?hl=fr"
187+
];
188+
let result = gmail.helper.get.locale_from_globals_item(list);
189+
assert.equal(result, "en");
190+
});
191+
192+
it("returns list[8] when no URLs match", () => {
193+
let list = ["ui", 1, 2, 3, 4, 5, 6, 7, "NO"];
194+
let result = gmail.helper.get.locale_from_globals_item(list);
195+
assert.equal(result, "NO");
196+
});
197+
198+
it("returns null for null input", () => {
199+
let result = gmail.helper.get.locale_from_globals_item(null);
200+
assert.equal(result, null);
201+
});
202+
203+
it("returns null for undefined input", () => {
204+
let result = gmail.helper.get.locale_from_globals_item(undefined);
205+
assert.equal(result, null);
206+
});
207+
208+
it("returns undefined for empty list", () => {
209+
let result = gmail.helper.get.locale_from_globals_item([]);
210+
assert.equal(result, undefined);
211+
});
212+
213+
it("prefers URL locale over list[8]", () => {
214+
let list = [
215+
"not a url",
216+
"https://account.google.com/user/stats?hl=en",
217+
2, 3, 4, 5, 6, 7, "NO"
218+
];
219+
let result = gmail.helper.get.locale_from_globals_item(list);
220+
assert.equal(result, "en");
221+
});
222+
});

0 commit comments

Comments
 (0)