Skip to content

Commit 90e8881

Browse files
committed
Add script setup tests
1 parent 9ebb853 commit 90e8881

File tree

3 files changed

+91
-28
lines changed

3 files changed

+91
-28
lines changed

__tests__/__snapshots__/external.spec.ts.snap

Lines changed: 59 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,5 @@
11
// Vitest Snapshot v1
22

3-
exports[`external ftl file support > can read files from a directory 1`] = `
4-
"'use strict';
5-
6-
var bundle = require('@fluent/bundle');
7-
var vue = require('vue');
8-
9-
var en_ftl = new bundle.FluentResource(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\");
10-
11-
var da_ftl = new bundle.FluentResource(\\"\\");
12-
13-
function render(_ctx, _cache) {
14-
return (vue.openBlock(), vue.createElementBlock(\\"div\\", null, [
15-
vue.createElementVNode(\\"div\\", null, vue.toDisplayString(_ctx.$t('hello-user', { userName: _ctx.userName })), 1 /* TEXT */),
16-
vue.createElementVNode(\\"div\\", null, vue.toDisplayString(_ctx.$t('shared-photos', { userName: _ctx.userName, photoCount: _ctx.photoCount, userGender: _ctx.userGender })), 1 /* TEXT */)
17-
]))
18-
}
19-
20-
const script = {};
21-
22-
script.fluent = { en: en_ftl, da: da_ftl };
23-
script.render = render;
24-
script.__file = \\"__tests__/fixtures/components/external.vue\\";
25-
26-
module.exports = script;
27-
"
28-
`;
29-
303
exports[`external ftl file support > works with vue 2 1`] = `
314
"'use strict';
325
@@ -151,10 +124,69 @@ function __vue2_injectStyles (context) {
151124
this[o] = __cssModules[o];
152125
}
153126
}
127+
154128
__component__.options.fluent = { en: en_ftl, da: da_ftl };
155129
__component__.options.__file = \\"__tests__/fixtures/components/external.vue\\";
156130
var external = /*#__PURE__*/(function () { return __component__.exports })();
157131
158132
module.exports = external;
159133
"
160134
`;
135+
136+
exports[`external ftl file support > works with vue 3 1`] = `
137+
"'use strict';
138+
139+
var bundle = require('@fluent/bundle');
140+
var vue = require('vue');
141+
142+
var en_ftl = new bundle.FluentResource(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\");
143+
144+
var da_ftl = new bundle.FluentResource(\\"\\");
145+
146+
function render(_ctx, _cache) {
147+
return (vue.openBlock(), vue.createElementBlock(\\"div\\", null, [
148+
vue.createElementVNode(\\"div\\", null, vue.toDisplayString(_ctx.$t('hello-user', { userName: _ctx.userName })), 1 /* TEXT */),
149+
vue.createElementVNode(\\"div\\", null, vue.toDisplayString(_ctx.$t('shared-photos', { userName: _ctx.userName, photoCount: _ctx.photoCount, userGender: _ctx.userGender })), 1 /* TEXT */)
150+
]))
151+
}
152+
153+
const script = {};
154+
155+
156+
script.render = render;
157+
script.fluent = { en: en_ftl, da: da_ftl };
158+
script.__file = \\"__tests__/fixtures/components/external.vue\\";
159+
160+
module.exports = script;
161+
"
162+
`;
163+
164+
exports[`external ftl file support > works with vue 3 script setup 1`] = `
165+
"'use strict';
166+
167+
require('@fluent/bundle');
168+
var vue = require('vue');
169+
170+
var en_ftl = null;
171+
172+
var da_ftl = null;
173+
174+
var script = {
175+
setup(__props) {
176+
177+
return (_ctx, _cache) => {
178+
return (vue.openBlock(), vue.createElementBlock(\\"div\\", null, [
179+
vue.createElementVNode(\\"div\\", null, vue.toDisplayString(_ctx.$t('hello-user', { userName: _ctx.userName })), 1 /* TEXT */),
180+
vue.createElementVNode(\\"div\\", null, vue.toDisplayString(_ctx.$t('shared-photos', { userName: _ctx.userName, photoCount: _ctx.photoCount, userGender: _ctx.userGender })), 1 /* TEXT */)
181+
]))
182+
}
183+
}
184+
185+
};
186+
187+
script.fluent = { en: en_ftl, da: da_ftl };
188+
script.__file = \\"__tests__/fixtures/components/external.setup.vue\\";
189+
190+
module.exports = script;
191+
"
192+
`;

__tests__/external.spec.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const testBundle = async(options: RollupOptions): Promise<string> => {
2424
}
2525

2626
describe('external ftl file support', () => {
27-
it('can read files from a directory', async() => {
27+
it('works with vue 3', async() => {
2828
// Arrange
2929
// Act
3030
const code = await testBundle({
@@ -45,6 +45,27 @@ describe('external ftl file support', () => {
4545
expect(code).toMatchSnapshot()
4646
})
4747

48+
it('works with vue 3 script setup', async() => {
49+
// Arrange
50+
// Act
51+
const code = await testBundle({
52+
input: resolve(baseDir, 'fixtures/components/external.setup.vue'),
53+
plugins: [
54+
vue3(),
55+
fluentPlugin({
56+
external: {
57+
baseDir: resolve(baseDir, 'fixtures'),
58+
ftlDir: resolve(baseDir, 'fixtures/ftl'),
59+
locales: ['en', 'da'],
60+
},
61+
}),
62+
],
63+
})
64+
65+
// Assert
66+
expect(code).toMatchSnapshot()
67+
})
68+
4869
it('works with vue 2', async() => {
4970
// Arrange
5071
// Act
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<template>
2+
<div>
3+
<div>{{ $t('hello-user', { userName }) }}</div>
4+
<div>{{ $t('shared-photos', { userName, photoCount, userGender }) }}</div>
5+
</div>
6+
</template>
7+
8+
<script setup>
9+
const test = 'test'
10+
</script>

0 commit comments

Comments
 (0)