Skip to content

Commit fd5a29c

Browse files
Populate fixtures using Vue 3
Based on <https://vuejs.org/guide/scaling-up/ssr.html#rendering-an-app>.
1 parent a057cb8 commit fd5a29c

File tree

5 files changed

+13
-23
lines changed

5 files changed

+13
-23
lines changed

package.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
{
22
"name": "php-vuejs-templating",
3-
"dependencies": {},
43
"devDependencies": {
5-
"vue": "^2.3.4",
6-
"vue-server-renderer": "^2.3.4",
7-
"cheerio": "^0.22.0"
4+
"cheerio": "^0.22.0",
5+
"vue": "^3.2.41"
86
},
97
"scripts": {
108
"populate-fixtures": "node tests/integration/populate_fixtures_with_expected_results.js"

tests/integration/fixture/gloss_widget.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,5 @@
4545
</script>
4646
<div id="result">
4747
<!-- generated by `npm run-script populate-fixtures` -->
48-
<div class="wikibase-lexeme-sense-glosses"><div class="wikibase-lexeme-sense-glosses-list"><table class="wikibase-lexeme-sense-glosses-table"><tbody><tr class="wikibase-lexeme-sense-gloss"><td class="wikibase-lexeme-sense-gloss-language"><span>en</span></td> <td class="wikibase-lexeme-sense-gloss-value"><span dir="auto" lang="en">english gloss <span class="wikibase-lexeme-sense-glosses-sense-id">(S1)</span></span></td></tr><tr class="wikibase-lexeme-sense-gloss"><td class="wikibase-lexeme-sense-gloss-language"><span>fr</span></td> <td class="wikibase-lexeme-sense-gloss-value"><span dir="auto" lang="fr">french gloss <span class="wikibase-lexeme-sense-glosses-sense-id">(S1)</span></span></td></tr></tbody> <!----></table></div> <div class="wikibase-lexeme-sense-glosses-controls"><button type="button" class="wikibase-lexeme-sense-glosses-control">wikibase-edit</button> <!----> <!----></div></div>
48+
<div class="wikibase-lexeme-sense-glosses"><div class="wikibase-lexeme-sense-glosses-list"><table class="wikibase-lexeme-sense-glosses-table"><tbody><!--[--><tr class="wikibase-lexeme-sense-gloss"><td class="wikibase-lexeme-sense-gloss-language"><span>en</span></td><td class="wikibase-lexeme-sense-gloss-value"><span dir="auto" lang="en">english gloss <span class="wikibase-lexeme-sense-glosses-sense-id">(S1)</span></span></td></tr><tr class="wikibase-lexeme-sense-gloss"><td class="wikibase-lexeme-sense-gloss-language"><span>fr</span></td><td class="wikibase-lexeme-sense-gloss-value"><span dir="auto" lang="fr">french gloss <span class="wikibase-lexeme-sense-glosses-sense-id">(S1)</span></span></td></tr><!--]--></tbody><!----></table></div><div class="wikibase-lexeme-sense-glosses-controls"><button type="button" class="wikibase-lexeme-sense-glosses-control">wikibase-edit</button><!----><!----></div></div>
4949
</div>

tests/integration/fixture/lemma_widget.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,5 @@
4545
</script>
4646
<div id="result">
4747
<!-- generated by `npm run-script populate-fixtures` -->
48-
<div class="lemma-widget"><ul class="lemma-widget_lemma-list"><li class="lemma-widget_lemma"><span class="lemma-widget_lemma-value">lemma1</span> <span class="lemma-widget_lemma-language">en</span></li><li class="lemma-widget_lemma"><span class="lemma-widget_lemma-value">lémma2</span> <span class="lemma-widget_lemma-language">fr</span></li><li class="lemma-widget_lemma"><span class="lemma-widget_lemma-value">기본형</span> <span class="lemma-widget_lemma-language">ko</span></li><li class="lemma-widget_lemma"><span class="lemma-widget_lemma-value">Лемма</span> <span class="lemma-widget_lemma-language">ru</span></li><li class="lemma-widget_lemma"><span class="lemma-widget_lemma-value">لليما</span> <span class="lemma-widget_lemma-language">ar</span></li></ul> <div class="lemma-widget_controls"><button type="button" class="lemma-widget_control">wikibase-edit</button> <!----> <!----></div></div>
48+
<div class="lemma-widget"><ul class="lemma-widget_lemma-list"><!--[--><li class="lemma-widget_lemma"><span class="lemma-widget_lemma-value">lemma1</span><span class="lemma-widget_lemma-language">en</span></li><li class="lemma-widget_lemma"><span class="lemma-widget_lemma-value">lémma2</span><span class="lemma-widget_lemma-language">fr</span></li><li class="lemma-widget_lemma"><span class="lemma-widget_lemma-value">기본형</span><span class="lemma-widget_lemma-language">ko</span></li><li class="lemma-widget_lemma"><span class="lemma-widget_lemma-value">Лемма</span><span class="lemma-widget_lemma-language">ru</span></li><li class="lemma-widget_lemma"><span class="lemma-widget_lemma-value">لليما</span><span class="lemma-widget_lemma-language">ar</span></li><!--]--></ul><div class="lemma-widget_controls"><button type="button" class="lemma-widget_control">wikibase-edit</button><!----><!----></div></div>
4949
</div>

tests/integration/fixture/simple.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99
</script>
1010
<div id="result">
1111
<!-- generated by `npm run-script populate-fixtures` -->
12-
<div><p></p> <div><a href="URL">link</a></div></div>
12+
<div><p></p><div><a href="URL">link</a></div></div>
1313
</div>

tests/integration/populate_fixtures_with_expected_results.js

+8-16
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
var Vue = require( 'vue' );
1+
const { createSSRApp } = require( 'vue' );
22
const cheerio = require( 'cheerio' );
3-
const renderer = require( 'vue-server-renderer' ).createRenderer();
3+
const { renderToString } = require( 'vue/server-renderer' );
44
const fs = require( 'fs' );
55

66
const fixtureDir = __dirname + '/fixture';
@@ -37,21 +37,13 @@ function extractDataFromFixture( html ) {
3737
}
3838

3939
function renderTemplate( fixtureData ) {
40-
return new Promise( function ( resolve, reject ) {
41-
const app = new Vue( {
42-
template: fixtureData.template,
43-
data: fixtureData.data,
44-
methods: defaultMethods
45-
} );
46-
47-
renderer.renderToString( app, function ( err, html ) {
48-
if ( err ) {
49-
reject( err )
50-
} else {
51-
resolve( html );
52-
}
53-
} );
40+
const app = createSSRApp( {
41+
template: fixtureData.template,
42+
data: () => fixtureData.data,
43+
methods: defaultMethods
5444
} );
45+
46+
return renderToString( app );
5547
}
5648

5749
function removeServerRenderedDataAttribute( html ) {

0 commit comments

Comments
 (0)