diff --git a/chai-subset/chai-subset-tests.ts b/chai-subset/chai-subset-tests.ts new file mode 100644 index 000000000..8b88e5c6a --- /dev/null +++ b/chai-subset/chai-subset-tests.ts @@ -0,0 +1,62 @@ +/// + +import chai = require('chai'); +import chaiSubset = require('chai-subset'); + +chai.use(chaiSubset); +var expect = chai.expect; +var assert = chai.assert; + +function test_containSubset() { + var obj: Object = { + a: 'b', + c: 'd', + e: { + foo: 'bar', + baz: { + qux: 'quux' + } + } + }; + + expect(obj).to.containSubset({ + a: 'b', + e: { + baz: { + qux: 'quux' + } + } + }); + + obj.should.containSubset({ a: 'b' }); +} + +function test_notContainSubset() { + var obj: Object = { + a: 'b', + c: 'd', + e: { + foo: 'bar', + baz: { + qux: 'quux' + } + } + }; + + expect(obj).to.not.containSubset({ g: 'whatever' }); + obj.should.not.containSubset({ g: 'whatever' }); +} + +function test_arrayContainSubset() { + var list: Array = [{a: 'a', b: 'b'}, {v: 'f', d: {z: 'g'}} ]; + + expect(list).to.containSubset([{a:'a', b: 'b'}]); + list.should.containSubset([{a:'a', b: 'b'}]); +} + +function test_arrayNotContainSubset() { + var list: Array = [{a: 'a', b: 'b'}, {v: 'f', d: {z: 'g'}} ]; + + expect(list).not.to.containSubset([{a:'a', b: 'bd'}]); + list.should.not.containSubset([{a:'a', b: 'bd'}]); +} diff --git a/chai-subset/chai-subset.d.ts b/chai-subset/chai-subset.d.ts new file mode 100644 index 000000000..44bbef9cc --- /dev/null +++ b/chai-subset/chai-subset.d.ts @@ -0,0 +1,21 @@ +// Type definitions for chai-subset 1.0.0 +// Project: https://github.com/e-conomic/chai-subset +// Definitions by: Sam Noedel +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module Chai { + interface Assertion { + containSubset(obj: Object): Assertion; + } +} + +interface Object { + should: Chai.Assertion; +} + +declare module "chai-subset" { + function chaiSubset(chai: any, utils: any): void; + export = chaiSubset; +}