|
@@ -1,32 +1,31 @@
|
|
|
-const { $, describe, beforeEach, afterEach, it, expect } = window;
|
|
|
+import './bootstrap-switch';
|
|
|
+
|
|
|
+const { $ } = global;
|
|
|
|
|
|
describe('Bootstrap Switch:', () => {
|
|
|
beforeEach(() => {
|
|
|
$.support.transition = false;
|
|
|
$.fx.off = true;
|
|
|
});
|
|
|
+
|
|
|
afterEach(() => {
|
|
|
$(`.${$.fn.bootstrapSwitch.defaults.baseClass}`).bootstrapSwitch('destroy');
|
|
|
});
|
|
|
|
|
|
- function createCheckbox() {
|
|
|
- return $('<input>', {
|
|
|
+ const createCheckbox = () =>
|
|
|
+ $('<input>', {
|
|
|
type: 'checkbox',
|
|
|
class: 'switch',
|
|
|
}).appendTo('body');
|
|
|
- }
|
|
|
|
|
|
- function createRadio() {
|
|
|
- return $('<input>', {
|
|
|
+ const createRadio = () =>
|
|
|
+ $('<input>', {
|
|
|
type: 'radio',
|
|
|
name: 'name',
|
|
|
class: 'switch',
|
|
|
}).appendTo('body');
|
|
|
- }
|
|
|
|
|
|
- function getOptions($element) {
|
|
|
- return $element.data('bootstrap-switch').options;
|
|
|
- }
|
|
|
+ const getOptions = $element => $element.data('bootstrap-switch').options;
|
|
|
|
|
|
it('should set the default options as element options, except state', () => {
|
|
|
const $switch = createCheckbox().prop('checked', true).bootstrapSwitch();
|
|
@@ -40,78 +39,95 @@ describe('Bootstrap Switch:', () => {
|
|
|
expect(getOptions($switch2).state).toBe(false);
|
|
|
});
|
|
|
|
|
|
- it('should something', () => {
|
|
|
+ it('should trigger the same events on element and document', () => {
|
|
|
const $switch = createCheckbox().bootstrapSwitch();
|
|
|
- let eventDoc = 0;
|
|
|
- let eventElement = 0;
|
|
|
- $(document).on('switchChange.bootstrapSwitch', ':checkbox', () => { eventDoc += 1; });
|
|
|
- $(':checkbox').on('switchChange.bootstrapSwitch', () => { eventElement += 1; });
|
|
|
- $switch.click();
|
|
|
- expect(eventElement).toEqual(eventDoc);
|
|
|
- expect(eventElement).toEqual(1);
|
|
|
+ let doc = 0;
|
|
|
+ let element = 0;
|
|
|
+ $(document).on('switchChange.bootstrapSwitch', ':checkbox', () => { doc += 1; });
|
|
|
+ $switch.on('switchChange.bootstrapSwitch', () => { element += 1; });
|
|
|
+ $switch.bootstrapSwitch('state', true);
|
|
|
+ expect(element).toBe(doc);
|
|
|
+ expect(element).toBe(1);
|
|
|
});
|
|
|
|
|
|
- describe('The Checkbox Bootstrap Switch', () => {
|
|
|
- it('should conserve its state if onSwitchChange returns false', () => {
|
|
|
+ describe('Checkbox', () => {
|
|
|
+ it('should retain state if `onSwitchChange` returns false', () => {
|
|
|
+ let shadowState = null;
|
|
|
const $switch = createCheckbox().bootstrapSwitch({
|
|
|
+ state: false,
|
|
|
onSwitchChange(event, state) {
|
|
|
- expect(state).toEqual(true);
|
|
|
+ shadowState = state;
|
|
|
return false;
|
|
|
},
|
|
|
});
|
|
|
- const $indeterminateSwitch = createCheckbox().data('indeterminate', true).bootstrapSwitch({
|
|
|
+ $switch.bootstrapSwitch('state', true);
|
|
|
+ expect(shadowState).toBe(true);
|
|
|
+ expect($switch.bootstrapSwitch('state')).toBe(false);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should retain state if `onSwitchChange` returns false when intederminate is true', () => {
|
|
|
+ let shadowState;
|
|
|
+ const $indeterminate = createCheckbox().bootstrapSwitch({
|
|
|
+ state: false,
|
|
|
onSwitchChange(event, state) {
|
|
|
- expect(state).toEqual(true);
|
|
|
+ shadowState = state;
|
|
|
return false;
|
|
|
},
|
|
|
});
|
|
|
- $switch.click();
|
|
|
- $indeterminateSwitch.click();
|
|
|
- expect($switch.bootstrapSwitch('state')).toEqual(false);
|
|
|
- expect($indeterminateSwitch.bootstrapSwitch('state')).toEqual(false);
|
|
|
+ $indeterminate.data('indeterminate', true);
|
|
|
+ $indeterminate.bootstrapSwitch('state', true);
|
|
|
+ expect(shadowState).toBe(true);
|
|
|
+ expect($indeterminate.bootstrapSwitch('state')).toBe(false);
|
|
|
});
|
|
|
|
|
|
- it('should change its state if onSwitchChange does not return false', () => {
|
|
|
+ it('should change state if `onSwitchChange` does not return false', () => {
|
|
|
+ let shadowState = null;
|
|
|
const $switch = createCheckbox().bootstrapSwitch({
|
|
|
- onSwitchChange(event, state) {
|
|
|
- expect(state).toEqual(true);
|
|
|
+ onSwitchChange: (event, state) => {
|
|
|
+ shadowState = state;
|
|
|
},
|
|
|
});
|
|
|
- $switch.click();
|
|
|
- expect($switch.bootstrapSwitch('state')).toEqual(true);
|
|
|
+ $switch.bootstrapSwitch('state', true);
|
|
|
+ expect(shadowState).toBe(true);
|
|
|
+ expect($switch.bootstrapSwitch('state')).toBe(true);
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- describe('The Radio Bootstrap Switch', () => {
|
|
|
- it('should conserve its state if onSwitchChange returns false', () => {
|
|
|
+ describe('Radio', () => {
|
|
|
+ it('should retain state if `onSwitchChange` returns false', () => {
|
|
|
const $radio1 = createRadio().prop('checked', true);
|
|
|
const $radio2 = createRadio().prop('checked', false);
|
|
|
const $radio3 = createRadio().prop('checked', false);
|
|
|
- $('[name="name"]').bootstrapSwitch({
|
|
|
- onSwitchChange(e, s) {
|
|
|
- expect(s).toEqual(true);
|
|
|
+ let shadowState = null;
|
|
|
+ $radio1.add($radio2).add($radio3).bootstrapSwitch({
|
|
|
+ onSwitchChange(event, state) {
|
|
|
+ shadowState = state;
|
|
|
return false;
|
|
|
},
|
|
|
});
|
|
|
- $radio2.click();
|
|
|
- expect($radio1.bootstrapSwitch('state')).toEqual(true);
|
|
|
- expect($radio2.bootstrapSwitch('state')).toEqual(false);
|
|
|
- expect($radio3.bootstrapSwitch('state')).toEqual(false);
|
|
|
+ $radio2.bootstrapSwitch('state', true);
|
|
|
+ expect(shadowState).toBe(true);
|
|
|
+ expect($radio1.bootstrapSwitch('state')).toBe(true);
|
|
|
+ expect($radio2.bootstrapSwitch('state')).toBe(false);
|
|
|
+ expect($radio3.bootstrapSwitch('state')).toBe(false);
|
|
|
});
|
|
|
|
|
|
- it('should change its state if onSwitchChange not returns false', () => {
|
|
|
+ it('should change its state if `onSwitchChange` does not return false', () => {
|
|
|
const $radio1 = createRadio().prop('checked', true);
|
|
|
const $radio2 = createRadio().prop('checked', false);
|
|
|
const $radio3 = createRadio().prop('checked', false);
|
|
|
- $('[name="name"]').bootstrapSwitch({
|
|
|
- onSwitchChange(e, s) {
|
|
|
- expect(s).toEqual(true);
|
|
|
+ let shadowState = null;
|
|
|
+ $radio2.bootstrapSwitch({
|
|
|
+ onSwitchChange(event, state) {
|
|
|
+ shadowState = state;
|
|
|
+ return false;
|
|
|
},
|
|
|
});
|
|
|
$radio2.click();
|
|
|
- expect($radio1.bootstrapSwitch('state')).toEqual(false);
|
|
|
- expect($radio2.bootstrapSwitch('state')).toEqual(true);
|
|
|
- expect($radio3.bootstrapSwitch('state')).toEqual(false);
|
|
|
+ expect(shadowState).toBe(true);
|
|
|
+ expect($radio1.bootstrapSwitch('state')).toBe(false);
|
|
|
+ expect($radio2.bootstrapSwitch('state')).toBe(true);
|
|
|
+ expect($radio3.bootstrapSwitch('state')).toBe(false);
|
|
|
});
|
|
|
});
|
|
|
});
|