Skip to content

Commit 322e0d3

Browse files
committed
Override include method - update overriding logic
1 parent 96c1aaa commit 322e0d3

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

chai-exclude.js

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,12 @@ function chaiExclude (chai, utils) {
101101
}
102102

103103
/**
104-
* Override standard assertEqual method to remove the keys from other part of the equation.
104+
* Override standard assertion logic method to remove the keys from other part of the equation.
105105
*
106106
* @param {Object} _super
107107
* @returns {Function}
108108
*/
109-
function assertEqual (_super) {
109+
function removeKeysAndAssert (_super) {
110110
return function (val) {
111111
const props = utils.flag(this, 'excludingProps')
112112

@@ -123,6 +123,18 @@ function chaiExclude (chai, utils) {
123123
}
124124
}
125125

126+
/**
127+
* Keep standard chaining logic.
128+
*
129+
* @param {Object} _super
130+
* @returns {Function}
131+
*/
132+
function keepChainingBehavior (_super) {
133+
return function () {
134+
_super.apply(this, arguments)
135+
}
136+
}
137+
126138
/**
127139
* Add a new method 'deepEqualExcluding' to 'chai.assert'.
128140
*/
@@ -191,11 +203,16 @@ function chaiExclude (chai, utils) {
191203
utils.flag(this, 'excludingProps', props)
192204
})
193205

194-
Assertion.overwriteMethod('eq', assertEqual)
195-
Assertion.overwriteMethod('eql', assertEqual)
196-
Assertion.overwriteMethod('eqls', assertEqual)
197-
Assertion.overwriteMethod('equal', assertEqual)
198-
Assertion.overwriteMethod('equals', assertEqual)
206+
Assertion.overwriteMethod('eq', removeKeysAndAssert)
207+
Assertion.overwriteMethod('eql', removeKeysAndAssert)
208+
Assertion.overwriteMethod('eqls', removeKeysAndAssert)
209+
Assertion.overwriteMethod('equal', removeKeysAndAssert)
210+
Assertion.overwriteMethod('equals', removeKeysAndAssert)
211+
212+
Assertion.addChainableMethod('include', removeKeysAndAssert, keepChainingBehavior)
213+
Assertion.addChainableMethod('contain', removeKeysAndAssert, keepChainingBehavior)
214+
Assertion.addChainableMethod('contains', removeKeysAndAssert, keepChainingBehavior)
215+
Assertion.addChainableMethod('includes', removeKeysAndAssert, keepChainingBehavior)
199216
}
200217

201218
module.exports = chaiExclude

0 commit comments

Comments
 (0)