chai-things icon indicating copy to clipboard operation
chai-things copied to clipboard

Boolean support is brittle

Open kasperlewau opened this issue 9 years ago • 4 comments
trafficstars

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!

kasperlewau avatar May 31 '16 11:05 kasperlewau

@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 avatar May 31 '16 13:05 meeber

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

meeber avatar Jul 24 '16 16:07 meeber

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

keithamus avatar Jul 25 '16 08:07 keithamus

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

meeber avatar Jul 25 '16 10:07 meeber