avatar.spec.js 3.3 KB

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