refactor(components): [card] switch to script-setup syntax (#6071)

This commit is contained in:
bqy 2022-02-23 20:52:27 +08:00 committed by GitHub
parent d6c3a0db41
commit 7928a4d214
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 65 deletions

View File

@ -5,66 +5,46 @@ const AXIOM = 'Rem is the best girl'
describe('Card.vue', () => {
test('render test', () => {
const wrapper = mount(Card, {
slots: {
default: AXIOM,
},
})
const wrapper = mount(() => <Card>{AXIOM}</Card>)
expect(wrapper.text()).toEqual(AXIOM)
})
test('string header', () => {
const header = 'I am header'
const wrapper = mount(Card, {
slots: {
default: AXIOM,
},
props: {
header,
},
})
const wrapper = mount(() => <Card header={header}>{AXIOM}</Card>)
expect(wrapper.text()).toContain(header)
})
test('vnode header', () => {
const headerCls = 'header-text'
const btnCls = 'test-btn'
const wrapper = mount(Card, {
slots: {
default: AXIOM,
header: `<div>
<span class="${headerCls}">card header</span>
<button class="${btnCls}">click me</button>
</div>`,
},
})
const wrapper = mount(() => (
<Card
v-slots={{
default: () => AXIOM,
header: () => (
<div>
<span class={headerCls}>card header</span>
<button class={btnCls}>click me</button>
</div>
),
}}
/>
))
expect(wrapper.find('.header-text').exists()).toBe(true)
expect(wrapper.find('.test-btn').exists()).toBe(true)
})
test('body style', () => {
const style = 'font-size: 14px;'
const wrapper = mount(Card, {
props: {
slots: {
default: AXIOM,
},
bodyStyle: style,
},
})
const wrapper = mount(() => <Card bodyStyle={style}>{AXIOM}</Card>)
expect(wrapper.find('.el-card__body').attributes('style')).toBe(style)
})
test('body style with object', () => {
const style = { 'font-size': '14px' }
const wrapper = mount(Card, {
props: {
slots: {
default: AXIOM,
},
bodyStyle: style,
},
})
const wrapper = mount(() => <Card bodyStyle={style}>{AXIOM}</Card>)
expect(wrapper.find('.el-card__body').attributes('style')).toBe(
'font-size: 14px;'
)
@ -72,14 +52,7 @@ describe('Card.vue', () => {
test('body style with array', () => {
const style = [{ 'font-size': '14px' }, { color: 'blue' }]
const wrapper = mount(Card, {
props: {
slots: {
default: AXIOM,
},
bodyStyle: style,
},
})
const wrapper = mount(() => <Card bodyStyle={style}>{AXIOM}</Card>)
expect(
wrapper.find('.el-card__body').attributes('style').replace(/[ ]/g, '')
).toBe('font-size:14px;color:blue;')
@ -87,14 +60,7 @@ describe('Card.vue', () => {
test('shadow', () => {
const shadow = 'test-shadow'
const wrapper = mount(Card, {
props: {
slots: {
default: AXIOM,
},
shadow,
},
})
const wrapper = mount(() => <Card shadow={shadow}>{AXIOM}</Card>)
expect(wrapper.find(`.is-${shadow}-shadow`).exists()).toBe(true)
})

View File

@ -8,20 +8,15 @@
</div>
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
<script lang="ts" setup>
import { useNamespace } from '@element-plus/hooks'
import { cardProps } from './card'
export default defineComponent({
defineOptions({
name: 'ElCard',
props: cardProps,
setup() {
const ns = useNamespace('card')
return {
ns,
}
},
})
defineProps(cardProps)
const ns = useNamespace('card')
</script>