aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/page-container/page-container-footer/tests/page-container-footer.component.test.js
blob: 64efabab0935f9b2cee9f6315107f57a34cee1a1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import React from 'react'
import assert from 'assert'
import { shallow } from 'enzyme'
import sinon from 'sinon'
import Button from '../../../button'
import PageFooter from '../page-container-footer.component'

describe('Page Footer', () => {
  let wrapper
  const onCancel = sinon.spy()
  const onSubmit = sinon.spy()

  beforeEach(() => {
    wrapper = shallow(<PageFooter
      onCancel = {onCancel}
      onSubmit = {onSubmit}
      cancelText = {'Cancel'}
      submitText = {'Submit'}
      disabled = {false}
      submitButtonType = {'Test Type'}
    />)
  })

  it('renders page container footer', () => {
    assert.equal(wrapper.find('.page-container__footer').length, 1)
  })

  it('should render a footer inside page-container__footer when given children', () => {
    const wrapper = shallow(
      <PageFooter>
        <div>Works</div>
      </PageFooter>,
      { context: { t: sinon.spy((k) => `[${k}]`) } }
    )

    assert.equal(wrapper.find('.page-container__footer footer').length, 1)
  })

  it('renders two button components', () => {
    assert.equal(wrapper.find(Button).length, 2)
  })

  describe('Cancel Button', () => {

    it('has button type of default', () => {
      assert.equal(wrapper.find('.page-container__footer-button').first().prop('type'), 'default')
    })

    it('has children text of Cancel', () => {
      assert.equal(wrapper.find('.page-container__footer-button').first().prop('children'), 'Cancel')
    })

    it('should call cancel when click is simulated', () => {
      wrapper.find('.page-container__footer-button').first().prop('onClick')()
      assert.equal(onCancel.callCount, 1)
    })

  })

  describe('Submit Button', () => {

    it('assigns button type based on props', () => {
      assert.equal(wrapper.find('.page-container__footer-button').last().prop('type'), 'Test Type')
    })

    it('has disabled prop', () => {
      assert.equal(wrapper.find('.page-container__footer-button').last().prop('disabled'), false)
    })

    it('has children text when submitText prop exists', () => {
      assert.equal(wrapper.find('.page-container__footer-button').last().prop('children'), 'Submit')
    })

    it('should call submit when click is simulated', () => {
      wrapper.find('.page-container__footer-button').last().prop('onClick')()
      assert.equal(onSubmit.callCount, 1)
    })
  })
})