konacha 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.md +6 -0
- data/konacha.gemspec +1 -1
- data/lib/konacha/engine.rb +2 -0
- data/lib/konacha/runner.rb +10 -3
- data/vendor/assets/javascripts/chai.js +175 -56
- metadata +3 -9
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 = "1.2.
|
20
|
+
gem.version = "1.2.2"
|
21
21
|
|
22
22
|
gem.add_dependency "rails", "~> 3.1"
|
23
23
|
gem.add_dependency "capybara"
|
data/lib/konacha/engine.rb
CHANGED
data/lib/konacha/runner.rb
CHANGED
@@ -74,14 +74,18 @@ module Konacha
|
|
74
74
|
begin
|
75
75
|
sleep 0.1
|
76
76
|
done, dots = session.evaluate_script('[Konacha.done, Konacha.dots]')
|
77
|
-
|
78
|
-
|
79
|
-
|
77
|
+
if dots
|
78
|
+
io.write dots[dots_printed..-1]
|
79
|
+
io.flush
|
80
|
+
dots_printed = dots.length
|
81
|
+
end
|
80
82
|
end until done
|
81
83
|
|
82
84
|
@examples = JSON.parse(session.evaluate_script('Konacha.getResults()')).map do |row|
|
83
85
|
Example.new(row)
|
84
86
|
end
|
87
|
+
rescue => e
|
88
|
+
raise Konacha::Error, "Error communicating with browser process: #{e.inspect}"
|
85
89
|
end
|
86
90
|
end
|
87
91
|
|
@@ -104,4 +108,7 @@ module Konacha
|
|
104
108
|
end
|
105
109
|
end
|
106
110
|
end
|
111
|
+
|
112
|
+
class Error < StandardError
|
113
|
+
end
|
107
114
|
end
|
@@ -111,6 +111,10 @@ Assertion.addMethod = function (name, fn) {
|
|
111
111
|
util.addMethod(this.prototype, name, fn);
|
112
112
|
};
|
113
113
|
|
114
|
+
Assertion.addChainableMethod = function (name, fn, chainingBehavior) {
|
115
|
+
util.addChainableMethod(this.prototype, name, fn, chainingBehavior);
|
116
|
+
};
|
117
|
+
|
114
118
|
Assertion.overwriteProperty = function (name, fn) {
|
115
119
|
util.overwriteProperty(this.prototype, name, fn);
|
116
120
|
};
|
@@ -265,37 +269,23 @@ Object.defineProperty(Assertion.prototype, 'deep',
|
|
265
269
|
* @api public
|
266
270
|
*/
|
267
271
|
|
268
|
-
|
269
|
-
var
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
, article = ~[ 'A', 'E', 'I', 'O', 'U' ].indexOf(klassStart) ? 'an ' : 'a ';
|
274
|
-
|
275
|
-
this.assert(
|
276
|
-
'[object ' + klass + ']' === toString.call(obj)
|
277
|
-
, 'expected #{this} to be ' + article + type
|
278
|
-
, 'expected #{this} not to be ' + article + type
|
279
|
-
, '[object ' + klass + ']'
|
280
|
-
, toString.call(obj)
|
281
|
-
);
|
282
|
-
|
283
|
-
return this;
|
284
|
-
};
|
285
|
-
|
286
|
-
assert.__proto__ = this;
|
287
|
-
return assert;
|
288
|
-
};
|
272
|
+
function an(type) {
|
273
|
+
var obj = flag(this, 'object')
|
274
|
+
, klassStart = type.charAt(0).toUpperCase()
|
275
|
+
, klass = klassStart + type.slice(1)
|
276
|
+
, article = ~[ 'A', 'E', 'I', 'O', 'U' ].indexOf(klassStart) ? 'an ' : 'a ';
|
289
277
|
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
}
|
278
|
+
this.assert(
|
279
|
+
'[object ' + klass + ']' === toString.call(obj)
|
280
|
+
, 'expected #{this} to be ' + article + type
|
281
|
+
, 'expected #{this} not to be ' + article + type
|
282
|
+
, '[object ' + klass + ']'
|
283
|
+
, toString.call(obj)
|
284
|
+
);
|
285
|
+
}
|
294
286
|
|
295
|
-
|
296
|
-
|
297
|
-
, configurable: true
|
298
|
-
});
|
287
|
+
Assertion.addChainableMethod('an', an);
|
288
|
+
Assertion.addChainableMethod('a', an);
|
299
289
|
|
300
290
|
/**
|
301
291
|
* ### .include(value)
|
@@ -315,32 +305,20 @@ Object.defineProperty(Assertion.prototype, 'a',
|
|
315
305
|
* @api public
|
316
306
|
*/
|
317
307
|
|
318
|
-
|
308
|
+
function includeChainingBehavior() {
|
319
309
|
flag(this, 'contains', true);
|
310
|
+
}
|
320
311
|
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
return this;
|
329
|
-
};
|
330
|
-
|
331
|
-
assert.__proto__ = this;
|
332
|
-
return assert;
|
333
|
-
};
|
334
|
-
|
335
|
-
Object.defineProperty(Assertion.prototype, 'contain',
|
336
|
-
{ get: include
|
337
|
-
, configurable: true
|
338
|
-
});
|
312
|
+
function include(val) {
|
313
|
+
var obj = flag(this, 'object')
|
314
|
+
this.assert(
|
315
|
+
~obj.indexOf(val)
|
316
|
+
, 'expected #{this} to include ' + util.inspect(val)
|
317
|
+
, 'expected #{this} to not include ' + util.inspect(val));
|
318
|
+
}
|
339
319
|
|
340
|
-
|
341
|
-
|
342
|
-
, configurable: true
|
343
|
-
});
|
320
|
+
Assertion.addChainableMethod('include', include, includeChainingBehavior);
|
321
|
+
Assertion.addChainableMethod('contain', include, includeChainingBehavior);
|
344
322
|
|
345
323
|
/**
|
346
324
|
* ### .ok
|
@@ -589,7 +567,7 @@ Object.defineProperty(Assertion.prototype, 'arguments',
|
|
589
567
|
Assertion.prototype.equal = function (val) {
|
590
568
|
var obj = flag(this, 'object');
|
591
569
|
if (flag(this, 'deep')) {
|
592
|
-
|
570
|
+
return this.eql(val);
|
593
571
|
} else {
|
594
572
|
this.assert(
|
595
573
|
val === obj
|
@@ -617,8 +595,8 @@ Assertion.prototype.equal = function (val) {
|
|
617
595
|
Assertion.prototype.eql = function (obj) {
|
618
596
|
this.assert(
|
619
597
|
util.eql(obj, flag(this, 'object'))
|
620
|
-
, 'expected #{this} to equal #{exp}'
|
621
|
-
, 'expected #{this} to not equal #{exp}'
|
598
|
+
, 'expected #{this} to deeply equal #{exp}'
|
599
|
+
, 'expected #{this} to not deeply equal #{exp}'
|
622
600
|
, obj );
|
623
601
|
|
624
602
|
return this;
|
@@ -1205,7 +1183,7 @@ var used = []
|
|
1205
1183
|
* Chai version
|
1206
1184
|
*/
|
1207
1185
|
|
1208
|
-
exports.version = '1.0.
|
1186
|
+
exports.version = '1.0.3';
|
1209
1187
|
|
1210
1188
|
/*!
|
1211
1189
|
* Primary `Assertion` prototype
|
@@ -2316,6 +2294,86 @@ module.exports = function (chai, util) {
|
|
2316
2294
|
|
2317
2295
|
}); // module: interface/should.js
|
2318
2296
|
|
2297
|
+
require.register("utils/addChainableMethod.js", function(module, exports, require){
|
2298
|
+
/*!
|
2299
|
+
* Chai - addChainingMethod utility
|
2300
|
+
* Copyright(c) 2012 Jake Luer <jake@alogicalparadox.com>
|
2301
|
+
* MIT Licensed
|
2302
|
+
*/
|
2303
|
+
|
2304
|
+
/*!
|
2305
|
+
* Module dependencies
|
2306
|
+
*/
|
2307
|
+
|
2308
|
+
var transferFlags = require('./transferFlags');
|
2309
|
+
|
2310
|
+
/**
|
2311
|
+
* ### addChainableMethod (ctx, name, method, chainingBehavior)
|
2312
|
+
*
|
2313
|
+
* Adds a method to an object, such that the method can also be chained.
|
2314
|
+
*
|
2315
|
+
* utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) {
|
2316
|
+
* var obj = utils.flag(this, 'object');
|
2317
|
+
* new chai.Assertion(obj).to.be.equal(str);
|
2318
|
+
* });
|
2319
|
+
*
|
2320
|
+
* Can also be accessed directly from `chai.Assertion`.
|
2321
|
+
*
|
2322
|
+
* chai.Assertion.addChainableMethod('foo', fn, chainingBehavior);
|
2323
|
+
*
|
2324
|
+
* The result can then be used as both a method assertion, executing both `method` and
|
2325
|
+
* `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`.
|
2326
|
+
*
|
2327
|
+
* expect(fooStr).to.be.foo('bar');
|
2328
|
+
* expect(fooStr).to.be.foo.equal('foo');
|
2329
|
+
*
|
2330
|
+
* @param {Object} ctx object to which the method is added
|
2331
|
+
* @param {String} name of method to add
|
2332
|
+
* @param {Function} method function to be used for `name`, when called
|
2333
|
+
* @param {Function} chainingBehavior function to be called every time the property is accessed
|
2334
|
+
* @name addChainableMethod
|
2335
|
+
* @api public
|
2336
|
+
*/
|
2337
|
+
|
2338
|
+
module.exports = function (ctx, name, method, chainingBehavior) {
|
2339
|
+
if (typeof chainingBehavior !== 'function') {
|
2340
|
+
chainingBehavior = function () { };
|
2341
|
+
}
|
2342
|
+
|
2343
|
+
Object.defineProperty(ctx, name,
|
2344
|
+
{ get: function () {
|
2345
|
+
chainingBehavior.call(this);
|
2346
|
+
|
2347
|
+
var assert = function () {
|
2348
|
+
var result = method.apply(this, arguments);
|
2349
|
+
return result === undefined ? this : result;
|
2350
|
+
};
|
2351
|
+
|
2352
|
+
// Re-enumerate every time to better accomodate plugins.
|
2353
|
+
var asserterNames = Object.getOwnPropertyNames(ctx);
|
2354
|
+
asserterNames.forEach(function (asserterName) {
|
2355
|
+
var pd = Object.getOwnPropertyDescriptor(ctx, asserterName);
|
2356
|
+
|
2357
|
+
// Avoid trying to overwrite things that we can't, like `length`
|
2358
|
+
// and `arguments`.
|
2359
|
+
var functionProtoPD = Object.getOwnPropertyDescriptor(Function.prototype, asserterName);
|
2360
|
+
if (functionProtoPD && !functionProtoPD.configurable) {
|
2361
|
+
return;
|
2362
|
+
}
|
2363
|
+
|
2364
|
+
Object.defineProperty(assert, asserterName, pd);
|
2365
|
+
});
|
2366
|
+
|
2367
|
+
transferFlags(this, assert);
|
2368
|
+
|
2369
|
+
return assert;
|
2370
|
+
}
|
2371
|
+
, configurable: true
|
2372
|
+
});
|
2373
|
+
};
|
2374
|
+
|
2375
|
+
}); // module: utils/addChainableMethod.js
|
2376
|
+
|
2319
2377
|
require.register("utils/addMethod.js", function(module, exports, require){
|
2320
2378
|
/*!
|
2321
2379
|
* Chai - addMethod utility
|
@@ -2787,6 +2845,12 @@ exports.inspect = require('./inspect');
|
|
2787
2845
|
|
2788
2846
|
exports.flag = require('./flag');
|
2789
2847
|
|
2848
|
+
/*!
|
2849
|
+
* Flag transferring utility
|
2850
|
+
*/
|
2851
|
+
|
2852
|
+
exports.transferFlags = require('./transferFlags');
|
2853
|
+
|
2790
2854
|
/*!
|
2791
2855
|
* Deep equal utility
|
2792
2856
|
*/
|
@@ -2829,6 +2893,13 @@ exports.overwriteProperty = require('./overwriteProperty');
|
|
2829
2893
|
|
2830
2894
|
exports.overwriteMethod = require('./overwriteMethod');
|
2831
2895
|
|
2896
|
+
/*!
|
2897
|
+
* Add a chainable method
|
2898
|
+
*/
|
2899
|
+
|
2900
|
+
exports.addChainableMethod = require('./addChainableMethod');
|
2901
|
+
|
2902
|
+
|
2832
2903
|
}); // module: utils/index.js
|
2833
2904
|
|
2834
2905
|
require.register("utils/inspect.js", function(module, exports, require){
|
@@ -3255,6 +3326,54 @@ module.exports = function (obj, args) {
|
|
3255
3326
|
|
3256
3327
|
}); // module: utils/test.js
|
3257
3328
|
|
3329
|
+
require.register("utils/transferFlags.js", function(module, exports, require){
|
3330
|
+
/*!
|
3331
|
+
* Chai - transferFlags utility
|
3332
|
+
* Copyright(c) 2012 Jake Luer <jake@alogicalparadox.com>
|
3333
|
+
* MIT Licensed
|
3334
|
+
*/
|
3335
|
+
|
3336
|
+
/**
|
3337
|
+
* ### transferFlags(assertion, object, includeAll = true)
|
3338
|
+
*
|
3339
|
+
* Transfer all the flags for `assertion` to `object`. If
|
3340
|
+
* `includeAll` is set to `false`, then the base Chai
|
3341
|
+
* assertion flags (namely `object`, `ssfi`, and `message`)
|
3342
|
+
* will not be transferred.
|
3343
|
+
*
|
3344
|
+
*
|
3345
|
+
* var newAssertion = new Assertion();
|
3346
|
+
* utils.transferFlags(assertion, newAssertion);
|
3347
|
+
*
|
3348
|
+
* var anotherAsseriton = new Assertion(myObj);
|
3349
|
+
* utils.transferFlags(assertion, anotherAssertion, false);
|
3350
|
+
*
|
3351
|
+
* @param {Assertion} assertion the assertion to transfer the flags from
|
3352
|
+
* @param {Object} object the object to transfer the flags too; usually a new assertion
|
3353
|
+
* @param {Boolean} includeAll
|
3354
|
+
* @name getAllFlags
|
3355
|
+
* @api private
|
3356
|
+
*/
|
3357
|
+
|
3358
|
+
module.exports = function (assertion, object, includeAll) {
|
3359
|
+
var flags = assertion.__flags || (assertion.__flags = Object.create(null));
|
3360
|
+
|
3361
|
+
if (!object.__flags) {
|
3362
|
+
object.__flags = Object.create(null);
|
3363
|
+
}
|
3364
|
+
|
3365
|
+
includeAll = arguments.length === 3 ? includeAll : true;
|
3366
|
+
|
3367
|
+
for (var flag in flags) {
|
3368
|
+
if (includeAll ||
|
3369
|
+
(flag !== 'object' && flag !== 'ssfi' && flag != 'message')) {
|
3370
|
+
object.__flags[flag] = flags[flag];
|
3371
|
+
}
|
3372
|
+
}
|
3373
|
+
};
|
3374
|
+
|
3375
|
+
}); // module: utils/transferFlags.js
|
3376
|
+
|
3258
3377
|
|
3259
3378
|
return require('chai');
|
3260
3379
|
});
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: konacha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -224,21 +224,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
224
224
|
- - ! '>='
|
225
225
|
- !ruby/object:Gem::Version
|
226
226
|
version: '0'
|
227
|
-
segments:
|
228
|
-
- 0
|
229
|
-
hash: 4477410044413595969
|
230
227
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
228
|
none: false
|
232
229
|
requirements:
|
233
230
|
- - ! '>='
|
234
231
|
- !ruby/object:Gem::Version
|
235
232
|
version: '0'
|
236
|
-
segments:
|
237
|
-
- 0
|
238
|
-
hash: 4477410044413595969
|
239
233
|
requirements: []
|
240
234
|
rubyforge_project:
|
241
|
-
rubygems_version: 1.8.
|
235
|
+
rubygems_version: 1.8.23
|
242
236
|
signing_key:
|
243
237
|
specification_version: 3
|
244
238
|
summary: Unit-test your Rails JavaScript with the mocha test framework and chai assertion
|