1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.exoplatform.mobile.tests;
18
19 import static org.hamcrest.CoreMatchers.equalTo;
20 import static org.junit.Assert.assertFalse;
21 import static org.junit.Assert.assertThat;
22 import static org.junit.Assert.assertTrue;
23 import static org.robolectric.Shadows.shadowOf;
24
25 import java.util.Locale;
26
27 import org.exoplatform.model.ExoAccount;
28 import org.exoplatform.ui.LaunchActivity;
29 import org.exoplatform.ui.WelcomeActivity;
30 import org.exoplatform.ui.login.LoginActivity;
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.junit.runner.RunWith;
34 import org.robolectric.Robolectric;
35 import org.robolectric.RuntimeEnvironment;
36 import org.robolectric.shadows.ShadowActivity;
37 import org.robolectric.shadows.ShadowIntent;
38
39 import android.content.Context;
40 import android.content.Intent;
41
42
43
44
45
46 @RunWith(ExoRobolectricTestRunner.class)
47 public class LaunchActivityTest extends ExoActivityTestUtils<LaunchActivity> {
48
49 Context ctx;
50
51 @Override
52 @Before
53 public void setup() {
54 controller = Robolectric.buildActivity(LaunchActivity.class);
55 ctx = RuntimeEnvironment.application.getApplicationContext();
56 }
57
58 @Test
59
60
61
62
63
64
65 public void shouldRedirectToWelcomeScreen() throws Exception {
66 create();
67
68 ShadowActivity sActivity = shadowOf(activity);
69 Intent welcomeIntent = sActivity.getNextStartedActivity();
70 ShadowIntent sIntent = shadowOf(welcomeIntent);
71
72 assertThat(sIntent.getComponent().getClassName(), equalTo(WelcomeActivity.class.getName()));
73
74 }
75
76 @Test
77
78
79
80 public void shouldDetectAndConfigureAppInFrench() {
81
82 final String expectedLang = "fr";
83 Locale.setDefault(new Locale(expectedLang));
84
85 setLanguageInPreferences(ctx, "");
86
87
88 create();
89
90 String lang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
91
92 assertTrue("Saved language should be French", lang.equals(expectedLang));
93 }
94
95 @Test
96
97
98
99 public void shouldDetectAndConfigureAppInSpanish() {
100
101 final String expectedLang = "es";
102 Locale.setDefault(new Locale(expectedLang));
103
104 setLanguageInPreferences(ctx, "");
105
106
107 create();
108
109 String lang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
110
111 assertTrue("Saved language should be Spanish", lang.equals(expectedLang));
112 }
113
114 @Test
115
116
117
118 public void shouldDetectAndConfigureAppInGerman() {
119
120 final String expectedLang = "de";
121 Locale.setDefault(new Locale(expectedLang));
122
123 setLanguageInPreferences(ctx, "");
124
125
126 create();
127
128 String lang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
129
130 assertTrue("Saved language should be German", lang.equals(expectedLang));
131 }
132
133 @Test
134
135
136
137 public void shouldDetectAndConfigureAppInEnglish() {
138
139 final String expectedLang = "en";
140 Locale.setDefault(new Locale(expectedLang));
141
142 setLanguageInPreferences(ctx, "");
143
144
145 create();
146
147 String lang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
148
149 assertTrue("Saved language should be English", lang.equals(expectedLang));
150 }
151
152 @Test
153
154
155
156 public void shouldDetectNotSupportedLanguageAndConfigureAppInEnglish() {
157
158 final String deviceLang = "ja";
159 Locale.setDefault(new Locale(deviceLang));
160
161 setLanguageInPreferences(ctx, "");
162
163
164 create();
165
166 String lang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
167
168 assertTrue("Saved language should be English", lang.equals("en"));
169 }
170
171 @Test
172
173
174
175 public void shouldKeepSavedLanguage() {
176
177 final String expectedLang = "en";
178 Locale.setDefault(new Locale("fr"));
179 setLanguageInPreferences(ctx, expectedLang);
180
181
182 create();
183
184 String lang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
185
186 assertTrue("Saved language should be English", lang.equals(expectedLang));
187 }
188
189
190
191
192
193 @Test
194 public void shouldSetLanguagePref_EN() {
195 setLanguageInPreferences(ctx, "");
196
197 Locale.setDefault(new Locale("en"));
198 create();
199 String prefLang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
200
201 assertFalse("Saved language should not be empty", prefLang.equals(""));
202
203 setLanguageInPreferences(ctx, "");
204 }
205
206 @Test
207 public void shouldSetLanguagePref_FR() {
208 setLanguageInPreferences(ctx, "");
209
210 Locale.setDefault(new Locale("fr"));
211 create();
212 String prefLang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
213
214 assertFalse("Saved language should not be empty", prefLang.equals(""));
215
216 setLanguageInPreferences(ctx, "");
217 }
218
219 @Test
220 public void shouldSetLanguagePref_DE() {
221 setLanguageInPreferences(ctx, "");
222
223 Locale.setDefault(new Locale("de"));
224 create();
225 String prefLang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
226
227 assertFalse("Saved language should not be empty", prefLang.equals(""));
228
229 setLanguageInPreferences(ctx, "");
230 }
231
232 @Test
233 public void shouldSetLanguagePref_ES() {
234 setLanguageInPreferences(ctx, "");
235
236 Locale.setDefault(new Locale("es"));
237 create();
238 String prefLang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
239
240 assertFalse("Saved language should not be empty", prefLang.equals(""));
241
242 setLanguageInPreferences(ctx, "");
243 }
244
245 @Test
246 public void shouldSetLanguagePref_JA() {
247 setLanguageInPreferences(ctx, "");
248
249 Locale.setDefault(new Locale("ja"));
250 create();
251 String prefLang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
252
253 assertFalse("Saved language should not be empty", prefLang.equals(""));
254
255 setLanguageInPreferences(ctx, "");
256 }
257
258 @Test
259 public void shouldSetLanguagePref_FR_FR() {
260 setLanguageInPreferences(ctx, "");
261
262 Locale.setDefault(new Locale("fr_FR"));
263 create();
264 String prefLang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
265
266 assertFalse("Saved language should not be empty", prefLang.equals(""));
267
268 setLanguageInPreferences(ctx, "");
269 }
270
271 @Test
272 public void shouldSetLanguagePref_FR_BE() {
273 setLanguageInPreferences(ctx, "");
274
275 Locale.setDefault(new Locale("fr_BE"));
276 create();
277 String prefLang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
278
279 assertFalse("Saved language should not be empty", prefLang.equals(""));
280
281 setLanguageInPreferences(ctx, "");
282 }
283
284 @Test
285 public void shouldSetLanguagePref_None() {
286 setLanguageInPreferences(ctx, "");
287
288 Locale.setDefault(new Locale(""));
289 create();
290 String prefLang = ctx.getSharedPreferences("exo_preference", 0).getString("exo_prf_localize", "");
291
292 assertFalse("Saved language should not be empty", prefLang.equals(""));
293
294 setLanguageInPreferences(ctx, "");
295 }
296
297 @Test
298 public void shouldRedirectToLoginScreen() throws Exception {
299
300 ExoAccount srv = getServerWithDefaultValues();
301 srv.isAutoLoginEnabled = false;
302 srv.isRememberEnabled = false;
303
304 setDefaultServerInPreferences(ctx, srv);
305
306 create();
307
308 ShadowActivity sActivity = shadowOf(activity);
309 Intent loginIntent = sActivity.getNextStartedActivity();
310 ShadowIntent sIntent = shadowOf(loginIntent);
311
312 assertThat(sIntent.getComponent().getClassName(), equalTo(LoginActivity.class.getName()));
313
314 }
315
316 }