skeleton.spec.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import Skeleton from 'packages/skeleton';
  2. import { createTest, destroyVM, createVue, waitImmediate, wait} from '../util';
  3. const content = 'content';
  4. describe('Skeleton.vue', () => {
  5. let vm;
  6. afterEach(() => {
  7. destroyVM(vm);
  8. });
  9. it('render test', () => {
  10. vm = createTest(Skeleton, true);
  11. const el = vm.$el;
  12. expect(el.querySelectorAll('.el-skeleton__p').length).to.equal(4);
  13. expect(Array.from(el.children[0].classList)).to.contain('el-skeleton');
  14. });
  15. it('should render with animation', () => {
  16. vm = createTest(Skeleton, {
  17. animated: true
  18. }, true);
  19. const el = vm.$el;
  20. expect(Array.from(el.children[0].classList)).to.contain('is-animated');
  21. });
  22. it('should render x times', async() => {
  23. vm = createVue(
  24. {
  25. template: `
  26. <el-skeleton :count="count"></el-skeleton>
  27. `,
  28. data() {
  29. return {
  30. count: 1
  31. };
  32. }
  33. },
  34. true
  35. );
  36. const wrapper = vm.$el;
  37. expect(wrapper.querySelectorAll('.el-skeleton__p').length).to.equal(4);
  38. vm.count = 2;
  39. await waitImmediate();
  40. expect(wrapper.querySelectorAll('.el-skeleton__p').length).to.equal(8);
  41. });
  42. it('should render x rows', () => {
  43. vm = createTest(Skeleton, {
  44. rows: 5
  45. }, true);
  46. expect(vm.$el.querySelectorAll('.el-skeleton__p').length).to.equal(5);
  47. });
  48. it('should render default slots', () => {
  49. vm = createVue(
  50. {
  51. template: `
  52. <el-skeleton :loading="loading">{{content}}</el-skeleton>
  53. `,
  54. data() {
  55. return {
  56. loading: false,
  57. content
  58. };
  59. }
  60. }, true);
  61. expect(vm.$el.textContent).to.be.equal(content);
  62. });
  63. it('should render template slots', () => {
  64. vm = createVue(
  65. {
  66. template: `
  67. <el-skeleton :loading="loading"><template slot="template">{{content}}</template></el-skeleton>
  68. `,
  69. data() {
  70. return {
  71. loading: true,
  72. content
  73. };
  74. }
  75. }, true);
  76. expect(vm.$el.querySelector('.el-skeleton').textContent).to.be.equal(content);
  77. });
  78. it('should throttle rendering', async() => {
  79. vm = createTest(Skeleton, {
  80. throttle: 500
  81. }, true);
  82. expect((vm).uiLoading).to.be.equal(false);
  83. await wait(600);
  84. expect(vm.uiLoading).to.be.equal(true);
  85. });
  86. });