1
+ describe ( 'localized messages' , function ( ) {
2
+
3
+ var $locale , localizedMessages , messages ;
4
+ beforeEach ( function ( ) {
5
+ angular . module ( 'test' , [ 'services.localizedMessages' ] )
6
+ . value ( 'I18N.MESSAGES' , messages = { } )
7
+ . constant ( 'I18N.DEFAULT_LOCALE' , 'en-us' ) ;
8
+ module ( 'test' ) ;
9
+ } ) ;
10
+ beforeEach ( inject ( function ( _$locale_ , _localizedMessages_ ) {
11
+ $locale = _$locale_ ;
12
+ localizedMessages = _localizedMessages_ ;
13
+ } ) ) ;
14
+
15
+ describe ( 'messages for the current locale' , function ( ) {
16
+
17
+ it ( 'should return a localized message if defined' , function ( ) {
18
+ messages [ 'en-us' ] = { existing :'Existing message!' } ;
19
+ expect ( localizedMessages . get ( 'existing' ) ) . toEqual ( 'Existing message!' ) ;
20
+ } ) ;
21
+
22
+ it ( 'should return a message key surrounded by a question mark for non-existing messages' , function ( ) {
23
+ expect ( localizedMessages . get ( 'non.existing' ) ) . toEqual ( '?non.existing?' ) ;
24
+ } ) ;
25
+ } ) ;
26
+
27
+ describe ( 'messages for a specified locale' , function ( ) {
28
+
29
+ it ( 'should return a message for a specified locale if exists' , function ( ) {
30
+ messages [ 'fr-fr' ] = { sth :'quelque chose' } ;
31
+ expect ( localizedMessages . getForLocale ( 'sth' , 'fr-fr' ) ) . toEqual ( 'quelque chose' ) ;
32
+ } ) ;
33
+
34
+ it ( 'should return a message from the default locale if doesnt exist in a specified one' , function ( ) {
35
+ messages [ 'en-us' ] = { sth :'something' } ;
36
+ expect ( localizedMessages . getForLocale ( 'sth' , 'fr-fr' ) ) . toEqual ( 'something' ) ;
37
+ } ) ;
38
+
39
+ it ( 'should allow using forLocale even for the current locale' , function ( ) {
40
+ messages [ 'en-us' ] = { sth :'something' } ;
41
+ expect ( localizedMessages . getForLocale ( 'sth' , 'en-us' ) ) . toEqual ( 'something' ) ;
42
+ } ) ;
43
+
44
+ it ( 'should return a message key surrounded by a question mark for non-existing messages when locale was specified' , function ( ) {
45
+ expect ( localizedMessages . getForLocale ( 'sth' , 'fr-fr' ) ) . toEqual ( '?sth?' ) ;
46
+ } ) ;
47
+ } ) ;
48
+
49
+ describe ( 'interpolation of message parameters' , function ( ) {
50
+
51
+ it ( 'should interpolate parameters for the current locale' , function ( ) {
52
+ messages [ 'en-us' ] = { sth :'en {{param}} us' } ;
53
+ expect ( localizedMessages . get ( 'sth' , { param :'value' } ) ) . toEqual ( 'en value us' ) ;
54
+ } ) ;
55
+
56
+ it ( 'should interpolate parameters for a specified locale' , function ( ) {
57
+ messages [ 'en-us' ] = { sth :'en {{param}} us' } ;
58
+ expect ( localizedMessages . getForLocale ( 'sth' , 'en-us' , { param :'value' } ) ) . toEqual ( 'en value us' ) ;
59
+ } ) ;
60
+
61
+ it ( 'should not break for missing params' , function ( ) {
62
+ messages [ 'en-us' ] = { sth :'en {{param}} us' } ;
63
+ expect ( localizedMessages . getForLocale ( 'sth' , 'en-us' ) ) . toEqual ( 'en us' ) ;
64
+ expect ( localizedMessages . getForLocale ( 'sth' , 'en-us' , { other :'value' } ) ) . toEqual ( 'en us' ) ;
65
+
66
+ expect ( localizedMessages . get ( 'sth' ) ) . toEqual ( 'en us' ) ;
67
+ expect ( localizedMessages . get ( 'sth' , { other :'value' } ) ) . toEqual ( 'en us' ) ;
68
+ } ) ;
69
+
70
+ } ) ;
71
+ } ) ;
0 commit comments