]> git.ipfire.org Git - thirdparty/vuejs/router.git/commitdiff
test: add basic ssr test
authorEduardo San Martin Morote <posva13@gmail.com>
Tue, 12 May 2020 14:26:02 +0000 (16:26 +0200)
committerEduardo San Martin Morote <posva13@gmail.com>
Tue, 12 May 2020 14:26:02 +0000 (16:26 +0200)
__tests__/ssr.spec.ts [new file with mode: 0644]
package.json
yarn.lock

diff --git a/__tests__/ssr.spec.ts b/__tests__/ssr.spec.ts
new file mode 100644 (file)
index 0000000..d4b9f24
--- /dev/null
@@ -0,0 +1,58 @@
+/**
+ * @jest-environment node
+ */
+import { createRouter, createMemoryHistory } from '../src'
+import { createSSRApp, resolveComponent, Component } from 'vue'
+import {
+  renderToString,
+  ssrInterpolate,
+  ssrRenderComponent,
+} from '@vue/server-renderer'
+
+describe('SSR', () => {
+  it('works', async () => {
+    const Home = {
+      ssrRender(ctx: any, push: any) {
+        push('Home')
+      },
+    }
+    const Page = {
+      ssrRender(ctx: any, push: any) {
+        push(`${ssrInterpolate(ctx.$route.fullPath)}`)
+      },
+    }
+
+    const router = createRouter({
+      history: createMemoryHistory(),
+      routes: [
+        { path: '/', component: Home },
+        {
+          path: '/:id',
+          component: Page,
+        },
+      ],
+    })
+    const App = {
+      ssrRender(ctx: any, push: any, parent: any) {
+        push(
+          ssrRenderComponent(
+            resolveComponent('router-view') as Component,
+            null,
+            null,
+            parent
+          )
+        )
+      },
+    }
+    const app = createSSRApp(App)
+    app.use(router)
+    // const rootEl = document.createElement('div')
+    // document.body.appendChild(rootEl)
+
+    router.push('/hello')
+    await router.isReady()
+
+    const xxx = await renderToString(app)
+    expect(xxx).toMatchInlineSnapshot(`"/hello"`)
+  })
+})
index ffede521500307ba48fc5ceab9f87b82b3fe5133..e5db126c8384c74b50bfff6877abc0e3e032fd40 100644 (file)
@@ -75,6 +75,7 @@
     "@types/webpack": "^4.41.12",
     "@types/webpack-env": "^1.15.2",
     "@vue/compiler-sfc": "3.0.0-beta.12",
+    "@vue/server-renderer": "^3.0.0-beta.12",
     "axios": "^0.19.2",
     "browserstack-local": "^1.4.5",
     "chalk": "^4.0.0",
index c47f592df453d639479812fe5340e3a6085c85e0..4017ec9adfd02a85250c78c63f9c3091e3b3f339 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
     "@vue/shared" "3.0.0-beta.12"
     csstype "^2.6.8"
 
+"@vue/server-renderer@^3.0.0-beta.12":
+  version "3.0.0-beta.12"
+  resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.0.0-beta.12.tgz#a649aa5704cfc6b0140c9e90a3801f15c4b467e9"
+  integrity sha512-ssuF4VNDoCTQ/upeT195bfplgOlg2MMgI46C41v93QrrWs/21O2ksnsdfMWhe+qu+XdhFiZLe/Q7KWLCLgL5wA==
+  dependencies:
+    "@vue/compiler-ssr" "3.0.0-beta.12"
+    "@vue/shared" "3.0.0-beta.12"
+
 "@vue/shared@3.0.0-beta.12":
   version "3.0.0-beta.12"
   resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.0-beta.12.tgz#cb7a2bb047919d2c944bf822032b0a8aa869ba1d"