Skip to content

Commit

Permalink
Achieve 100% test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
gugu committed Jan 25, 2019
1 parent bbd7911 commit 7365f13
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
2 changes: 1 addition & 1 deletion packages/snackbar/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ export class Snackbar extends React.Component<Props, State> {
return this.foundation.getTimeoutMs();
}
getCloseOnEscape() {
return this.foundation.getTimeoutMs();
return this.foundation.getCloseOnEscape();
}
isOpen() {
return this.foundation.isOpen();
Expand Down
4 changes: 4 additions & 0 deletions scripts/karma/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ module.exports = {
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['mocha'],
browserConsoleLogOptions: {
level: 'log'
},


// list of files / patterns to load in the browser
Expand Down Expand Up @@ -75,6 +78,7 @@ module.exports = {
},

client: {
captureConsole: true,
mocha: {
reporter: 'html',
ui: 'qunit',
Expand Down
51 changes: 51 additions & 0 deletions test/unit/snackbar/index.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,55 +10,106 @@ test('classNames adds classes', () => {
const wrapper = shallow(<Snackbar className='test-class-name' message='example' />);
assert.isTrue(wrapper.hasClass('test-class-name'));
assert.isTrue(wrapper.hasClass('mdc-snackbar'));
wrapper.unmount();
});

test('does not render actions block if no actions sent', () => {
const wrapper = shallow(<Snackbar message='example' />);
assert.equal(wrapper.find('.mdc-snackbar__actions').length, 0);
wrapper.unmount();
});

test('sets timeoutMs', () => {
const wrapper = shallow<Snackbar>(<Snackbar timeoutMs={5000} message='example' />);
assert.equal(wrapper.instance().getTimeoutMs(), 5000);
wrapper.unmount();
});

test('sets timeoutMs', () => {
const wrapper = shallow<Snackbar>(<Snackbar closeOnEscape={true} message='example' />);
assert.equal(wrapper.instance().getCloseOnEscape(), true);
wrapper.unmount();
});

test('renders actions', () => {
const wrapper = shallow(<Snackbar message='example' actionText='action' />);
assert.equal(wrapper.find('.mdc-snackbar__actions').length, 1);
assert.equal(wrapper.find('.mdc-snackbar__action').length, 1);
wrapper.unmount();
});

test('renders leading actions', () => {
const wrapper = shallow(<Snackbar leading={true} message='example' actionText='action' />);
assert.isTrue(wrapper.hasClass('mdc-snackbar'));
assert.isTrue(wrapper.hasClass('mdc-snackbar--leading'));
wrapper.unmount();
});

test('renders stacked actions', () => {
const wrapper = shallow(<Snackbar stacked={true} message='example' actionText='action' />);
assert.isTrue(wrapper.hasClass('mdc-snackbar'));
assert.isTrue(wrapper.hasClass('mdc-snackbar--stacked'));
wrapper.unmount();
});

test('opening notification works', () => {
const openingHandler = td.func<() => void>();
const wrapper = shallow<Snackbar>(<Snackbar open={false} onOpening={openingHandler} message='example' actionText='action' />);
wrapper.instance().foundation.adapter_.notifyOpening()
td.verify(openingHandler(), {times: 1});
wrapper.unmount();
});

test('open notification works', () => {
const openHandler = td.func<() => void>();
const wrapper = shallow<Snackbar>(<Snackbar open={false} onOpen={openHandler} message='example' actionText='action' />);
wrapper.instance().foundation.adapter_.notifyOpened()
td.verify(openHandler(), {times: 1});
wrapper.unmount();
});

test('closing notification works', () => {
const closingHandler = td.func<(reason: string) => void>();
const wrapper = shallow<Snackbar>(<Snackbar open={false} onClosing={closingHandler} message='example' actionText='action' />);
wrapper.instance().foundation.adapter_.notifyClosing('unit_test')
td.verify(closingHandler('unit_test'), {times: 1});
wrapper.unmount();
});

test('close notification works', () => {
const closeHandler = td.func<(reason: string) => void>();
const wrapper = shallow<Snackbar>(<Snackbar open={false} onClose={closeHandler} message='example' actionText='action' />);
wrapper.instance().foundation.adapter_.notifyClosed('unit_test')
td.verify(closeHandler('unit_test'), {times: 1});
wrapper.unmount();
});

test('close method works', () => {
const wrapper = shallow<Snackbar>(<Snackbar message='example' actionText='action' />);
wrapper.instance().close('unit_test');
assert.equal(wrapper.instance().isOpen(), false);
wrapper.unmount();
});

test('announce works', () => {
const announceHandler = td.func<() => void>();
const wrapper = shallow<Snackbar>(<Snackbar onAnnounce={announceHandler} message='example' />);
td.verify(announceHandler(), {times: 1});
wrapper.unmount();
});

test('handleKeyDown method works', () => {
const wrapper = shallow<Snackbar>(<Snackbar open={false} message='example' actionText='action' />);
wrapper.simulate('keydown', {
nativeEvent: {},
});
wrapper.unmount();
});

test('handleActionClick method works', () => {
const wrapper = shallow<Snackbar>(<Snackbar open={false} message='example' actionText='action' />);
wrapper.find('.mdc-snackbar__action').simulate('click', {
nativeEvent: {},
});
wrapper.unmount();
});

0 comments on commit 7365f13

Please sign in to comment.