Skip to content

Commit a88d9bb

Browse files
lmiller1990eddyerburgh
authored andcommitted
feat(hasClass): allow hasClass to compare multiple classes (#123)
* Support multiple classes in `hasClass` * Remove unneccessary temp varible and fix linting * Use every instead of reduce and map * Revert package.json changes * Add test for wrapper.element = undefined * Update to include test for wrapper.element is null * Restore original package.json and package-lock.json * Remove commented out line * Update package.json
1 parent 08f58ee commit a88d9bb

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

src/wrappers/wrapper.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,11 @@ export default class Wrapper implements BaseWrapper {
109109
targetClass = this.vm.$style[targetClass]
110110
}
111111

112-
return !!(this.element && this.element.classList.contains(targetClass))
112+
const containsAllClasses = targetClass
113+
.split(' ')
114+
.every(target => this.element.classList.contains(target))
115+
116+
return !!(this.element && containsAllClasses)
113117
}
114118

115119
/**

test/unit/specs/mount/Wrapper/hasClass.spec.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,6 @@ describe('hasClass', () => {
2121
expect(wrapper.hasClass('class-name')).to.equal(false)
2222
})
2323

24-
it('returns false if wrapper does not have an element', () => {
25-
const compiled = compileToFunctions('<div />')
26-
const wrapper = mount(compiled)
27-
wrapper.element = null
28-
expect(wrapper.hasClass('not-class-name')).to.equal(false)
29-
})
30-
3124
it('throws an error if selector is not a string', () => {
3225
const compiled = compileToFunctions('<div />')
3326
const wrapper = mount(compiled)
@@ -46,4 +39,17 @@ describe('hasClass', () => {
4639

4740
expect(wrapper.hasClass('color-red')).to.equal(true)
4841
})
42+
43+
it('returns false if wrapper does not contain element', () => {
44+
const wrapper = mount({ render: (h) => h('div.a-class.b-class') })
45+
const div = wrapper.find('div')
46+
div.element = null
47+
expect(wrapper.hasClass('a-class b-class')).to.equal(false)
48+
})
49+
50+
it('returns true when the element contains multiple classes', () => {
51+
const compiled = compileToFunctions('<div class="a-class b-class" />')
52+
const wrapper = mount(compiled)
53+
expect(wrapper.hasClass('a-class b-class')).to.equal(true)
54+
})
4955
})

0 commit comments

Comments
 (0)