A chai extension which allows the use of raynor marshallers in assertions.
import * as chai from 'chai'
import { raynorChai } from 'raynor-chai'
class User {
@MarshalWith(StringMarshaller)
name: string;
@MarshalWith(ArrayOf(IntegerMarshaller))
scoresByDay: number[];
totalScore(): number {
return this.scoresByDay.reduce((a,b) => a + b, 0);
}
}
chai.use(raynorChai);
const user = new User();
user.name = 'Raynor';
user.scoresByDay = [10, 20, 30];
chai.expect(user).to.be.raynor(new (MarshalFrom(User))()); // Assertion passes
const badUser = new User();
badUser.name = 'Raynor';
badUser.scoresByDay = [10, 20.5, 30];
chai.expect(badUSer).to.not.be.raynor(new (MarshalFrom(User))()); // Assertion passes