avatar.spec.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import { createTest, createVue, destroyVM, wait } from '../util';
  2. import Avatar from 'packages/avatar';
  3. import { IMAGE_SUCCESS, IMAGE_FAIL } from '../mocks/uri';
  4. describe('Avatar', () => {
  5. let vm;
  6. afterEach(() => {
  7. destroyVM(vm);
  8. });
  9. it('create', () => {
  10. vm = createTest(Avatar);
  11. expect(vm.$el).to.exist;
  12. });
  13. it('size is number', () => {
  14. vm = createVue({
  15. template: `
  16. <el-avatar :size="50">
  17. </el-avatar>
  18. `
  19. }, true);
  20. const avatarElm = vm.$el;
  21. expect(avatarElm.style.height).to.equal('50px');
  22. });
  23. it('size is string', () => {
  24. vm = createVue({
  25. template: `
  26. <el-avatar size="small">
  27. user
  28. </el-avatar>
  29. `
  30. }, true);
  31. const avatarElm = vm.$el;
  32. expect(avatarElm.classList.contains('el-avatar--small')).to.be.true;
  33. });
  34. it('shape', () => {
  35. vm = createVue({
  36. template: `
  37. <el-avatar size="small" shape="square">
  38. user
  39. </el-avatar>
  40. `
  41. }, true);
  42. const avatarElm = vm.$el;
  43. expect(avatarElm.classList.contains('el-avatar--square')).to.be.true;
  44. });
  45. it('icon avatar', () => {
  46. vm = createVue({
  47. template: `
  48. <el-avatar icon="el-icon-user-solid">
  49. </el-avatar>
  50. `
  51. }, true);
  52. const avatarElm = vm.$el;
  53. const iconELm = avatarElm.children[0];
  54. expect(avatarElm.classList.contains('el-avatar--icon')).to.be.true;
  55. expect(iconELm.classList.contains('el-icon-user-solid')).to.be.true;
  56. });
  57. it('image avatar', () => {
  58. vm = createVue({
  59. template: `
  60. <el-avatar src="${IMAGE_SUCCESS}"></el-avatar>
  61. `
  62. }, true);
  63. const imgElm = vm.$el.children[0];
  64. expect(imgElm.tagName.toUpperCase()).to.equal('IMG');
  65. expect(imgElm.src).to.equal(IMAGE_SUCCESS);
  66. });
  67. it('image fallback', async() => {
  68. vm = createVue({
  69. template: `
  70. <el-avatar src="${IMAGE_FAIL}" @error="errorHandler">
  71. fallback
  72. </el-avatar>
  73. `,
  74. methods: {
  75. errorHandler() {
  76. return true;
  77. }
  78. }
  79. }, true);
  80. await wait();
  81. const avatarElm = vm.$el;
  82. expect(avatarElm.textContent.trim()).to.equal('fallback');
  83. });
  84. it('image fit', async() => {
  85. vm = createVue({
  86. template: `
  87. <div>
  88. <el-avatar :src="url"></el-avatar>
  89. <el-avatar :src="url" v-for="fit in fits" :fit="fit" :key="fit"></el-avatar>
  90. </div>
  91. `,
  92. data() {
  93. return {
  94. fits: ['fill', 'contain', 'cover', 'none', 'scale-down'],
  95. url: IMAGE_SUCCESS
  96. };
  97. }
  98. }, true);
  99. await wait();
  100. const containerElm = vm.$el;
  101. expect(containerElm.children[0].children[0].style.objectFit).to.equal('cover');
  102. expect(containerElm.children[1].children[0].style.objectFit).to.equal('fill');
  103. expect(containerElm.children[2].children[0].style.objectFit).to.equal('contain');
  104. expect(containerElm.children[3].children[0].style.objectFit).to.equal('cover');
  105. expect(containerElm.children[4].children[0].style.objectFit).to.equal('none');
  106. expect(containerElm.children[5].children[0].style.objectFit).to.equal('scale-down');
  107. });
  108. });