tabselect.spec.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. import { shallowMount, mount } from "@vue/test-utils";
  2. import TabSelect from "../tabselect.vue";
  3. import Vue from "vue";
  4. describe("TabSelect.vue", () => {
  5. const wrapper = mount(TabSelect, {
  6. propsData: {
  7. mainTitle: "配送测试",
  8. subTitle: "送达时间测试",
  9. defaultContent: [
  10. "9:00——10:00",
  11. "10:00——11:00",
  12. "11:00——12:00",
  13. "12:00——13:00",
  14. "13:00——15:00",
  15. "15:00——17:00",
  16. "17:00——19:00"
  17. ],
  18. tabList: [
  19. {
  20. tabTitle: "京东快递测试",
  21. children: [
  22. {
  23. tabTitle: "1月13日 (星期一)",
  24. content: [
  25. "11:00——12:00",
  26. "12:00——13:00",
  27. "13:00——15:00",
  28. "15:00——17:00",
  29. "17:00——19:00"
  30. ]
  31. },
  32. {
  33. tabTitle: "1月14日 (星期二)"
  34. },
  35. {
  36. tabTitle: "1月15日 (星期三)"
  37. },
  38. {
  39. tabTitle: "1月16日 (星期四)"
  40. },
  41. {
  42. tabTitle: "1月17日 (星期五)"
  43. },
  44. {
  45. tabTitle: "1月18日 (星期六)"
  46. },
  47. {
  48. tabTitle: "1月19日 (星期天)"
  49. }
  50. ]
  51. },
  52. {
  53. tabTitle: "上门自提",
  54. children: [
  55. {
  56. tabTitle: "2月13日 (星期一)",
  57. content: ["13:00——15:00", "15:00——17:00", "17:00——19:00"]
  58. },
  59. {
  60. tabTitle: "2月14日 (星期二)"
  61. },
  62. {
  63. tabTitle: "2月15日 (星期三)"
  64. },
  65. {
  66. tabTitle: "2月16日 (星期四)"
  67. },
  68. {
  69. tabTitle: "2月17日 (星期五)"
  70. },
  71. {
  72. tabTitle: "2月18日 (星期六)"
  73. },
  74. {
  75. tabTitle: "2月19日 (星期天)"
  76. }
  77. ]
  78. }
  79. ],
  80. show: true,
  81. multiple: false,
  82. isDefaultSelected: false,
  83. max: 2
  84. }
  85. });
  86. it("mainTitle标题", () => {
  87. return Vue.nextTick().then(function() {
  88. expect(
  89. wrapper
  90. .findAll(".nut-tabselect-main-title")
  91. .at(0)
  92. .text()
  93. ).toBe("配送测试");
  94. });
  95. });
  96. it("subTitle标题", () => {
  97. return Vue.nextTick().then(function() {
  98. expect(
  99. wrapper
  100. .findAll(".nut-tabselect-sub-title")
  101. .at(0)
  102. .text()
  103. ).toBe("送达时间测试");
  104. // expect(wrapper.html()).toContain(
  105. // '<div class="nut-tabselect-main-title">送达时间测试</div>'
  106. // );
  107. });
  108. });
  109. it("defaultContent默认内容", () => {
  110. return Vue.nextTick().then(function() {
  111. expect(
  112. wrapper
  113. .findAll(".nut-tab-panel-list")
  114. .at(0)
  115. .text()
  116. ).toBe("11:00——12:00");
  117. });
  118. });
  119. it("是否支持单选", () => {
  120. wrapper
  121. .findAll(".nut-tab-panel-list")
  122. .at(1)
  123. .trigger("click");
  124. wrapper
  125. .findAll(".nut-tab-panel-list")
  126. .at(2)
  127. .trigger("click");
  128. return Vue.nextTick().then(function() {
  129. expect(wrapper.findAll(".nut-tab-panel-list-active").length).toBe(1);
  130. });
  131. });
  132. it("是否支持多选", () => {
  133. wrapper.setProps({ multiple: true });
  134. wrapper
  135. .findAll(".nut-tab-panel-list")
  136. .at(1)
  137. .trigger("click");
  138. return Vue.nextTick().then(function() {
  139. expect(wrapper.findAll(".nut-tab-panel-list-active").length).toBe(2);
  140. });
  141. });
  142. it("设置max", () => {
  143. wrapper
  144. .findAll(".nut-tab-panel-list")
  145. .at(3)
  146. .trigger("click");
  147. wrapper
  148. .findAll(".nut-tab-panel-list")
  149. .at(4)
  150. .trigger("click");
  151. return Vue.nextTick().then(function() {
  152. expect(wrapper.findAll(".nut-tab-panel-list-active").length).toBe(2);
  153. });
  154. });
  155. it("tabList整体数据", () => {
  156. return Vue.nextTick().then(function() {
  157. expect(
  158. wrapper
  159. .findAll(".nut-tab-link")
  160. .at(0)
  161. .text()
  162. ).toBe("京东快递测试");
  163. });
  164. });
  165. it("设置show", () => {
  166. wrapper.setProps({ show: true });
  167. return Vue.nextTick().then(function() {
  168. expect(
  169. wrapper
  170. .findAll(".popup-box")
  171. .at(0)
  172. .attributes("display")
  173. ).toBe(undefined);
  174. });
  175. });
  176. it("设置isDefaultSelected", () => {
  177. wrapper.setProps({ isDefaultSelected: true });
  178. return Vue.nextTick().then(function() {
  179. expect(wrapper.contains(".nut-tab-panel-list-active")).toBe(true);
  180. });
  181. });
  182. });