| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- import { compile } from '../src'
- function compileWithWrapper(src: string) {
- return compile(`<div>${src}</div>`)
- }
- describe('ssr: v-model', () => {
- test('<input> (text types)', () => {
- expect(compileWithWrapper(`<input v-model="bar">`).code)
- .toMatchInlineSnapshot(`
- "const { ssrRenderAttr: _ssrRenderAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input\${
- _ssrRenderAttr(\\"value\\", _ctx.bar)
- }></div>\`)
- }"
- `)
- expect(compileWithWrapper(`<input type="email" v-model="bar">`).code)
- .toMatchInlineSnapshot(`
- "const { ssrRenderAttr: _ssrRenderAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input type=\\"email\\"\${
- _ssrRenderAttr(\\"value\\", _ctx.bar)
- }></div>\`)
- }"
- `)
- })
- test('<input type="radio">', () => {
- expect(
- compileWithWrapper(`<input type="radio" value="foo" v-model="bar">`).code
- ).toMatchInlineSnapshot(`
- "const { ssrLooseEqual: _ssrLooseEqual, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input type=\\"radio\\" value=\\"foo\\"\${
- (_ssrIncludeBooleanAttr(_ssrLooseEqual(_ctx.bar, \\"foo\\"))) ? \\" checked\\" : \\"\\"
- }></div>\`)
- }"
- `)
- })
- test('<input type="checkbox">', () => {
- expect(compileWithWrapper(`<input type="checkbox" v-model="bar">`).code)
- .toMatchInlineSnapshot(`
- "const { ssrLooseContain: _ssrLooseContain, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input type=\\"checkbox\\"\${
- (_ssrIncludeBooleanAttr((Array.isArray(_ctx.bar))
- ? _ssrLooseContain(_ctx.bar, null)
- : _ctx.bar)) ? \\" checked\\" : \\"\\"
- }></div>\`)
- }"
- `)
- expect(
- compileWithWrapper(`<input type="checkbox" value="foo" v-model="bar">`)
- .code
- ).toMatchInlineSnapshot(`
- "const { ssrLooseContain: _ssrLooseContain, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input type=\\"checkbox\\" value=\\"foo\\"\${
- (_ssrIncludeBooleanAttr((Array.isArray(_ctx.bar))
- ? _ssrLooseContain(_ctx.bar, \\"foo\\")
- : _ctx.bar)) ? \\" checked\\" : \\"\\"
- }></div>\`)
- }"
- `)
- expect(
- compileWithWrapper(
- `<input type="checkbox" :true-value="foo" :false-value="bar" v-model="baz">`
- ).code
- ).toMatchInlineSnapshot(`
- "const { ssrLooseEqual: _ssrLooseEqual, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input type=\\"checkbox\\"\${
- (_ssrIncludeBooleanAttr(_ssrLooseEqual(_ctx.baz, _ctx.foo))) ? \\" checked\\" : \\"\\"
- }></div>\`)
- }"
- `)
- expect(
- compileWithWrapper(
- `<input type="checkbox" true-value="foo" false-value="bar" v-model="baz">`
- ).code
- ).toMatchInlineSnapshot(`
- "const { ssrLooseEqual: _ssrLooseEqual, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input type=\\"checkbox\\"\${
- (_ssrIncludeBooleanAttr(_ssrLooseEqual(_ctx.baz, \\"foo\\"))) ? \\" checked\\" : \\"\\"
- }></div>\`)
- }"
- `)
- })
- test('<textarea>', () => {
- expect(compileWithWrapper(`<textarea v-model="foo">bar</textarea>`).code)
- .toMatchInlineSnapshot(`
- "const { ssrRenderAttrs: _ssrRenderAttrs, ssrInterpolate: _ssrInterpolate } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><textarea>\${
- _ssrInterpolate(_ctx.foo)
- }</textarea></div>\`)
- }"
- `)
- })
- test('<input :type="x">', () => {
- expect(compileWithWrapper(`<input :type="x" v-model="foo">`).code)
- .toMatchInlineSnapshot(`
- "const { ssrRenderAttr: _ssrRenderAttr, ssrRenderDynamicModel: _ssrRenderDynamicModel, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input\${
- _ssrRenderAttr(\\"type\\", _ctx.x)
- }\${
- _ssrRenderDynamicModel(_ctx.x, _ctx.foo, null)
- }></div>\`)
- }"
- `)
- expect(
- compileWithWrapper(`<input :type="x" v-model="foo" value="bar">`).code
- ).toMatchInlineSnapshot(`
- "const { ssrRenderAttr: _ssrRenderAttr, ssrRenderDynamicModel: _ssrRenderDynamicModel, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input\${
- _ssrRenderAttr(\\"type\\", _ctx.x)
- }\${
- _ssrRenderDynamicModel(_ctx.x, _ctx.foo, \\"bar\\")
- } value=\\"bar\\"></div>\`)
- }"
- `)
- expect(
- compileWithWrapper(`<input :type="x" v-model="foo" :value="bar">`).code
- ).toMatchInlineSnapshot(`
- "const { ssrRenderAttr: _ssrRenderAttr, ssrRenderDynamicModel: _ssrRenderDynamicModel, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input\${
- _ssrRenderAttr(\\"type\\", _ctx.x)
- }\${
- _ssrRenderDynamicModel(_ctx.x, _ctx.foo, _ctx.bar)
- }\${
- _ssrRenderAttr(\\"value\\", _ctx.bar)
- }></div>\`)
- }"
- `)
- })
- test('<input v-bind="obj">', () => {
- expect(compileWithWrapper(`<input v-bind="obj" v-model="foo">`).code)
- .toMatchInlineSnapshot(`
- "const { mergeProps: _mergeProps } = require(\\"vue\\")
- const { ssrRenderAttrs: _ssrRenderAttrs, ssrGetDynamicModelProps: _ssrGetDynamicModelProps } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- let _temp0
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input\${
- _ssrRenderAttrs((_temp0 = _ctx.obj, _mergeProps(_temp0, _ssrGetDynamicModelProps(_temp0, _ctx.foo))))
- }></div>\`)
- }"
- `)
- expect(
- compileWithWrapper(`<input id="x" v-bind="obj" v-model="foo" class="y">`)
- .code
- ).toMatchInlineSnapshot(`
- "const { mergeProps: _mergeProps } = require(\\"vue\\")
- const { ssrRenderAttrs: _ssrRenderAttrs, ssrGetDynamicModelProps: _ssrGetDynamicModelProps } = require(\\"vue/server-renderer\\")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- let _temp0
- _push(\`<div\${
- _ssrRenderAttrs(_attrs)
- }><input\${
- _ssrRenderAttrs((_temp0 = _mergeProps({ id: \\"x\\" }, _ctx.obj, { class: \\"y\\" }), _mergeProps(_temp0, _ssrGetDynamicModelProps(_temp0, _ctx.foo))))
- }></div>\`)
- }"
- `)
- })
- })
|