@@ -37,6 +37,42 @@ const testCases = [
37
37
'block__element-mod1 block__element-mod2' ,
38
38
] ,
39
39
} ,
40
+ {
41
+ description : '`namespace` option' ,
42
+ tested : ( ) => block ( 'block' , { namespace : 'ns' } ) ,
43
+ expectations : [
44
+ 'ns-block' ,
45
+ 'ns-block--mod1' ,
46
+ 'ns-block--mod1 ns-block--mod2' ,
47
+ 'ns-block__element' ,
48
+ 'ns-block__element--mod1' ,
49
+ 'ns-block__element--mod1 ns-block__element--mod2' ,
50
+ ] ,
51
+ } ,
52
+ {
53
+ description : '`namespaceDelimiter` option' ,
54
+ tested : ( ) => block ( 'block' , { namespace : 'ns' , namespaceDelimiter : '---' } ) ,
55
+ expectations : [
56
+ 'ns---block' ,
57
+ 'ns---block--mod1' ,
58
+ 'ns---block--mod1 ns---block--mod2' ,
59
+ 'ns---block__element' ,
60
+ 'ns---block__element--mod1' ,
61
+ 'ns---block__element--mod1 ns---block__element--mod2' ,
62
+ ] ,
63
+ } ,
64
+ {
65
+ description : '`namespaceDelimiter` option without `namespace` option' ,
66
+ tested : ( ) => block ( 'block' , { namespaceDelimiter : '---' } ) ,
67
+ expectations : [
68
+ 'block' ,
69
+ 'block--mod1' ,
70
+ 'block--mod1 block--mod2' ,
71
+ 'block__element' ,
72
+ 'block__element--mod1' ,
73
+ 'block__element--mod1 block__element--mod2' ,
74
+ ] ,
75
+ } ,
40
76
{
41
77
description : '`prefix` option' ,
42
78
tested : ( ) => block ( 'block' , { prefix : 'pre---' } ) ,
@@ -55,17 +91,19 @@ const testCases = [
55
91
setup ( {
56
92
elementDelimiter : '_' ,
57
93
modifierDelimiter : '-' ,
58
- prefix : 'pre---' ,
94
+ namespace : 'ns' ,
95
+ namespaceDelimiter : '---' ,
96
+ // prefix: 'pre---',
59
97
} )
60
98
return block ( 'block' )
61
99
} ,
62
100
expectations : [
63
- 'pre ---block' ,
64
- 'pre ---block-mod1' ,
65
- 'pre ---block-mod1 pre ---block-mod2' ,
66
- 'pre ---block_element' ,
67
- 'pre ---block_element-mod1' ,
68
- 'pre ---block_element-mod1 pre ---block_element-mod2' ,
101
+ 'ns ---block' ,
102
+ 'ns ---block-mod1' ,
103
+ 'ns ---block-mod1 ns ---block-mod2' ,
104
+ 'ns ---block_element' ,
105
+ 'ns ---block_element-mod1' ,
106
+ 'ns ---block_element-mod1 ns ---block_element-mod2' ,
69
107
] ,
70
108
} ,
71
109
]
@@ -104,14 +142,33 @@ testCases.forEach(({ description, tested, expectations }) => {
104
142
} )
105
143
} )
106
144
107
- describe ( '`setup()` additional cases' , ( ) => {
145
+ describe ( '`namespace` and `prefix` at the same time' , ( ) => {
146
+ it ( 'throws `TypeError`' , ( ) => {
147
+ const b = block ( 'block' , { namespace : 'ns' , prefix : 'pre' } )
148
+ expect ( ( ) => b ( ) ) . toThrow ( TypeError )
149
+ expect ( ( ) => b ( ) ) . toThrow ( "prefix('pre') is deprecated. Use namespace('ns') instead." )
150
+ } )
151
+ } )
152
+
153
+ // `setup()` test must be at last
154
+ describe ( '`setup()` additional case' , ( ) => {
108
155
it ( 'overrides options which was setup' , ( ) => {
109
- const b = block ( 'block' , { elementDelimiter : ':' , modifierDelimiter : '/' , prefix : 'p-' } )
110
- expect ( b ( 'element' , { mod : true } ) ) . toBe ( 'p-block:element/mod' )
156
+ const b = block ( 'block' , {
157
+ elementDelimiter : ':' ,
158
+ modifierDelimiter : '/' ,
159
+ namespace : 'n' ,
160
+ namespaceDelimiter : '=' ,
161
+ } )
162
+ expect ( b ( 'element' , { mod : true } ) ) . toBe ( 'n=block:element/mod' )
111
163
} )
112
164
113
165
it ( 'has no effect when empty options are passed' , ( ) => {
114
166
setup ( { } )
115
- expect ( block ( 'block' ) ( 'element' , { mod : true } ) ) . toBe ( 'pre---block_element-mod' )
167
+ expect ( block ( 'block' ) ( 'element' , { mod : true } ) ) . toBe ( 'ns---block_element-mod' )
168
+ } )
169
+
170
+ it ( '`prefix` option [deprecated]' , ( ) => {
171
+ setup ( { prefix : 'pre:' , namespace : '' } )
172
+ expect ( block ( 'block' ) ( 'element' , { mod : true } ) ) . toBe ( 'pre:block_element-mod' )
116
173
} )
117
174
} )
0 commit comments