import SubmitBar from 'packages/submit-bar';
import { mount } from 'avoriaz';
import { DOMChecker } from '../utils';

describe('SubmitBar', () => {
  let wrapper;
  afterEach(() => {
    wrapper && wrapper.destroy();
  });

  it('default', () => {
    const props = {
      price: 3050,
      buttonText: '提交订单',
      tip: '您的收货地址不支持同城送, 我们已为您推荐快递'
    };

    wrapper = mount(SubmitBar, {
      propsData: props
    });

    DOMChecker(wrapper, {
      text: {
        '.van-button__text': props.buttonText,
        '.van-submit-bar__price-interger': '¥30.',
        '.van-submit-bar__price-decimal': '50',
        '.van-submit-bar__tip': props.tip
      }
    });
  });

  it('no tip', () => {
    wrapper = mount(SubmitBar, {
      propsData: {
        price: 3005,
        buttonText: '提交订单',
        buttonType: 'default'
      }
    });

    DOMChecker(wrapper, {
      text: {
        '.van-button__text': '提交订单',
        '.van-submit-bar__price-interger': '¥30.',
        '.van-submit-bar__price-decimal': '05',
        '.van-submit-bar__tip': ''
      }
    });
  });

  it('handle submit', () => {
    wrapper = mount(SubmitBar, {
      propsData: {
        price: 3005,
        buttonText: '提交订单'
      }
    });

    const submitSpyFunc = sinon.spy();
    wrapper.vm.$on('submit', submitSpyFunc);
    wrapper.find('.van-button')[0].trigger('click');
    setTimeout(() => {
      expect(submitSpyFunc.calledOnce).to.be.true;
    }, 300);
  });

  it('can not submit when disabled', () => {
    wrapper = mount(SubmitBar, {
      propsData: {
        disabled: true,
        buttonText: '提交订单'
      }
    });

    const submitSpyFunc = sinon.spy();
    wrapper.vm.$on('submit', submitSpyFunc);
    wrapper.find('.van-button')[0].trigger('click');
    setTimeout(() => {
      expect(submitSpyFunc.calledOnce).to.be.false;
    }, 300);
  });

  it('can not submit when loading', () => {
    wrapper = mount(SubmitBar, {
      propsData: {
        loading: true,
        buttonText: '提交订单'
      }
    });

    const submitSpyFunc = sinon.spy();
    wrapper.vm.$on('submit', submitSpyFunc);
    wrapper.find('.van-button')[0].trigger('click');
    setTimeout(() => {
      expect(submitSpyFunc.calledOnce).to.be.false;
    }, 300);
  });
});