konacha 3.6.0 → 3.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +4 -0
- data/konacha.gemspec +1 -1
- data/vendor/assets/javascripts/chai.js +437 -54
- data/vendor/assets/javascripts/mocha.js +55 -1070
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97bd31bc543a9f6f2c85d3109b3516554762fc10
|
4
|
+
data.tar.gz: 9c77a26680c19837ffd8e28218cd76be31e288cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5034521ce296215be8e5ce6b362389c50e2a3d439155df07d0378bddd7017dc99c416aa9b15d761bcb4e492387ae1ee99fbd43f54717d020b113f03bd01152b
|
7
|
+
data.tar.gz: 1cea843ff0fc9563aaf7c66fe1fdb5888e4146dcb56c8c7d7cacb7a6792687a72c229e119c69a543a4924cd9a517c4f64b3cea6c21561d0a3e44b55433511c48
|
data/History.md
CHANGED
data/konacha.gemspec
CHANGED
@@ -17,7 +17,7 @@ the asset pipeline and engines.}
|
|
17
17
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
18
|
gem.name = "konacha"
|
19
19
|
gem.require_paths = ["lib"]
|
20
|
-
gem.version = "3.
|
20
|
+
gem.version = "3.7.0"
|
21
21
|
gem.license = "MIT"
|
22
22
|
|
23
23
|
gem.add_dependency "railties", ">= 3.1", "< 5"
|
@@ -15,7 +15,7 @@ var used = []
|
|
15
15
|
* Chai version
|
16
16
|
*/
|
17
17
|
|
18
|
-
exports.version = '3.
|
18
|
+
exports.version = '3.3.0';
|
19
19
|
|
20
20
|
/*!
|
21
21
|
* Assertion Error
|
@@ -503,7 +503,7 @@ module.exports = function (chai, _) {
|
|
503
503
|
for (var k in val) subset[k] = obj[k];
|
504
504
|
expected = _.eql(subset, val);
|
505
505
|
} else {
|
506
|
-
expected = obj && ~obj.indexOf(val);
|
506
|
+
expected = (obj != undefined) && ~obj.indexOf(val);
|
507
507
|
}
|
508
508
|
this.assert(
|
509
509
|
expected
|
@@ -620,6 +620,25 @@ module.exports = function (chai, _) {
|
|
620
620
|
);
|
621
621
|
});
|
622
622
|
|
623
|
+
/**
|
624
|
+
* ### .NaN
|
625
|
+
* Asserts that the target is `NaN`.
|
626
|
+
*
|
627
|
+
* expect('foo').to.be.NaN;
|
628
|
+
* expect(4).not.to.be.NaN;
|
629
|
+
*
|
630
|
+
* @name NaN
|
631
|
+
* @api public
|
632
|
+
*/
|
633
|
+
|
634
|
+
Assertion.addProperty('NaN', function () {
|
635
|
+
this.assert(
|
636
|
+
isNaN(flag(this, 'object'))
|
637
|
+
, 'expected #{this} to be NaN'
|
638
|
+
, 'expected #{this} not to be NaN'
|
639
|
+
);
|
640
|
+
});
|
641
|
+
|
623
642
|
/**
|
624
643
|
* ### .exist
|
625
644
|
*
|
@@ -662,17 +681,8 @@ module.exports = function (chai, _) {
|
|
662
681
|
*/
|
663
682
|
|
664
683
|
Assertion.addProperty('empty', function () {
|
665
|
-
var obj = flag(this, 'object')
|
666
|
-
, expected = obj;
|
667
|
-
|
668
|
-
if (Array.isArray(obj) || 'string' === typeof object) {
|
669
|
-
expected = obj.length;
|
670
|
-
} else if (typeof obj === 'object') {
|
671
|
-
expected = Object.keys(obj).length;
|
672
|
-
}
|
673
|
-
|
674
684
|
this.assert(
|
675
|
-
|
685
|
+
Object.keys(Object(flag(this, 'object'))).length === 0
|
676
686
|
, 'expected #{this} to be empty'
|
677
687
|
, 'expected #{this} not to be empty'
|
678
688
|
);
|
@@ -1638,12 +1648,13 @@ module.exports = function (chai, _) {
|
|
1638
1648
|
* expect(Klass).itself.to.respondTo('baz');
|
1639
1649
|
*
|
1640
1650
|
* @name respondTo
|
1651
|
+
* @alias respondsTo
|
1641
1652
|
* @param {String} method
|
1642
1653
|
* @param {String} message _optional_
|
1643
1654
|
* @api public
|
1644
1655
|
*/
|
1645
1656
|
|
1646
|
-
|
1657
|
+
function respondTo (method, msg) {
|
1647
1658
|
if (msg) flag(this, 'message', msg);
|
1648
1659
|
var obj = flag(this, 'object')
|
1649
1660
|
, itself = flag(this, 'itself')
|
@@ -1656,7 +1667,10 @@ module.exports = function (chai, _) {
|
|
1656
1667
|
, 'expected #{this} to respond to ' + _.inspect(method)
|
1657
1668
|
, 'expected #{this} to not respond to ' + _.inspect(method)
|
1658
1669
|
);
|
1659
|
-
}
|
1670
|
+
}
|
1671
|
+
|
1672
|
+
Assertion.addMethod('respondTo', respondTo);
|
1673
|
+
Assertion.addMethod('respondsTo', respondTo);
|
1660
1674
|
|
1661
1675
|
/**
|
1662
1676
|
* ### .itself
|
@@ -1686,12 +1700,13 @@ module.exports = function (chai, _) {
|
|
1686
1700
|
* expect(1).to.satisfy(function(num) { return num > 0; });
|
1687
1701
|
*
|
1688
1702
|
* @name satisfy
|
1703
|
+
* @alias satisfies
|
1689
1704
|
* @param {Function} matcher
|
1690
1705
|
* @param {String} message _optional_
|
1691
1706
|
* @api public
|
1692
1707
|
*/
|
1693
1708
|
|
1694
|
-
|
1709
|
+
function satisfy (matcher, msg) {
|
1695
1710
|
if (msg) flag(this, 'message', msg);
|
1696
1711
|
var obj = flag(this, 'object');
|
1697
1712
|
var result = matcher(obj);
|
@@ -1702,7 +1717,10 @@ module.exports = function (chai, _) {
|
|
1702
1717
|
, this.negate ? false : true
|
1703
1718
|
, result
|
1704
1719
|
);
|
1705
|
-
}
|
1720
|
+
}
|
1721
|
+
|
1722
|
+
Assertion.addMethod('satisfy', satisfy);
|
1723
|
+
Assertion.addMethod('satisfies', satisfy);
|
1706
1724
|
|
1707
1725
|
/**
|
1708
1726
|
* ### .closeTo(expected, delta)
|
@@ -1907,6 +1925,128 @@ module.exports = function (chai, _) {
|
|
1907
1925
|
Assertion.addChainableMethod('decrease', assertDecreases);
|
1908
1926
|
Assertion.addChainableMethod('decreases', assertDecreases);
|
1909
1927
|
|
1928
|
+
/**
|
1929
|
+
* ### .extensible
|
1930
|
+
*
|
1931
|
+
* Asserts that the target is extensible (can have new properties added to
|
1932
|
+
* it).
|
1933
|
+
*
|
1934
|
+
* var nonExtensibleObject = Object.preventExtensions({});
|
1935
|
+
* var sealedObject = Object.seal({});
|
1936
|
+
* var frozenObject = Object.freeze({});
|
1937
|
+
*
|
1938
|
+
* expect({}).to.be.extensible;
|
1939
|
+
* expect(nonExtensibleObject).to.not.be.extensible;
|
1940
|
+
* expect(sealedObject).to.not.be.extensible;
|
1941
|
+
* expect(frozenObject).to.not.be.extensible;
|
1942
|
+
*
|
1943
|
+
* @name extensible
|
1944
|
+
* @api public
|
1945
|
+
*/
|
1946
|
+
|
1947
|
+
Assertion.addProperty('extensible', function() {
|
1948
|
+
var obj = flag(this, 'object');
|
1949
|
+
|
1950
|
+
// In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError.
|
1951
|
+
// In ES6, a non-object argument will be treated as if it was a non-extensible ordinary object, simply return false.
|
1952
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible
|
1953
|
+
// The following provides ES6 behavior when a TypeError is thrown under ES5.
|
1954
|
+
|
1955
|
+
var isExtensible;
|
1956
|
+
|
1957
|
+
try {
|
1958
|
+
isExtensible = Object.isExtensible(obj);
|
1959
|
+
} catch (err) {
|
1960
|
+
if (err instanceof TypeError) isExtensible = false;
|
1961
|
+
else throw err;
|
1962
|
+
}
|
1963
|
+
|
1964
|
+
this.assert(
|
1965
|
+
isExtensible
|
1966
|
+
, 'expected #{this} to be extensible'
|
1967
|
+
, 'expected #{this} to not be extensible'
|
1968
|
+
);
|
1969
|
+
});
|
1970
|
+
|
1971
|
+
/**
|
1972
|
+
* ### .sealed
|
1973
|
+
*
|
1974
|
+
* Asserts that the target is sealed (cannot have new properties added to it
|
1975
|
+
* and its existing properties cannot be removed).
|
1976
|
+
*
|
1977
|
+
* var sealedObject = Object.seal({});
|
1978
|
+
* var frozenObject = Object.freeze({});
|
1979
|
+
*
|
1980
|
+
* expect(sealedObject).to.be.sealed;
|
1981
|
+
* expect(frozenObject).to.be.sealed;
|
1982
|
+
* expect({}).to.not.be.sealed;
|
1983
|
+
*
|
1984
|
+
* @name sealed
|
1985
|
+
* @api public
|
1986
|
+
*/
|
1987
|
+
|
1988
|
+
Assertion.addProperty('sealed', function() {
|
1989
|
+
var obj = flag(this, 'object');
|
1990
|
+
|
1991
|
+
// In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError.
|
1992
|
+
// In ES6, a non-object argument will be treated as if it was a sealed ordinary object, simply return true.
|
1993
|
+
// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed
|
1994
|
+
// The following provides ES6 behavior when a TypeError is thrown under ES5.
|
1995
|
+
|
1996
|
+
var isSealed;
|
1997
|
+
|
1998
|
+
try {
|
1999
|
+
isSealed = Object.isSealed(obj);
|
2000
|
+
} catch (err) {
|
2001
|
+
if (err instanceof TypeError) isSealed = true;
|
2002
|
+
else throw err;
|
2003
|
+
}
|
2004
|
+
|
2005
|
+
this.assert(
|
2006
|
+
isSealed
|
2007
|
+
, 'expected #{this} to be sealed'
|
2008
|
+
, 'expected #{this} to not be sealed'
|
2009
|
+
);
|
2010
|
+
});
|
2011
|
+
|
2012
|
+
/**
|
2013
|
+
* ### .frozen
|
2014
|
+
*
|
2015
|
+
* Asserts that the target is frozen (cannot have new properties added to it
|
2016
|
+
* and its existing properties cannot be modified).
|
2017
|
+
*
|
2018
|
+
* var frozenObject = Object.freeze({});
|
2019
|
+
*
|
2020
|
+
* expect(frozenObject).to.be.frozen;
|
2021
|
+
* expect({}).to.not.be.frozen;
|
2022
|
+
*
|
2023
|
+
* @name frozen
|
2024
|
+
* @api public
|
2025
|
+
*/
|
2026
|
+
|
2027
|
+
Assertion.addProperty('frozen', function() {
|
2028
|
+
var obj = flag(this, 'object');
|
2029
|
+
|
2030
|
+
// In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError.
|
2031
|
+
// In ES6, a non-object argument will be treated as if it was a frozen ordinary object, simply return true.
|
2032
|
+
// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen
|
2033
|
+
// The following provides ES6 behavior when a TypeError is thrown under ES5.
|
2034
|
+
|
2035
|
+
var isFrozen;
|
2036
|
+
|
2037
|
+
try {
|
2038
|
+
isFrozen = Object.isFrozen(obj);
|
2039
|
+
} catch (err) {
|
2040
|
+
if (err instanceof TypeError) isFrozen = true;
|
2041
|
+
else throw err;
|
2042
|
+
}
|
2043
|
+
|
2044
|
+
this.assert(
|
2045
|
+
isFrozen
|
2046
|
+
, 'expected #{this} to be frozen'
|
2047
|
+
, 'expected #{this} to not be frozen'
|
2048
|
+
);
|
2049
|
+
});
|
1910
2050
|
};
|
1911
2051
|
|
1912
2052
|
},{}],6:[function(require,module,exports){
|
@@ -1976,38 +2116,40 @@ module.exports = function (chai, util) {
|
|
1976
2116
|
};
|
1977
2117
|
|
1978
2118
|
/**
|
1979
|
-
* ### .
|
2119
|
+
* ### .isOk(object, [message])
|
1980
2120
|
*
|
1981
2121
|
* Asserts that `object` is truthy.
|
1982
2122
|
*
|
1983
|
-
* assert.
|
1984
|
-
* assert.
|
2123
|
+
* assert.isOk('everything', 'everything is ok');
|
2124
|
+
* assert.isOk(false, 'this will fail');
|
1985
2125
|
*
|
1986
|
-
* @name
|
2126
|
+
* @name isOk
|
2127
|
+
* @alias ok
|
1987
2128
|
* @param {Mixed} object to test
|
1988
2129
|
* @param {String} message
|
1989
2130
|
* @api public
|
1990
2131
|
*/
|
1991
2132
|
|
1992
|
-
assert.
|
2133
|
+
assert.isOk = function (val, msg) {
|
1993
2134
|
new Assertion(val, msg).is.ok;
|
1994
2135
|
};
|
1995
2136
|
|
1996
2137
|
/**
|
1997
|
-
* ### .
|
2138
|
+
* ### .isNotOk(object, [message])
|
1998
2139
|
*
|
1999
2140
|
* Asserts that `object` is falsy.
|
2000
2141
|
*
|
2001
|
-
* assert.
|
2002
|
-
* assert.
|
2142
|
+
* assert.isNotOk('everything', 'this will fail');
|
2143
|
+
* assert.isNotOk(false, 'this will pass');
|
2003
2144
|
*
|
2004
|
-
* @name
|
2145
|
+
* @name isNotOk
|
2146
|
+
* @alias notOk
|
2005
2147
|
* @param {Mixed} object to test
|
2006
2148
|
* @param {String} message
|
2007
2149
|
* @api public
|
2008
2150
|
*/
|
2009
2151
|
|
2010
|
-
assert.
|
2152
|
+
assert.isNotOk = function (val, msg) {
|
2011
2153
|
new Assertion(val, msg).is.not.ok;
|
2012
2154
|
};
|
2013
2155
|
|
@@ -2135,16 +2277,16 @@ module.exports = function (chai, util) {
|
|
2135
2277
|
new Assertion(act, msg).to.not.eql(exp);
|
2136
2278
|
};
|
2137
2279
|
|
2138
|
-
|
2139
|
-
* ### .
|
2280
|
+
/**
|
2281
|
+
* ### .isAbove(valueToCheck, valueToBeAbove, [message])
|
2140
2282
|
*
|
2141
|
-
* Asserts
|
2283
|
+
* Asserts `valueToCheck` is strictly greater than (>) `valueToBeAbove`
|
2142
2284
|
*
|
2143
|
-
*
|
2144
|
-
* assert.isTrue(teaServed, 'the tea has been served');
|
2285
|
+
* assert.isAbove(5, 2, '5 is strictly greater than 2');
|
2145
2286
|
*
|
2146
|
-
* @name
|
2147
|
-
* @param {Mixed}
|
2287
|
+
* @name isAbove
|
2288
|
+
* @param {Mixed} valueToCheck
|
2289
|
+
* @param {Mixed} valueToBeAbove
|
2148
2290
|
* @param {String} message
|
2149
2291
|
* @api public
|
2150
2292
|
*/
|
@@ -2154,21 +2296,22 @@ module.exports = function (chai, util) {
|
|
2154
2296
|
};
|
2155
2297
|
|
2156
2298
|
/**
|
2157
|
-
* ### .
|
2299
|
+
* ### .isAtLeast(valueToCheck, valueToBeAtLeast, [message])
|
2158
2300
|
*
|
2159
|
-
* Asserts `valueToCheck` is
|
2301
|
+
* Asserts `valueToCheck` is greater than or equal to (>=) `valueToBeAtLeast`
|
2160
2302
|
*
|
2161
|
-
* assert.
|
2303
|
+
* assert.isAtLeast(5, 2, '5 is greater or equal to 2');
|
2304
|
+
* assert.isAtLeast(3, 3, '3 is greater or equal to 3');
|
2162
2305
|
*
|
2163
|
-
* @name
|
2306
|
+
* @name isAtLeast
|
2164
2307
|
* @param {Mixed} valueToCheck
|
2165
|
-
* @param {Mixed}
|
2308
|
+
* @param {Mixed} valueToBeAtLeast
|
2166
2309
|
* @param {String} message
|
2167
2310
|
* @api public
|
2168
2311
|
*/
|
2169
2312
|
|
2170
|
-
assert.
|
2171
|
-
new Assertion(val, msg).to.be.
|
2313
|
+
assert.isAtLeast = function (val, atlst, msg) {
|
2314
|
+
new Assertion(val, msg).to.be.least(atlst);
|
2172
2315
|
};
|
2173
2316
|
|
2174
2317
|
/**
|
@@ -2185,10 +2328,65 @@ module.exports = function (chai, util) {
|
|
2185
2328
|
* @api public
|
2186
2329
|
*/
|
2187
2330
|
|
2331
|
+
assert.isBelow = function (val, blw, msg) {
|
2332
|
+
new Assertion(val, msg).to.be.below(blw);
|
2333
|
+
};
|
2334
|
+
|
2335
|
+
/**
|
2336
|
+
* ### .isAtMost(valueToCheck, valueToBeAtMost, [message])
|
2337
|
+
*
|
2338
|
+
* Asserts `valueToCheck` is less than or equal to (<=) `valueToBeAtMost`
|
2339
|
+
*
|
2340
|
+
* assert.isAtMost(3, 6, '3 is less than or equal to 6');
|
2341
|
+
* assert.isAtMost(4, 4, '4 is less than or equal to 4');
|
2342
|
+
*
|
2343
|
+
* @name isAtMost
|
2344
|
+
* @param {Mixed} valueToCheck
|
2345
|
+
* @param {Mixed} valueToBeAtMost
|
2346
|
+
* @param {String} message
|
2347
|
+
* @api public
|
2348
|
+
*/
|
2349
|
+
|
2350
|
+
assert.isAtMost = function (val, atmst, msg) {
|
2351
|
+
new Assertion(val, msg).to.be.most(atmst);
|
2352
|
+
};
|
2353
|
+
|
2354
|
+
/**
|
2355
|
+
* ### .isTrue(value, [message])
|
2356
|
+
*
|
2357
|
+
* Asserts that `value` is true.
|
2358
|
+
*
|
2359
|
+
* var teaServed = true;
|
2360
|
+
* assert.isTrue(teaServed, 'the tea has been served');
|
2361
|
+
*
|
2362
|
+
* @name isTrue
|
2363
|
+
* @param {Mixed} value
|
2364
|
+
* @param {String} message
|
2365
|
+
* @api public
|
2366
|
+
*/
|
2367
|
+
|
2188
2368
|
assert.isTrue = function (val, msg) {
|
2189
2369
|
new Assertion(val, msg).is['true'];
|
2190
2370
|
};
|
2191
2371
|
|
2372
|
+
/**
|
2373
|
+
* ### .isNotTrue(value, [message])
|
2374
|
+
*
|
2375
|
+
* Asserts that `value` is not true.
|
2376
|
+
*
|
2377
|
+
* var tea = 'tasty chai';
|
2378
|
+
* assert.isNotTrue(tea, 'great, time for tea!');
|
2379
|
+
*
|
2380
|
+
* @name isNotTrue
|
2381
|
+
* @param {Mixed} value
|
2382
|
+
* @param {String} message
|
2383
|
+
* @api public
|
2384
|
+
*/
|
2385
|
+
|
2386
|
+
assert.isNotTrue = function (val, msg) {
|
2387
|
+
new Assertion(val, msg).to.not.equal(true);
|
2388
|
+
};
|
2389
|
+
|
2192
2390
|
/**
|
2193
2391
|
* ### .isFalse(value, [message])
|
2194
2392
|
*
|
@@ -2207,6 +2405,24 @@ module.exports = function (chai, util) {
|
|
2207
2405
|
new Assertion(val, msg).is['false'];
|
2208
2406
|
};
|
2209
2407
|
|
2408
|
+
/**
|
2409
|
+
* ### .isNotFalse(value, [message])
|
2410
|
+
*
|
2411
|
+
* Asserts that `value` is not false.
|
2412
|
+
*
|
2413
|
+
* var tea = 'tasty chai';
|
2414
|
+
* assert.isNotFalse(tea, 'great, time for tea!');
|
2415
|
+
*
|
2416
|
+
* @name isNotFalse
|
2417
|
+
* @param {Mixed} value
|
2418
|
+
* @param {String} message
|
2419
|
+
* @api public
|
2420
|
+
*/
|
2421
|
+
|
2422
|
+
assert.isNotFalse = function (val, msg) {
|
2423
|
+
new Assertion(val, msg).to.not.equal(false);
|
2424
|
+
};
|
2425
|
+
|
2210
2426
|
/**
|
2211
2427
|
* ### .isNull(value, [message])
|
2212
2428
|
*
|
@@ -2242,6 +2458,37 @@ module.exports = function (chai, util) {
|
|
2242
2458
|
new Assertion(val, msg).to.not.equal(null);
|
2243
2459
|
};
|
2244
2460
|
|
2461
|
+
/**
|
2462
|
+
* ### .isNaN
|
2463
|
+
* Asserts that value is NaN
|
2464
|
+
*
|
2465
|
+
* assert.isNaN('foo', 'foo is NaN');
|
2466
|
+
*
|
2467
|
+
* @name isNaN
|
2468
|
+
* @param {Mixed} value
|
2469
|
+
* @param {String} message
|
2470
|
+
* @api public
|
2471
|
+
*/
|
2472
|
+
|
2473
|
+
assert.isNaN = function (val, msg) {
|
2474
|
+
new Assertion(val, msg).to.be.NaN;
|
2475
|
+
};
|
2476
|
+
|
2477
|
+
/**
|
2478
|
+
* ### .isNotNaN
|
2479
|
+
* Asserts that value is not NaN
|
2480
|
+
*
|
2481
|
+
* assert.isNotNaN(4, '4 is not NaN');
|
2482
|
+
*
|
2483
|
+
* @name isNotNaN
|
2484
|
+
* @param {Mixed} value
|
2485
|
+
* @param {String} message
|
2486
|
+
* @api public
|
2487
|
+
*/
|
2488
|
+
assert.isNotNaN = function (val, msg) {
|
2489
|
+
new Assertion(val, msg).not.to.be.NaN;
|
2490
|
+
};
|
2491
|
+
|
2245
2492
|
/**
|
2246
2493
|
* ### .isUndefined(value, [message])
|
2247
2494
|
*
|
@@ -2845,11 +3092,11 @@ module.exports = function (chai, util) {
|
|
2845
3092
|
* `constructor`, or alternately that it will throw an error with message
|
2846
3093
|
* matching `regexp`.
|
2847
3094
|
*
|
2848
|
-
* assert.
|
2849
|
-
* assert.
|
2850
|
-
* assert.
|
2851
|
-
* assert.
|
2852
|
-
* assert.
|
3095
|
+
* assert.throws(fn, 'function throws a reference error');
|
3096
|
+
* assert.throws(fn, /function throws a reference error/);
|
3097
|
+
* assert.throws(fn, ReferenceError);
|
3098
|
+
* assert.throws(fn, ReferenceError, 'function throws a reference error');
|
3099
|
+
* assert.throws(fn, ReferenceError, /function throws a reference error/);
|
2853
3100
|
*
|
2854
3101
|
* @name throws
|
2855
3102
|
* @alias throw
|
@@ -2862,13 +3109,13 @@ module.exports = function (chai, util) {
|
|
2862
3109
|
* @api public
|
2863
3110
|
*/
|
2864
3111
|
|
2865
|
-
assert.
|
3112
|
+
assert.throws = function (fn, errt, errs, msg) {
|
2866
3113
|
if ('string' === typeof errt || errt instanceof RegExp) {
|
2867
3114
|
errs = errt;
|
2868
3115
|
errt = null;
|
2869
3116
|
}
|
2870
3117
|
|
2871
|
-
var assertErr = new Assertion(fn, msg).to.
|
3118
|
+
var assertErr = new Assertion(fn, msg).to.throw(errt, errs);
|
2872
3119
|
return flag(assertErr, 'object');
|
2873
3120
|
};
|
2874
3121
|
|
@@ -3158,7 +3405,7 @@ module.exports = function (chai, util) {
|
|
3158
3405
|
* ### .ifError(object)
|
3159
3406
|
*
|
3160
3407
|
* Asserts if value is not a false value, and throws if it is a true value.
|
3161
|
-
* This is added to allow for chai to be a drop-in replacement for Node's
|
3408
|
+
* This is added to allow for chai to be a drop-in replacement for Node's
|
3162
3409
|
* assert class.
|
3163
3410
|
*
|
3164
3411
|
* var err = new Error('I am a custom error');
|
@@ -3175,6 +3422,127 @@ module.exports = function (chai, util) {
|
|
3175
3422
|
}
|
3176
3423
|
};
|
3177
3424
|
|
3425
|
+
/**
|
3426
|
+
* ### .isExtensible(object)
|
3427
|
+
*
|
3428
|
+
* Asserts that `object` is extensible (can have new properties added to it).
|
3429
|
+
*
|
3430
|
+
* assert.isExtensible({});
|
3431
|
+
*
|
3432
|
+
* @name isExtensible
|
3433
|
+
* @alias extensible
|
3434
|
+
* @param {Object} object
|
3435
|
+
* @param {String} message _optional_
|
3436
|
+
* @api public
|
3437
|
+
*/
|
3438
|
+
|
3439
|
+
assert.isExtensible = function (obj, msg) {
|
3440
|
+
new Assertion(obj, msg).to.be.extensible;
|
3441
|
+
};
|
3442
|
+
|
3443
|
+
/**
|
3444
|
+
* ### .isNotExtensible(object)
|
3445
|
+
*
|
3446
|
+
* Asserts that `object` is _not_ extensible.
|
3447
|
+
*
|
3448
|
+
* var nonExtensibleObject = Object.preventExtensions({});
|
3449
|
+
* var sealedObject = Object.seal({});
|
3450
|
+
* var frozenObject = Object.freese({});
|
3451
|
+
*
|
3452
|
+
* assert.isNotExtensible(nonExtensibleObject);
|
3453
|
+
* assert.isNotExtensible(sealedObject);
|
3454
|
+
* assert.isNotExtensible(frozenObject);
|
3455
|
+
*
|
3456
|
+
* @name isNotExtensible
|
3457
|
+
* @alias notExtensible
|
3458
|
+
* @param {Object} object
|
3459
|
+
* @param {String} message _optional_
|
3460
|
+
* @api public
|
3461
|
+
*/
|
3462
|
+
|
3463
|
+
assert.isNotExtensible = function (obj, msg) {
|
3464
|
+
new Assertion(obj, msg).to.not.be.extensible;
|
3465
|
+
};
|
3466
|
+
|
3467
|
+
/**
|
3468
|
+
* ### .isSealed(object)
|
3469
|
+
*
|
3470
|
+
* Asserts that `object` is sealed (cannot have new properties added to it
|
3471
|
+
* and its existing properties cannot be removed).
|
3472
|
+
*
|
3473
|
+
* var sealedObject = Object.seal({});
|
3474
|
+
* var frozenObject = Object.seal({});
|
3475
|
+
*
|
3476
|
+
* assert.isSealed(sealedObject);
|
3477
|
+
* assert.isSealed(frozenObject);
|
3478
|
+
*
|
3479
|
+
* @name isSealed
|
3480
|
+
* @alias sealed
|
3481
|
+
* @param {Object} object
|
3482
|
+
* @param {String} message _optional_
|
3483
|
+
* @api public
|
3484
|
+
*/
|
3485
|
+
|
3486
|
+
assert.isSealed = function (obj, msg) {
|
3487
|
+
new Assertion(obj, msg).to.be.sealed;
|
3488
|
+
};
|
3489
|
+
|
3490
|
+
/**
|
3491
|
+
* ### .isNotSealed(object)
|
3492
|
+
*
|
3493
|
+
* Asserts that `object` is _not_ sealed.
|
3494
|
+
*
|
3495
|
+
* assert.isNotSealed({});
|
3496
|
+
*
|
3497
|
+
* @name isNotSealed
|
3498
|
+
* @alias notSealed
|
3499
|
+
* @param {Object} object
|
3500
|
+
* @param {String} message _optional_
|
3501
|
+
* @api public
|
3502
|
+
*/
|
3503
|
+
|
3504
|
+
assert.isNotSealed = function (obj, msg) {
|
3505
|
+
new Assertion(obj, msg).to.not.be.sealed;
|
3506
|
+
};
|
3507
|
+
|
3508
|
+
/**
|
3509
|
+
* ### .isFrozen(object)
|
3510
|
+
*
|
3511
|
+
* Asserts that `object` is frozen (cannot have new properties added to it
|
3512
|
+
* and its existing properties cannot be modified).
|
3513
|
+
*
|
3514
|
+
* var frozenObject = Object.freeze({});
|
3515
|
+
* assert.frozen(frozenObject);
|
3516
|
+
*
|
3517
|
+
* @name isFrozen
|
3518
|
+
* @alias frozen
|
3519
|
+
* @param {Object} object
|
3520
|
+
* @param {String} message _optional_
|
3521
|
+
* @api public
|
3522
|
+
*/
|
3523
|
+
|
3524
|
+
assert.isFrozen = function (obj, msg) {
|
3525
|
+
new Assertion(obj, msg).to.be.frozen;
|
3526
|
+
};
|
3527
|
+
|
3528
|
+
/**
|
3529
|
+
* ### .isNotFrozen(object)
|
3530
|
+
*
|
3531
|
+
* Asserts that `object` is _not_ frozen.
|
3532
|
+
*
|
3533
|
+
* assert.isNotFrozen({});
|
3534
|
+
*
|
3535
|
+
* @name isNotFrozen
|
3536
|
+
* @alias notFrozen
|
3537
|
+
* @param {Object} object
|
3538
|
+
* @param {String} message _optional_
|
3539
|
+
* @api public
|
3540
|
+
*/
|
3541
|
+
|
3542
|
+
assert.isNotFrozen = function (obj, msg) {
|
3543
|
+
new Assertion(obj, msg).to.not.be.frozen;
|
3544
|
+
};
|
3545
|
+
|
3178
3546
|
/*!
|
3179
3547
|
* Aliases.
|
3180
3548
|
*/
|
@@ -3183,8 +3551,16 @@ module.exports = function (chai, util) {
|
|
3183
3551
|
assert[as] = assert[name];
|
3184
3552
|
return alias;
|
3185
3553
|
})
|
3186
|
-
('
|
3187
|
-
('
|
3554
|
+
('isOk', 'ok')
|
3555
|
+
('isNotOk', 'notOk')
|
3556
|
+
('throws', 'throw')
|
3557
|
+
('throws', 'Throw')
|
3558
|
+
('isExtensible', 'extensible')
|
3559
|
+
('isNotExtensible', 'notExtensible')
|
3560
|
+
('isSealed', 'sealed')
|
3561
|
+
('isNotSealed', 'notSealed')
|
3562
|
+
('isFrozen', 'frozen')
|
3563
|
+
('isNotFrozen', 'notFrozen');
|
3188
3564
|
};
|
3189
3565
|
|
3190
3566
|
},{}],7:[function(require,module,exports){
|
@@ -3487,6 +3863,9 @@ module.exports = function (ctx, name, method) {
|
|
3487
3863
|
* MIT Licensed
|
3488
3864
|
*/
|
3489
3865
|
|
3866
|
+
var config = require('../config');
|
3867
|
+
var flag = require('./flag');
|
3868
|
+
|
3490
3869
|
/**
|
3491
3870
|
* ### addProperty (ctx, name, getter)
|
3492
3871
|
*
|
@@ -3514,7 +3893,11 @@ module.exports = function (ctx, name, method) {
|
|
3514
3893
|
|
3515
3894
|
module.exports = function (ctx, name, getter) {
|
3516
3895
|
Object.defineProperty(ctx, name,
|
3517
|
-
{ get: function () {
|
3896
|
+
{ get: function addProperty() {
|
3897
|
+
var old_ssfi = flag(this, 'ssfi');
|
3898
|
+
if (old_ssfi && config.includeStack === false)
|
3899
|
+
flag(this, 'ssfi', addProperty);
|
3900
|
+
|
3518
3901
|
var result = getter.call(this);
|
3519
3902
|
return result === undefined ? this : result;
|
3520
3903
|
}
|
@@ -3522,7 +3905,7 @@ module.exports = function (ctx, name, getter) {
|
|
3522
3905
|
});
|
3523
3906
|
};
|
3524
3907
|
|
3525
|
-
},{}],12:[function(require,module,exports){
|
3908
|
+
},{"../config":4,"./flag":12}],12:[function(require,module,exports){
|
3526
3909
|
/*!
|
3527
3910
|
* Chai - flag utility
|
3528
3911
|
* Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
|
@@ -3853,7 +4236,7 @@ module.exports = function(path, obj) {
|
|
3853
4236
|
*/
|
3854
4237
|
|
3855
4238
|
module.exports = function getProperties(object) {
|
3856
|
-
var result = Object.getOwnPropertyNames(
|
4239
|
+
var result = Object.getOwnPropertyNames(object);
|
3857
4240
|
|
3858
4241
|
function addProperty(property) {
|
3859
4242
|
if (result.indexOf(property) === -1) {
|
@@ -3861,7 +4244,7 @@ module.exports = function getProperties(object) {
|
|
3861
4244
|
}
|
3862
4245
|
}
|
3863
4246
|
|
3864
|
-
var proto = Object.getPrototypeOf(
|
4247
|
+
var proto = Object.getPrototypeOf(object);
|
3865
4248
|
while (proto !== null) {
|
3866
4249
|
Object.getOwnPropertyNames(proto).forEach(addProperty);
|
3867
4250
|
proto = Object.getPrototypeOf(proto);
|