Skip to content

Commit 1ee1fa0

Browse files
committed
test: ensure Wrapper.setChecked() is a no-op for selected radios
Selecting already-selected radio buttons or checking already-checked checkboxes should not trigger events.
1 parent 771075f commit 1ee1fa0

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

test/specs/wrapper/setChecked.spec.js

+30-8
Original file line numberDiff line numberDiff line change
@@ -57,22 +57,22 @@ describeWithShallowAndMount('setChecked', mountingMethod => {
5757

5858
it('should trigger a change event when called on a checkbox', () => {
5959
const listeners = { change: sinon.spy() }
60-
const input = mountingMethod({
61-
template: `<input type="checkbox" v-on="$listeners">`,
62-
}, { listeners })
6360

64-
input.setChecked()
61+
mountingMethod(
62+
{ template: `<input type="checkbox" v-on="$listeners">` },
63+
{ listeners },
64+
).setChecked()
6565

6666
expect(listeners.change).to.have.been.called
6767
});
6868

6969
it('should not trigger a change event if the checkbox is already checked', () => {
7070
const listeners = { change: sinon.spy() }
71-
const input = mountingMethod({
72-
template: `<input type="checkbox" checked v-on="$listeners">`,
73-
}, { listeners })
7471

75-
input.setChecked()
72+
mountingMethod(
73+
{ template: `<input type="checkbox" checked v-on="$listeners">` },
74+
{ listeners },
75+
).setChecked()
7676

7777
expect(listeners.change).not.to.have.been.called
7878
});
@@ -111,6 +111,28 @@ describeWithShallowAndMount('setChecked', mountingMethod => {
111111
expect(wrapper.find('.counter').text()).to.equal('4')
112112
})
113113

114+
it('should trigger a change event when called on a radio button', () => {
115+
const listeners = { change: sinon.spy() }
116+
117+
mountingMethod(
118+
{ template: `<input type="radio" v-on="$listeners">` },
119+
{ listeners },
120+
).setChecked()
121+
122+
expect(listeners.change).to.have.been.called
123+
});
124+
125+
it('should not trigger a change event if the radio button is already selected', () => {
126+
const listeners = { change: sinon.spy() }
127+
128+
mountingMethod(
129+
{ template: `<input type="radio" checked v-on="$listeners">` },
130+
{ listeners },
131+
).setChecked()
132+
133+
expect(listeners.change).not.to.have.been.called
134+
});
135+
114136
it('throws error if checked param is not boolean', () => {
115137
const message = 'wrapper.setChecked() must be passed a boolean'
116138
const wrapper = mountingMethod(ComponentWithInput)

0 commit comments

Comments
 (0)