@@ -105,4 +105,93 @@ describe('SwiftDocCRenderRouter', () => {
105
105
window . dispatchEvent ( new Event ( 'unload' ) ) ;
106
106
expect ( saveScrollOnReload ) . toHaveBeenCalledTimes ( 1 ) ;
107
107
} ) ;
108
+
109
+ describe ( 'route resolving' , ( ) => {
110
+ let router ;
111
+
112
+ beforeAll ( ( ) => {
113
+ jest . resetModules ( ) ;
114
+ jest . unmock ( 'vue-router' ) ;
115
+ // eslint-disable-next-line global-require
116
+ router = require ( 'docc-render/setup-utils/SwiftDocCRenderRouter' ) . default ( ) ;
117
+ } ) ;
118
+
119
+ const resolve = path => router . resolve ( path ) . route ;
120
+
121
+ it ( 'resolves paths to the "tutorials-overview" route' , ( ) => {
122
+ const route = 'tutorials-overview' ;
123
+
124
+ expect ( resolve ( '/tutorials/foo' ) . name ) . toBe ( route ) ;
125
+ expect ( resolve ( '/tutorials/bar' ) . name ) . toBe ( route ) ;
126
+
127
+ expect ( resolve ( '/tutorials/foo/bar' ) . name ) . not . toBe ( route ) ;
128
+
129
+ expect ( resolve ( '/tutorials/documentation' ) . name ) . toBe ( route ) ;
130
+ } ) ;
131
+
132
+ it ( 'resolves paths to the "tutorials-overview-locale" route' , ( ) => {
133
+ const route = 'tutorials-overview-locale' ;
134
+
135
+ expect ( resolve ( '/en-US/tutorials/foobar' ) . name ) . toBe ( route ) ;
136
+ expect ( resolve ( '/ja-JP/tutorials/foobarbaz' ) . params ) . toEqual ( {
137
+ id : 'foobarbaz' ,
138
+ locale : 'ja-JP' ,
139
+ } ) ;
140
+ expect ( resolve ( '/zh-CN/tutorials/foo/bar' ) . name ) . not . toBe ( route ) ;
141
+ } ) ;
142
+
143
+ it ( 'resolves paths to the "topic" route' , ( ) => {
144
+ const route = 'topic' ;
145
+ expect ( resolve ( '/tutorials/foo/bar' ) . name ) . toBe ( route ) ;
146
+ expect ( resolve ( '/tutorials/foobar/baz' ) . name ) . toBe ( route ) ;
147
+ expect ( resolve ( '/tutorials/documentation/foo' ) . name ) . toBe ( route ) ;
148
+ } ) ;
149
+
150
+ it ( 'resolves paths to the "topic-locale" route' , ( ) => {
151
+ const route = 'topic-locale' ;
152
+
153
+ expect ( resolve ( '/en-US/tutorials/foo/bar' ) . name ) . toBe ( route ) ;
154
+ expect ( resolve ( '/ja-JP/tutorials/foo/bar' ) . params ) . toEqual ( {
155
+ id : 'foo' ,
156
+ locale : 'ja-JP' ,
157
+ pathMatch : 'bar' ,
158
+ } ) ;
159
+ expect ( resolve ( '/zh-CN/tutorials/foo/bar/baz' ) . params ) . toEqual ( {
160
+ id : 'foo' ,
161
+ locale : 'zh-CN' ,
162
+ pathMatch : 'bar/baz' ,
163
+ } ) ;
164
+ } ) ;
165
+
166
+ it ( 'resolves paths to the "documentation-topic" route' , ( ) => {
167
+ const route = 'documentation-topic' ;
168
+
169
+ expect ( resolve ( '/documentation/foo' ) . name ) . toBe ( route ) ;
170
+ expect ( resolve ( '/documentation/bar' ) . name ) . toBe ( route ) ;
171
+ expect ( resolve ( '/documentation/foobar' ) . params . pathMatch ) . toBe ( 'foobar' ) ;
172
+
173
+ expect ( resolve ( '/documentation/tutorials' ) . name ) . toBe ( route ) ;
174
+ expect ( resolve ( '/documentation/tutorials' ) . params . pathMatch ) . toBe ( 'tutorials' ) ;
175
+ } ) ;
176
+
177
+ it ( 'resolves paths to the "documentation-topic-locale" route' , ( ) => {
178
+ const route = 'documentation-topic-locale' ;
179
+
180
+ expect ( resolve ( '/en-US/documentation/foo' ) . name ) . toBe ( route ) ;
181
+ expect ( resolve ( '/en-US/documentation/foo' ) . params ) . toEqual ( {
182
+ locale : 'en-US' ,
183
+ pathMatch : 'foo' ,
184
+ } ) ;
185
+ expect ( resolve ( '/ja-JP/documentation/bar' ) . name ) . toBe ( route ) ;
186
+ expect ( resolve ( '/ja-JP/documentation/bar' ) . params ) . toEqual ( {
187
+ locale : 'ja-JP' ,
188
+ pathMatch : 'bar' ,
189
+ } ) ;
190
+ expect ( resolve ( '/zh-CN/documentation/baz' ) . name ) . toBe ( route ) ;
191
+ expect ( resolve ( '/zh-CN/documentation/baz/qux' ) . params ) . toEqual ( {
192
+ locale : 'zh-CN' ,
193
+ pathMatch : 'baz/qux' ,
194
+ } ) ;
195
+ } ) ;
196
+ } ) ;
108
197
} ) ;
0 commit comments