Skip to content

Commit 97abec6

Browse files
committed
Removed params, helpers and getFirst
elements can be accesed by this.elements
1 parent cd1f1e3 commit 97abec6

7 files changed

Lines changed: 45 additions & 35 deletions

File tree

src/middleware/find.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ export default function find(selector){
1212
}
1313
else elements = TestUtils.scryRenderedDOMComponentsWithTag(this.instance, selector)
1414

15-
if(elements.length === 1) elements = elements[0]
16-
if(!this.helpers.elements) this.helpers.elements = []
17-
this.helpers.elements[name || selector] = elements
15+
if (Array.isArray(elements) && elements.length === 1) {
16+
this.elements[name || selector] = elements[0]
17+
} else {
18+
this.elements[name || selector] = elements
19+
}
1820
}

src/middleware/simulate.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
import React from 'react'
22
let { TestUtils } = React.addons
33

4-
export default function simulate(data){
5-
let element = data.element ? this.helpers.elements[data.element] : this
6-
element = Array.isArray(element) ? element[0] : element
4+
export default function simulate(data) {
5+
let element
6+
if (data.element !== undefined ) {
7+
element = Array.isArray(this.elements[data.element]) ?
8+
this.elements[data.element][0] : this.elements[data.element]
9+
} else {
10+
throw new Error(`No element "${data.element}" is in elements`)
11+
}
712
TestUtils.Simulate[data.method].call(this,
813
element,
914
data.options || null

src/tests.js

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,28 @@ function Test(component, config) {
1515
instance = TestUtils.renderIntoDocument(component)
1616
}
1717

18-
function getFirst(object) {
19-
for (let element in object)
20-
return object[element]
21-
}
22-
2318
const testComponent = {
2419
instance,
25-
helpers: {},
26-
params() {
27-
const length = Object.keys(this.helpers).length
28-
if (this.helpers.elements && length === 1) {
29-
return Object.assign({}, this, this.helpers.elements)
30-
}
31-
return this
32-
},
20+
elements: {},
3321
element(select, callback) {
34-
if (!this.helpers) return
35-
3622
let element
3723
if (typeof select === 'string') {
38-
element = this.helpers.elements[select]
24+
element = this.elements[select]
3925
callback.call(this, element)
4026
return this
4127
}
4228

43-
element = getFirst(this.helpers.elements)
44-
select.call(this, element)
29+
if (Array.isArray(select)) {
30+
const args = select.map(elem => this.elements[elem])
31+
callback.call(this, ...args)
32+
return this
33+
}
34+
35+
if (Object.keys(this.elements).length === 1) {
36+
select.call(this, this.elements[Object.keys(this.elements)[0]])
37+
} else {
38+
throw new Error("There are multiple elements select one")
39+
}
4540
return this
4641
},
4742
use(callback, data) {
@@ -58,7 +53,7 @@ function Test(component, config) {
5853
return this
5954
},
6055
test(callback) {
61-
const param = this.params()
56+
const param = {...this, ...this.elements}
6257
callback.call(param, param)
6358
return this
6459
},

tests/element.jsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,14 @@ describe('.element', () => {
2626
expect(div.length).to.be.equal(2)
2727
})
2828
})
29+
30+
it('should select multiple elements', () => {
31+
Test(<TestComponent />)
32+
.find('.box')
33+
.find('div')
34+
.element(['box', 'div'], (box, div) => {
35+
expect(div.length).to.be.equal(2)
36+
expect(box.props.children).to.be.equal('found me!')
37+
})
38+
})
2939
})

tests/find.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ describe('Find middleware', () => {
1212
Test(<TestComponent/>)
1313
.find('div')
1414
.test(function() {
15-
expect(this.helpers.elements.div[0].props.children).to.be.equal(undefined)
15+
expect(this.elements.div[0].props.children).to.be.equal(undefined)
1616
})
1717
})
1818

1919
it('should find p tag with class', () => {
2020
Test(<TestComponent/>)
2121
.use(Find, '.box')
2222
.test(function() {
23-
expect(this.helpers.elements.box.props.children).to.be.equal('found me!')
23+
expect(this.elements.box.props.children).to.be.equal('found me!')
2424
})
2525

2626
Test(<TestComponent/>)

tests/setState.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ describe('setState middleware', () => {
1212
Test(<TestComponent />)
1313
.use(SetState, {test: 'test'})
1414
.use(Find, 'div')
15-
.test(({helpers}) => {
16-
expect(helpers.elements.div[0].props.children).to.be.equal('test')
15+
.test(({elements}) => {
16+
expect(elements.div[0].props.children).to.be.equal('test')
1717
})
1818
.setState({test: 'changed!'})
1919
.test(function() {

tests/simulate.jsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ describe('simulate middleware', () => {
1515
Test(<TestComponent onClick={spy}/>)
1616
.use(Find, 'div')
1717
.use(Simulate, {method: 'click', element: 'div'})
18-
.test(() => {
19-
expect(spy.called).to.be.true
20-
})
18+
19+
expect(spy.called).to.be.true
2120

2221
})
2322

@@ -27,9 +26,8 @@ describe('simulate middleware', () => {
2726
Test(<TestComponent onClick={spy}/>)
2827
.find('button')
2928
.simulate({method: 'click', element: 'button'})
30-
.test(function() {
31-
expect(spy.called).to.be.true
32-
})
29+
30+
expect(spy.called).to.be.true
3331

3432
})
3533

0 commit comments

Comments
 (0)