@@ -22,22 +22,22 @@ const LanguageBox = require("../languagebox");
2222const mockActivity = {
2323 storage : {
2424 languagePreference : "enUS" ,
25- kanaPreference : null ,
25+ kanaPreference : null
2626 } ,
27- textMsg : jest . fn ( ) ,
27+ textMsg : jest . fn ( )
2828} ;
2929
3030Object . defineProperty ( global , "localStorage" , {
3131 value : {
3232 getItem : jest . fn ( ) ,
33- setItem : jest . fn ( ) ,
33+ setItem : jest . fn ( )
3434 } ,
35- writable : true ,
35+ writable : true
3636} ) ;
3737
3838delete global . window . location ;
3939global . window . location = {
40- reload : jest . fn ( ) ,
40+ reload : jest . fn ( )
4141} ;
4242
4343document . querySelectorAll = jest . fn ( ( ) => [ ] ) ;
@@ -103,4 +103,187 @@ describe("LanguageBox Class", () => {
103103 expect ( link . addEventListener ) . toHaveBeenCalledWith ( "click" , expect . any ( Function ) ) ;
104104 } ) ;
105105 } ) ;
106+
107+ // Test each language selection method
108+ describe ( "Language selection methods" , ( ) => {
109+ it ( "should set language to enUS and call hide when enUS_onclick is called" , ( ) => {
110+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
111+
112+ languageBox . enUS_onclick ( ) ;
113+
114+ expect ( languageBox . _language ) . toBe ( "enUS" ) ;
115+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
116+ } ) ;
117+
118+ it ( "should set language to enUK and call hide when enUK_onclick is called" , ( ) => {
119+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
120+
121+ languageBox . enUK_onclick ( ) ;
122+
123+ expect ( languageBox . _language ) . toBe ( "enUK" ) ;
124+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
125+ } ) ;
126+
127+ it ( "should set language to ko and call hide when ko_onclick is called" , ( ) => {
128+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
129+
130+ languageBox . ko_onclick ( ) ;
131+
132+ expect ( languageBox . _language ) . toBe ( "ko" ) ;
133+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
134+ } ) ;
135+
136+ it ( "should set language to ja, set kanji preference, and call hide when ja_onclick is called" , ( ) => {
137+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
138+
139+ languageBox . ja_onclick ( ) ;
140+
141+ expect ( languageBox . _language ) . toBe ( "ja" ) ;
142+ expect ( mockActivity . storage . kanaPreference ) . toBe ( "kanji" ) ;
143+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
144+ } ) ;
145+
146+ it ( "should set language to ja, set kana preference, and call hide when kana_onclick is called" , ( ) => {
147+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
148+
149+ languageBox . kana_onclick ( ) ;
150+
151+ expect ( languageBox . _language ) . toBe ( "ja" ) ;
152+ expect ( mockActivity . storage . kanaPreference ) . toBe ( "kana" ) ;
153+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
154+ } ) ;
155+
156+ it ( "should set language to es and call hide when es_onclick is called" , ( ) => {
157+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
158+
159+ languageBox . es_onclick ( ) ;
160+
161+ expect ( languageBox . _language ) . toBe ( "es" ) ;
162+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
163+ } ) ;
164+
165+ it ( "should set language to pt and call hide when pt_onclick is called" , ( ) => {
166+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
167+
168+ languageBox . pt_onclick ( ) ;
169+
170+ expect ( languageBox . _language ) . toBe ( "pt" ) ;
171+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
172+ } ) ;
173+
174+ it ( "should set language to zhCN and call hide when zhCN_onclick is called" , ( ) => {
175+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
176+
177+ languageBox . zhCN_onclick ( ) ;
178+
179+ expect ( languageBox . _language ) . toBe ( "zhCN" ) ;
180+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
181+ } ) ;
182+
183+ it ( "should set language to th and call hide when th_onclick is called" , ( ) => {
184+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
185+
186+ languageBox . th_onclick ( ) ;
187+
188+ expect ( languageBox . _language ) . toBe ( "th" ) ;
189+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
190+ } ) ;
191+
192+ it ( "should set language to hi and call hide when hi_onclick is called" , ( ) => {
193+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
194+
195+ languageBox . hi_onclick ( ) ;
196+
197+ expect ( languageBox . _language ) . toBe ( "hi" ) ;
198+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
199+ } ) ;
200+
201+ it ( "should set language to ibo and call hide when ibo_onclick is called" , ( ) => {
202+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
203+
204+ languageBox . ibo_onclick ( ) ;
205+
206+ expect ( languageBox . _language ) . toBe ( "ibo" ) ;
207+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
208+ } ) ;
209+
210+ it ( "should set language to ar and call hide when ar_onclick is called" , ( ) => {
211+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
212+
213+ languageBox . ar_onclick ( ) ;
214+
215+ expect ( languageBox . _language ) . toBe ( "ar" ) ;
216+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
217+ } ) ;
218+
219+ it ( "should set language to he and call hide when he_onclick is called" , ( ) => {
220+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
221+
222+ languageBox . he_onclick ( ) ;
223+
224+ expect ( languageBox . _language ) . toBe ( "he" ) ;
225+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
226+ } ) ;
227+
228+ it ( "should set language to te and call hide when te_onclick is called" , ( ) => {
229+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
230+
231+ languageBox . te_onclick ( ) ;
232+
233+ expect ( languageBox . _language ) . toBe ( "te" ) ;
234+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
235+ } ) ;
236+
237+ it ( "should set language to ayc and call hide when ayc_onclick is called" , ( ) => {
238+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
239+
240+ languageBox . ayc_onclick ( ) ;
241+
242+ expect ( languageBox . _language ) . toBe ( "ayc" ) ;
243+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
244+ } ) ;
245+
246+ it ( "should set language to quz and call hide when quz_onclick is called" , ( ) => {
247+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
248+
249+ languageBox . quz_onclick ( ) ;
250+
251+ expect ( languageBox . _language ) . toBe ( "quz" ) ;
252+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
253+ } ) ;
254+
255+ it ( "should set language to gug and call hide when gug_onclick is called" , ( ) => {
256+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
257+
258+ languageBox . gug_onclick ( ) ;
259+
260+ expect ( languageBox . _language ) . toBe ( "gug" ) ;
261+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
262+ } ) ;
263+
264+ it ( "should set language to ur and call hide when ur_onclick is called" , ( ) => {
265+ const hideSpy = jest . spyOn ( languageBox , "hide" ) . mockImplementation ( ) ;
266+
267+ languageBox . ur_onclick ( ) ;
268+
269+ expect ( languageBox . _language ) . toBe ( "ur" ) ;
270+ expect ( hideSpy ) . toHaveBeenCalled ( ) ;
271+ } ) ;
272+ } ) ;
273+
274+ // Test Japanese kana preference
275+ describe ( "Japanese kana handling" , ( ) => {
276+ it ( "should display kana message when Japanese language is selected with kana preference" , ( ) => {
277+ localStorage . getItem . mockReturnValue ( "enUS" ) ;
278+ mockActivity . storage . kanaPreference = "kana" ;
279+ mockActivity . textMsg . mockImplementation ( ) ;
280+
281+ languageBox . _language = "ja" ;
282+ languageBox . hide ( ) ;
283+
284+ expect ( mockActivity . textMsg ) . toHaveBeenCalledWith (
285+ expect . stringContaining ( "げんごを かえるには、ブラウザを こうしんしてください。" )
286+ ) ;
287+ } ) ;
288+ } ) ;
106289} ) ;
0 commit comments