chaijs / chai-things

Chai support for assertions on array elements
http://chaijs.com/plugins/chai-things
Other
104 stars 14 forks source link

Boolean support is brittle #42

Open kasperlewau opened 8 years ago

kasperlewau commented 8 years ago

I have two use cases that will not pass with the following versions: chai@^3.5.0, chai-things@^0.2.0 and mocha@^2.4.5.

Expect all array items to be of type boolean.

Possible duplicate of #16

const bools = [false, true, false];
expect(bools).to.all.be.a('boolean');

// ERROR: expected false to be a boolean

Workaround:

expect(bools).to.all.satisfy(bool => typeof bool === 'boolean');

Expect all array items to be true (or, false).

const truths = [true, true, true];
expect(truths).to.all.be.true;

// ERROR: expected true to be true

Workaround:

expect(truths.includes(!true)).to.be.true;

If I can find the time on my hands to get a PR rolling for this, I'd be more than happy to. If for whatever reason I can't, I'd ❤️ whomever does find the time and energy to do so!

meeber commented 8 years ago

@kasperlewau Thanks for the issue. I took a glance at the code earlier and I believe the problem is that the all and something functionality is only added to Chai's regular assertion methods, not its chainable assertion methods, which includes an. If this is indeed the case, then this issue is actually responsible for #14, #16, and #25.

meeber commented 8 years ago

@keithamus This one needs a "PR Wanted" also.

keithamus commented 8 years ago

@meeber added. Are you not able to create labels?

meeber commented 8 years ago

@keithamus Nope. Need to be added to the chai-things team I think.