use-form-item.test.tsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { defineComponent, provide } from 'vue'
  2. import { NOOP } from '@vue/shared'
  3. import { mount } from '@vue/test-utils'
  4. import { describe, expect, it } from 'vitest'
  5. import { ElButton, buttonGroupContextKey } from '@element-plus/components'
  6. import {
  7. formContextKey,
  8. formItemContextKey,
  9. } from '@element-plus/components/form'
  10. import type {
  11. FormContext,
  12. FormItemContext,
  13. } from '@element-plus/components/form'
  14. const AXIOM = 'Rem is the best girl'
  15. const mountComponent = (setup = NOOP, options = {}) =>
  16. mount(
  17. defineComponent({
  18. setup,
  19. render() {
  20. return <ElButton {...this.$attrs}>{AXIOM}</ElButton>
  21. },
  22. }),
  23. options
  24. )
  25. describe('use-form-item', () => {
  26. it('should return local value', () => {
  27. const wrapper = mountComponent()
  28. expect(wrapper.find('.el-button').exists()).toBe(true)
  29. })
  30. it('should return props.size instead of injected.size', () => {
  31. const propSize = 'small'
  32. const wrapper = mountComponent(
  33. () => {
  34. provide(formItemContextKey, {
  35. size: 'large',
  36. } as FormItemContext)
  37. },
  38. {
  39. props: { size: propSize },
  40. }
  41. )
  42. expect(wrapper.find(`.el-button--${propSize}`).exists()).toBe(true)
  43. })
  44. it('should return fallback.size instead inject.size', () => {
  45. const fallbackSize = 'small'
  46. const wrapper = mountComponent(() => {
  47. provide(buttonGroupContextKey, {
  48. size: fallbackSize,
  49. })
  50. provide(formItemContextKey, {
  51. size: 'large',
  52. } as FormItemContext)
  53. })
  54. expect(wrapper.find(`.el-button--${fallbackSize}`).exists()).toBe(true)
  55. })
  56. it('should return formItem.size instead form.size', () => {
  57. const itemSize = 'small'
  58. const wrapper = mountComponent(() => {
  59. provide(formItemContextKey, {
  60. size: itemSize,
  61. } as FormItemContext)
  62. provide(formContextKey, {
  63. size: 'large',
  64. } as FormContext)
  65. })
  66. expect(wrapper.find(`.el-button--${itemSize}`).exists()).toBe(true)
  67. })
  68. })