zhenyulei 7 年 前
コミット
acd6f5a9ba
3 ファイル変更62 行追加14 行削除
  1. 1 1
      package.json
  2. 57 10
      src/packages/tab/__test__/tab.spec.js
  3. 4 3
      src/packages/tab/tab.vue

+ 1 - 1
package.json

@@ -24,7 +24,7 @@
     "build": "npm run build:prod && npm run build:prodmin && npm run build:disp",
     "eslint": "eslint src/packages/**/*.{js,vue}",
     "add": "node scripts/createCptTpl.js",
-    "test": "cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text  mocha-webpack --webpack-config build/webpack.test.conf.js --require test/setup.js src/packages/*/__test__/**.spec.js",
+    "test": "cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text  mocha-webpack --webpack-config build/webpack.test.conf.js --require test/setup.js src/packages/tab/__test__/**.spec.js",
     "coveralls": "cat ./coverage/lcov.info | coveralls",
     "test:watch": "npm run test --watch"
   },

+ 57 - 10
src/packages/tab/__test__/tab.spec.js

@@ -4,15 +4,62 @@ import Vue from 'vue';
 
 
 describe('Tab.vue', () => {
+    const wrapper = mount(Tab);
+    it('页签类型为based', () => {
+        wrapper.setProps({ type: 'based' });
+        return Vue.nextTick().then(function () {
+            expect(wrapper.contains('.based')).toBe(true);
+        })
+    });
+    
+    it('当前tab的位置', () => {
+        wrapper.setProps({ positionNav: 'left' });
+        return Vue.nextTick().then(function () {
+            expect(wrapper.contains('.nut-tab')).toBe(true);
+            
+        })
+    });
 
-    //const wrapper = mount(Tab);
-    // it('页签类型为based', () => {
-    //     wrapper.setProps({ type: 'based' });
-
-    //     return Vue.nextTick().then(function () {
-    //         expect(wrapper.contains('.based')).toBe(true);
-    //     })
-
-    // });
-
+    it('禁止选择第一个标签', () => {
+        wrapper.setData({ tabTitleList: [
+            {
+              tabTitle: "衣物",
+              disable: false,
+              iconUrl:
+                "http://img13.360buyimg.com/uba/jfs/t27280/289/2061314663/2392/872e32ff/5bf76318Ndc80c1d8.jpg",
+              content: "<p>衣物内容</p>"
+            },
+            {
+              tabTitle: "日用品",
+              iconUrl:
+                "http://img13.360buyimg.com/uba/jfs/t30331/209/562746340/2190/6619973d/5bf763aaN6ff02099.jpg",
+              content: "<p>日用品内容</p>"
+            },
+            {
+              tabTitle: "运动器材",
+              iconUrl:
+                "http://img20.360buyimg.com/uba/jfs/t30346/262/553689202/2257/5dfa3983/5bf76407N72deabf4.jpg",
+              content: "<p>运动器材内容</p>"
+            },
+            {
+              tabTitle: "电影票",
+              iconUrl:
+                "http://img10.360buyimg.com/uba/jfs/t26779/215/2118525153/2413/470d1613/5bf767b2N075957b7.jpg",
+              content: "<p>电影票内容</p>"
+            }
+          ] });
+             setTimeout(()=>{
+                return Vue.nextTick().then(function () {
+                        expect(wrapper.findAll('.nut-title-nav-leftnav').at(0).is('.nut-tab-disable')).toBe(true)
+                })
+            },10) 
+    });
+    it('当前默认选中的tab', () => {
+        wrapper.setProps({ defIndex: 0 });
+        setTimeout(()=>{
+            return Vue.nextTick().then(function () {
+                    expect(wrapper.findAll('.nut-title-nav-list').at(1).is('.nut-tab-active')).toBe(true)
+            })
+        },20)
+    });
 });

+ 4 - 3
src/packages/tab/tab.vue

@@ -123,7 +123,7 @@ export default {
                 let slot = [...this.$slots.default];
                 this.tabTitleList = [];
                 this.initTab(slot); 
-            },0);
+            },50);    
         }
     },
     computed:{
@@ -139,8 +139,9 @@ export default {
         },
     },
     mounted() {
-        let slot = [...this.$slots.default];
-        this.initTab(slot);   
+        this.$nextTick(()=>{
+            this.$slots.default && this.initTab(this.$slots.default); 
+        })     
     },
     methods: {
         closeItem:function(value){