@@ -114,4 +114,136 @@ describe('mdjsStoryParse', () => {
114
114
const result = await parser . process ( input ) ;
115
115
expect ( result . contents ) . to . equal ( expected ) ;
116
116
} ) ;
117
+
118
+ it ( 'will wrap following story-code blocks' , async ( ) => {
119
+ const input = [
120
+ '```js preview-story' ,
121
+ 'export const foo = () => {};' ,
122
+ '```' ,
123
+ '' ,
124
+ '```swift story-code' ,
125
+ 'CODE for iOS' ,
126
+ '```' ,
127
+ '' ,
128
+ '```xml story-code' ,
129
+ 'CODE for Android' ,
130
+ '```' ,
131
+ ] . join ( '\n' ) ;
132
+
133
+ const expected = [
134
+ '<mdjs-preview mdjs-story-name="foo">' ,
135
+ '' ,
136
+ '' ,
137
+ '' ,
138
+ '<pre><code class="language-js">export const foo = () => {};' ,
139
+ '</code></pre>' ,
140
+ '<pre><code class="language-swift">CODE for iOS' ,
141
+ '</code></pre>' ,
142
+ '<pre><code class="language-xml">CODE for Android' ,
143
+ '</code></pre>' ,
144
+ '' ,
145
+ '' ,
146
+ '' ,
147
+ '</mdjs-preview>' ,
148
+ '' ,
149
+ ] . join ( '\n' ) ;
150
+
151
+ const parser = unified ( ) . use ( markdown ) . use ( mdjsStoryParse ) . use ( html ) ;
152
+ const result = await parser . process ( input ) ;
153
+ expect ( result . contents ) . to . equal ( expected ) ;
154
+ } ) ;
155
+
156
+ it ( 'will wrap following story-code blocks also for html stories' , async ( ) => {
157
+ const input = [
158
+ '```html preview-story' ,
159
+ '<my-el></my-el>' ,
160
+ '```' ,
161
+ '' ,
162
+ '```swift story-code' ,
163
+ 'CODE for iOS' ,
164
+ '```' ,
165
+ '' ,
166
+ '```xml story-code' ,
167
+ 'CODE for Android' ,
168
+ '```' ,
169
+ ] . join ( '\n' ) ;
170
+
171
+ const expected = [
172
+ '<mdjs-preview mdjs-story-name="HtmlStory0">' ,
173
+ '' ,
174
+ '' ,
175
+ '' ,
176
+ '<pre><code class="language-html"><my-el></my-el>' ,
177
+ '</code></pre>' ,
178
+ '<pre><code class="language-swift">CODE for iOS' ,
179
+ '</code></pre>' ,
180
+ '<pre><code class="language-xml">CODE for Android' ,
181
+ '</code></pre>' ,
182
+ '' ,
183
+ '' ,
184
+ '' ,
185
+ '</mdjs-preview>' ,
186
+ '' ,
187
+ ] . join ( '\n' ) ;
188
+
189
+ const parser = unified ( ) . use ( markdown ) . use ( mdjsStoryParse ) . use ( html ) ;
190
+ const result = await parser . process ( input ) ;
191
+ expect ( result . contents ) . to . equal ( expected ) ;
192
+ } ) ;
193
+
194
+ it ( 'will wrap only following story-code blocks' , async ( ) => {
195
+ const input = [
196
+ '```js preview-story' ,
197
+ 'export const foo = () => {};' ,
198
+ '```' ,
199
+ '```swift story-code' ,
200
+ 'CODE for iOS' ,
201
+ '```' ,
202
+ '# hey' ,
203
+ '```swift story-code' ,
204
+ 'SHOULD BE OUTSIDE' ,
205
+ '```' ,
206
+ '```js preview-story' ,
207
+ 'export const foo2 = () => {};' ,
208
+ '```' ,
209
+ '```xml story-code' ,
210
+ 'CODE for Android' ,
211
+ '```' ,
212
+ ] . join ( '\n' ) ;
213
+
214
+ const expected = [
215
+ '<mdjs-preview mdjs-story-name="foo">' ,
216
+ '' ,
217
+ '' ,
218
+ '' ,
219
+ '<pre><code class="language-js">export const foo = () => {};' ,
220
+ '</code></pre>' ,
221
+ '<pre><code class="language-swift">CODE for iOS' ,
222
+ '</code></pre>' ,
223
+ '' ,
224
+ '' ,
225
+ '' ,
226
+ '</mdjs-preview>' ,
227
+ '<h1>hey</h1>' ,
228
+ '<pre><code class="language-swift">SHOULD BE OUTSIDE' ,
229
+ '</code></pre>' ,
230
+ '<mdjs-preview mdjs-story-name="foo2">' ,
231
+ '' ,
232
+ '' ,
233
+ '' ,
234
+ '<pre><code class="language-js">export const foo2 = () => {};' ,
235
+ '</code></pre>' ,
236
+ '<pre><code class="language-xml">CODE for Android' ,
237
+ '</code></pre>' ,
238
+ '' ,
239
+ '' ,
240
+ '' ,
241
+ '</mdjs-preview>' ,
242
+ '' ,
243
+ ] . join ( '\n' ) ;
244
+
245
+ const parser = unified ( ) . use ( markdown ) . use ( mdjsStoryParse ) . use ( html ) ;
246
+ const result = await parser . process ( input ) ;
247
+ expect ( result . contents ) . to . equal ( expected ) ;
248
+ } ) ;
117
249
} ) ;
0 commit comments