facebook-stub 0.0.1.7 → 0.0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Rakefile +12 -2
- data/bin/facebook-stub.js +91 -14
- data/facebook-stub.gemspec +1 -0
- data/lib/facebook_stub/core.js +91 -14
- data/lib/facebook_stub/version.rb +1 -1
- data/spec/acceptance/facebook-stub_spec.rb +1 -1
- data/spec/javascripts/FacebookStubSpec.js +59 -0
- data/spec/javascripts/helpers/SpecHelper.js +23 -0
- data/spec/javascripts/support/jasmine.yml +73 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- metadata +37 -56
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ LIB = ROOT + 'lib'
|
|
7
7
|
PKG = ROOT + 'pkg'
|
8
8
|
BIN = ROOT + 'bin'
|
9
9
|
|
10
|
-
task :
|
10
|
+
task :build_js do
|
11
11
|
require 'sprockets'
|
12
12
|
environment = Sprockets::Environment.new
|
13
13
|
environment.append_path LIB.to_s
|
@@ -20,6 +20,16 @@ RSpec::Core::RakeTask.new do |t|
|
|
20
20
|
t.pattern = ROOT.join("spec/**/*_spec.rb").to_s
|
21
21
|
end
|
22
22
|
|
23
|
-
task :test => [:
|
23
|
+
task :test => [:build_js, :spec, 'jasmine:ci']
|
24
24
|
|
25
25
|
task :default => :test
|
26
|
+
|
27
|
+
begin
|
28
|
+
require 'jasmine'
|
29
|
+
Rake::Task[:build_js].invoke
|
30
|
+
load 'jasmine/tasks/jasmine.rake'
|
31
|
+
rescue LoadError
|
32
|
+
task :jasmine do
|
33
|
+
abort "Jasmine is not available. In order to run jasmine, you must: (sudo) gem install jasmine"
|
34
|
+
end
|
35
|
+
end
|
data/bin/facebook-stub.js
CHANGED
@@ -231,21 +231,73 @@
|
|
231
231
|
return getStatus().session;
|
232
232
|
}
|
233
233
|
|
234
|
-
function api(
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
234
|
+
function api(path, method, params, callback) {
|
235
|
+
// Curry arguments to allow multiple forms:
|
236
|
+
// api(path, callback)
|
237
|
+
// api(path, method, callback)
|
238
|
+
// api(path, params, callback)
|
239
|
+
// api(path, method, params, callback)
|
240
|
+
if (callback === undefined) {
|
241
|
+
if (params === undefined) {
|
242
|
+
callback = method;
|
243
|
+
method = undefined;
|
244
|
+
} else {
|
245
|
+
callback = params;
|
246
|
+
if (typeof method == 'string')
|
247
|
+
params = undefined;
|
248
|
+
else {
|
249
|
+
params = method;
|
250
|
+
method = undefined;
|
251
|
+
}
|
244
252
|
}
|
245
|
-
|
253
|
+
}
|
254
|
+
|
255
|
+
if (!FBWorld.state('connected')) {
|
256
|
+
callback(apiUnconnectedMessage());
|
257
|
+
return;
|
258
|
+
}
|
259
|
+
|
260
|
+
switch (path) {
|
261
|
+
case '/me/friends':
|
262
|
+
callback({data:FBWorld.friendList()});
|
263
|
+
break;
|
264
|
+
case '/me/permissions':
|
265
|
+
var theState = FBWorld.state();
|
266
|
+
var perms;
|
267
|
+
if (theState && theState.perms && theState.perms.data)
|
268
|
+
perms = {data:[theState.perms.data]};
|
269
|
+
callback(perms);
|
270
|
+
break;
|
271
|
+
case '/me/feed':
|
272
|
+
if (method == 'post') {
|
273
|
+
callback({id: Math.floor(Math.random() * 100000)});
|
274
|
+
break;
|
275
|
+
}
|
276
|
+
default:
|
277
|
+
callback(apiFailMessage(path));
|
246
278
|
}
|
247
279
|
}
|
248
280
|
|
281
|
+
function apiUnconnectedMessage() {
|
282
|
+
return {
|
283
|
+
"error": {
|
284
|
+
"message": "An active access token must be used to query information about the current user.",
|
285
|
+
"type": "OAuthException",
|
286
|
+
"code": 2500
|
287
|
+
}
|
288
|
+
};
|
289
|
+
}
|
290
|
+
|
291
|
+
function apiFailMessage(path) {
|
292
|
+
return {
|
293
|
+
"error": {
|
294
|
+
"message": "(#803) Some of the aliases you requested do not exist: " + path,
|
295
|
+
"type": "OAuthException",
|
296
|
+
"code": 803
|
297
|
+
}
|
298
|
+
};
|
299
|
+
}
|
300
|
+
|
249
301
|
// FBWorld Functions
|
250
302
|
//3 states: loggedOut, loggedIn, connected
|
251
303
|
function state() {
|
@@ -273,6 +325,10 @@
|
|
273
325
|
return FBWorld.state('uid', newUid);
|
274
326
|
}
|
275
327
|
|
328
|
+
function appId() {
|
329
|
+
return FBWorld.state('appId');
|
330
|
+
}
|
331
|
+
|
276
332
|
function setPermissions(newPermissions) {
|
277
333
|
return FBWorld.state('perms', 'data', convertPermsToData(newPermissions));
|
278
334
|
}
|
@@ -281,10 +337,10 @@
|
|
281
337
|
return state('secret', newSecret);
|
282
338
|
}
|
283
339
|
|
284
|
-
function loggedIn() {
|
340
|
+
function loggedIn(perms) {
|
285
341
|
createConnectedCookie();
|
286
342
|
FBWorld.state('loggedIn', true);
|
287
|
-
|
343
|
+
if (perms) setPermissions(perms);
|
288
344
|
return true;
|
289
345
|
}
|
290
346
|
|
@@ -345,6 +401,25 @@
|
|
345
401
|
resolveSharePrompt('cancel');
|
346
402
|
}
|
347
403
|
|
404
|
+
function reset() {
|
405
|
+
|
406
|
+
FBWorld.beingPromptedToLogin = false;
|
407
|
+
FBWorld.beingPromptedToLoginOptions = undefined;
|
408
|
+
FBWorld.beingPromptedToLoginCallback = undefined;
|
409
|
+
FBWorld.beingPromptedToConnect = false;
|
410
|
+
FBWorld.beingPromptedToConnectOptions = undefined;
|
411
|
+
FBWorld.beingPromptedToConnectCallback = undefined;
|
412
|
+
FBWorld.beingPromptedToAddPermissions = false;
|
413
|
+
FBWorld.beingPromptedToAddPermissionsOptions = undefined;
|
414
|
+
FBWorld.beingPromptedToAddPermissionsCallback = undefined;
|
415
|
+
FBWorld.beingPromptedToShare = false;
|
416
|
+
FBWorld.beingPromptedToShareOptions = undefined;
|
417
|
+
FBWorld.beingPromptedToShareCallback = undefined;
|
418
|
+
|
419
|
+
// reset cookie
|
420
|
+
FBWorld.Helpers.makeMeACookie('fb-stub', null);
|
421
|
+
}
|
422
|
+
|
348
423
|
var XFBML = {
|
349
424
|
parse: function(element, callback) {
|
350
425
|
callback();
|
@@ -372,14 +447,16 @@
|
|
372
447
|
loggedIn : loggedIn,
|
373
448
|
notLoggedIn : notLoggedIn,
|
374
449
|
setUid : setUid,
|
450
|
+
appId : appId,
|
375
451
|
setSecret : setSecret,
|
376
452
|
uid : uid,
|
377
453
|
connected : connected,
|
378
454
|
notConnected : notConnected,
|
379
455
|
setPermissions : setPermissions,
|
380
456
|
getPermissions : getPermissions,
|
457
|
+
reset : reset,
|
381
458
|
|
382
|
-
initialized
|
459
|
+
initialized : false,
|
383
460
|
|
384
461
|
// Simulate interactions with Facebook
|
385
462
|
|
data/facebook-stub.gemspec
CHANGED
data/lib/facebook_stub/core.js
CHANGED
@@ -231,21 +231,73 @@
|
|
231
231
|
return getStatus().session;
|
232
232
|
}
|
233
233
|
|
234
|
-
function api(
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
234
|
+
function api(path, method, params, callback) {
|
235
|
+
// Curry arguments to allow multiple forms:
|
236
|
+
// api(path, callback)
|
237
|
+
// api(path, method, callback)
|
238
|
+
// api(path, params, callback)
|
239
|
+
// api(path, method, params, callback)
|
240
|
+
if (callback === undefined) {
|
241
|
+
if (params === undefined) {
|
242
|
+
callback = method;
|
243
|
+
method = undefined;
|
244
|
+
} else {
|
245
|
+
callback = params;
|
246
|
+
if (typeof method == 'string')
|
247
|
+
params = undefined;
|
248
|
+
else {
|
249
|
+
params = method;
|
250
|
+
method = undefined;
|
251
|
+
}
|
244
252
|
}
|
245
|
-
|
253
|
+
}
|
254
|
+
|
255
|
+
if (!FBWorld.state('connected')) {
|
256
|
+
callback(apiUnconnectedMessage());
|
257
|
+
return;
|
258
|
+
}
|
259
|
+
|
260
|
+
switch (path) {
|
261
|
+
case '/me/friends':
|
262
|
+
callback({data:FBWorld.friendList()});
|
263
|
+
break;
|
264
|
+
case '/me/permissions':
|
265
|
+
var theState = FBWorld.state();
|
266
|
+
var perms;
|
267
|
+
if (theState && theState.perms && theState.perms.data)
|
268
|
+
perms = {data:[theState.perms.data]};
|
269
|
+
callback(perms);
|
270
|
+
break;
|
271
|
+
case '/me/feed':
|
272
|
+
if (method == 'post') {
|
273
|
+
callback({id: Math.floor(Math.random() * 100000)});
|
274
|
+
break;
|
275
|
+
}
|
276
|
+
default:
|
277
|
+
callback(apiFailMessage(path));
|
246
278
|
}
|
247
279
|
}
|
248
280
|
|
281
|
+
function apiUnconnectedMessage() {
|
282
|
+
return {
|
283
|
+
"error": {
|
284
|
+
"message": "An active access token must be used to query information about the current user.",
|
285
|
+
"type": "OAuthException",
|
286
|
+
"code": 2500
|
287
|
+
}
|
288
|
+
};
|
289
|
+
}
|
290
|
+
|
291
|
+
function apiFailMessage(path) {
|
292
|
+
return {
|
293
|
+
"error": {
|
294
|
+
"message": "(#803) Some of the aliases you requested do not exist: " + path,
|
295
|
+
"type": "OAuthException",
|
296
|
+
"code": 803
|
297
|
+
}
|
298
|
+
};
|
299
|
+
}
|
300
|
+
|
249
301
|
// FBWorld Functions
|
250
302
|
//3 states: loggedOut, loggedIn, connected
|
251
303
|
function state() {
|
@@ -273,6 +325,10 @@
|
|
273
325
|
return FBWorld.state('uid', newUid);
|
274
326
|
}
|
275
327
|
|
328
|
+
function appId() {
|
329
|
+
return FBWorld.state('appId');
|
330
|
+
}
|
331
|
+
|
276
332
|
function setPermissions(newPermissions) {
|
277
333
|
return FBWorld.state('perms', 'data', convertPermsToData(newPermissions));
|
278
334
|
}
|
@@ -281,10 +337,10 @@
|
|
281
337
|
return state('secret', newSecret);
|
282
338
|
}
|
283
339
|
|
284
|
-
function loggedIn() {
|
340
|
+
function loggedIn(perms) {
|
285
341
|
createConnectedCookie();
|
286
342
|
FBWorld.state('loggedIn', true);
|
287
|
-
|
343
|
+
if (perms) setPermissions(perms);
|
288
344
|
return true;
|
289
345
|
}
|
290
346
|
|
@@ -345,6 +401,25 @@
|
|
345
401
|
resolveSharePrompt('cancel');
|
346
402
|
}
|
347
403
|
|
404
|
+
function reset() {
|
405
|
+
|
406
|
+
FBWorld.beingPromptedToLogin = false;
|
407
|
+
FBWorld.beingPromptedToLoginOptions = undefined;
|
408
|
+
FBWorld.beingPromptedToLoginCallback = undefined;
|
409
|
+
FBWorld.beingPromptedToConnect = false;
|
410
|
+
FBWorld.beingPromptedToConnectOptions = undefined;
|
411
|
+
FBWorld.beingPromptedToConnectCallback = undefined;
|
412
|
+
FBWorld.beingPromptedToAddPermissions = false;
|
413
|
+
FBWorld.beingPromptedToAddPermissionsOptions = undefined;
|
414
|
+
FBWorld.beingPromptedToAddPermissionsCallback = undefined;
|
415
|
+
FBWorld.beingPromptedToShare = false;
|
416
|
+
FBWorld.beingPromptedToShareOptions = undefined;
|
417
|
+
FBWorld.beingPromptedToShareCallback = undefined;
|
418
|
+
|
419
|
+
// reset cookie
|
420
|
+
FBWorld.Helpers.makeMeACookie('fb-stub', null);
|
421
|
+
}
|
422
|
+
|
348
423
|
var XFBML = {
|
349
424
|
parse: function(element, callback) {
|
350
425
|
callback();
|
@@ -372,14 +447,16 @@
|
|
372
447
|
loggedIn : loggedIn,
|
373
448
|
notLoggedIn : notLoggedIn,
|
374
449
|
setUid : setUid,
|
450
|
+
appId : appId,
|
375
451
|
setSecret : setSecret,
|
376
452
|
uid : uid,
|
377
453
|
connected : connected,
|
378
454
|
notConnected : notConnected,
|
379
455
|
setPermissions : setPermissions,
|
380
456
|
getPermissions : getPermissions,
|
457
|
+
reset : reset,
|
381
458
|
|
382
|
-
initialized
|
459
|
+
initialized : false,
|
383
460
|
|
384
461
|
// Simulate interactions with Facebook
|
385
462
|
|
@@ -0,0 +1,59 @@
|
|
1
|
+
describe("FB.api", function() {
|
2
|
+
beforeEach(function() {
|
3
|
+
setup();
|
4
|
+
});
|
5
|
+
|
6
|
+
afterEach(function() {
|
7
|
+
FBWorld.reset();
|
8
|
+
});
|
9
|
+
|
10
|
+
describe("when loggedIn, connected, and granted permissions", function() {
|
11
|
+
|
12
|
+
beforeEach(function() {
|
13
|
+
FBWorld.loggedIn('publish_actions');
|
14
|
+
FBWorld.connected();
|
15
|
+
});
|
16
|
+
|
17
|
+
describe("when I call FB.api('/me/friends', callback)", function() {
|
18
|
+
it("should callback with FBWorld.friendList", function() {
|
19
|
+
FB.api('/me/friends', function (r) {
|
20
|
+
expect(r.data).toBeDefined();
|
21
|
+
expect(r.data).toEqual(FBWorld.friendList());
|
22
|
+
});
|
23
|
+
});
|
24
|
+
});
|
25
|
+
|
26
|
+
describe("when I call FB.api('/me/permissions', callback)", function() {
|
27
|
+
it("should callback with FBWorld.state.perms", function() {
|
28
|
+
FB.api('/me/permissions', function (r) {
|
29
|
+
expect(r).toBeDefined();
|
30
|
+
expect(r.data).toBeDefined();
|
31
|
+
expect(r.data).toEqual([FBWorld.state().perms.data]);
|
32
|
+
});
|
33
|
+
});
|
34
|
+
});
|
35
|
+
|
36
|
+
describe("when I call FB.api('/me/feed', 'post', params, callback)", function() {
|
37
|
+
it("should callback with a random id", function() {
|
38
|
+
FB.api('/me/feed', 'post', {}, function (r) {
|
39
|
+
expect(r.id).toBeDefined();
|
40
|
+
});
|
41
|
+
});
|
42
|
+
});
|
43
|
+
|
44
|
+
});
|
45
|
+
|
46
|
+
describe("when not connected", function () {
|
47
|
+
it("should callback with the unconnected error object", function() {
|
48
|
+
FB.api('/me/friends', function (r) {
|
49
|
+
expect(r).toEqual(apiUnconnectedMessage());
|
50
|
+
});
|
51
|
+
FB.api('/me/permissions', function (r) {
|
52
|
+
expect(r).toEqual(apiUnconnectedMessage());
|
53
|
+
});
|
54
|
+
FB.api('/me/feed', 'post', {}, function (r) {
|
55
|
+
expect(r).toEqual(apiUnconnectedMessage());
|
56
|
+
});
|
57
|
+
});
|
58
|
+
});
|
59
|
+
});
|
@@ -0,0 +1,23 @@
|
|
1
|
+
function setup() {
|
2
|
+
FBWorld.setSecret('00000000000000000000000000000000');
|
3
|
+
|
4
|
+
FB.init({
|
5
|
+
appId : '000000000000000',
|
6
|
+
status : true, // check login status
|
7
|
+
cookie : true, // enable cookies to allow the server to access the session
|
8
|
+
xfbml : false, // parse XFBML
|
9
|
+
channelUrl : '/facebook/channel.html',
|
10
|
+
oauth : true
|
11
|
+
});
|
12
|
+
|
13
|
+
}
|
14
|
+
|
15
|
+
function apiUnconnectedMessage() {
|
16
|
+
return {
|
17
|
+
"error": {
|
18
|
+
"message": "An active access token must be used to query information about the current user.",
|
19
|
+
"type": "OAuthException",
|
20
|
+
"code": 2500
|
21
|
+
}
|
22
|
+
};
|
23
|
+
}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# src_files
|
2
|
+
#
|
3
|
+
# Return an array of filepaths relative to src_dir to include before jasmine specs.
|
4
|
+
# Default: []
|
5
|
+
#
|
6
|
+
# EXAMPLE:
|
7
|
+
#
|
8
|
+
# src_files:
|
9
|
+
# - lib/source1.js
|
10
|
+
# - lib/source2.js
|
11
|
+
# - dist/**/*.js
|
12
|
+
#
|
13
|
+
src_files:
|
14
|
+
- bin/*.js
|
15
|
+
|
16
|
+
# stylesheets
|
17
|
+
#
|
18
|
+
# Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs.
|
19
|
+
# Default: []
|
20
|
+
#
|
21
|
+
# EXAMPLE:
|
22
|
+
#
|
23
|
+
# stylesheets:
|
24
|
+
# - css/style.css
|
25
|
+
# - stylesheets/*.css
|
26
|
+
#
|
27
|
+
stylesheets:
|
28
|
+
|
29
|
+
# helpers
|
30
|
+
#
|
31
|
+
# Return an array of filepaths relative to spec_dir to include before jasmine specs.
|
32
|
+
# Default: ["helpers/**/*.js"]
|
33
|
+
#
|
34
|
+
# EXAMPLE:
|
35
|
+
#
|
36
|
+
# helpers:
|
37
|
+
# - helpers/**/*.js
|
38
|
+
#
|
39
|
+
helpers:
|
40
|
+
|
41
|
+
# spec_files
|
42
|
+
#
|
43
|
+
# Return an array of filepaths relative to spec_dir to include.
|
44
|
+
# Default: ["**/*[sS]pec.js"]
|
45
|
+
#
|
46
|
+
# EXAMPLE:
|
47
|
+
#
|
48
|
+
# spec_files:
|
49
|
+
# - **/*[sS]pec.js
|
50
|
+
#
|
51
|
+
spec_files:
|
52
|
+
|
53
|
+
# src_dir
|
54
|
+
#
|
55
|
+
# Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
|
56
|
+
# Default: project root
|
57
|
+
#
|
58
|
+
# EXAMPLE:
|
59
|
+
#
|
60
|
+
# src_dir: public
|
61
|
+
#
|
62
|
+
src_dir:
|
63
|
+
|
64
|
+
# spec_dir
|
65
|
+
#
|
66
|
+
# Spec directory path. Your spec_files must be returned relative to this path.
|
67
|
+
# Default: spec/javascripts
|
68
|
+
#
|
69
|
+
# EXAMPLE:
|
70
|
+
#
|
71
|
+
# spec_dir: spec/javascripts
|
72
|
+
#
|
73
|
+
spec_dir:
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Jasmine
|
2
|
+
class Config
|
3
|
+
|
4
|
+
# Add your overrides or custom config code here
|
5
|
+
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
# Note - this is necessary for rspec2, which has removed the backtrace
|
11
|
+
module Jasmine
|
12
|
+
class SpecBuilder
|
13
|
+
def declare_spec(parent, spec)
|
14
|
+
me = self
|
15
|
+
example_name = spec["name"]
|
16
|
+
@spec_ids << spec["id"]
|
17
|
+
backtrace = @example_locations[parent.description + " " + example_name]
|
18
|
+
parent.it example_name, {} do
|
19
|
+
me.report_spec(spec["id"])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
$:.unshift(ENV['JASMINE_GEM_PATH']) if ENV['JASMINE_GEM_PATH'] # for gem testing purposes
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'jasmine'
|
5
|
+
jasmine_config_overrides = File.expand_path(File.join(File.dirname(__FILE__), 'jasmine_config.rb'))
|
6
|
+
require jasmine_config_overrides if File.exist?(jasmine_config_overrides)
|
7
|
+
if Jasmine::Dependencies.rspec2?
|
8
|
+
require 'rspec'
|
9
|
+
else
|
10
|
+
require 'spec'
|
11
|
+
end
|
12
|
+
|
13
|
+
jasmine_config = Jasmine::Config.new
|
14
|
+
spec_builder = Jasmine::SpecBuilder.new(jasmine_config)
|
15
|
+
|
16
|
+
should_stop = false
|
17
|
+
|
18
|
+
if Jasmine::Dependencies.rspec2?
|
19
|
+
RSpec.configuration.after(:suite) do
|
20
|
+
spec_builder.stop if should_stop
|
21
|
+
end
|
22
|
+
else
|
23
|
+
Spec::Runner.configure do |config|
|
24
|
+
config.after(:suite) do
|
25
|
+
spec_builder.stop if should_stop
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
spec_builder.start
|
31
|
+
should_stop = true
|
32
|
+
spec_builder.declare_suites
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facebook-stub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: debugger
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70272822136920 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
24
|
+
version_requirements: *70272822136920
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: sprockets
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70272822136500 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ! '>='
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: '0'
|
38
33
|
type: :development
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
35
|
+
version_requirements: *70272822136500
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: rake
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70272822136080 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ! '>='
|
@@ -53,15 +43,10 @@ dependencies:
|
|
53
43
|
version: '0'
|
54
44
|
type: :development
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
46
|
+
version_requirements: *70272822136080
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: sinatra
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &70272822135660 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ! '>='
|
@@ -69,15 +54,10 @@ dependencies:
|
|
69
54
|
version: '0'
|
70
55
|
type: :development
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
57
|
+
version_requirements: *70272822135660
|
78
58
|
- !ruby/object:Gem::Dependency
|
79
59
|
name: shotgun
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirement: &70272822135240 !ruby/object:Gem::Requirement
|
81
61
|
none: false
|
82
62
|
requirements:
|
83
63
|
- - ! '>='
|
@@ -85,15 +65,10 @@ dependencies:
|
|
85
65
|
version: '0'
|
86
66
|
type: :development
|
87
67
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
68
|
+
version_requirements: *70272822135240
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: haml
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &70272822134820 !ruby/object:Gem::Requirement
|
97
72
|
none: false
|
98
73
|
requirements:
|
99
74
|
- - ! '>='
|
@@ -101,15 +76,10 @@ dependencies:
|
|
101
76
|
version: '0'
|
102
77
|
type: :development
|
103
78
|
prerelease: false
|
104
|
-
version_requirements:
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
79
|
+
version_requirements: *70272822134820
|
110
80
|
- !ruby/object:Gem::Dependency
|
111
81
|
name: rspec
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
+
requirement: &70272822134380 !ruby/object:Gem::Requirement
|
113
83
|
none: false
|
114
84
|
requirements:
|
115
85
|
- - ! '>='
|
@@ -117,15 +87,10 @@ dependencies:
|
|
117
87
|
version: '0'
|
118
88
|
type: :development
|
119
89
|
prerelease: false
|
120
|
-
version_requirements:
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
90
|
+
version_requirements: *70272822134380
|
126
91
|
- !ruby/object:Gem::Dependency
|
127
92
|
name: capybara
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirement: &70272822133960 !ruby/object:Gem::Requirement
|
129
94
|
none: false
|
130
95
|
requirements:
|
131
96
|
- - ! '>='
|
@@ -133,12 +98,18 @@ dependencies:
|
|
133
98
|
version: '0'
|
134
99
|
type: :development
|
135
100
|
prerelease: false
|
136
|
-
version_requirements:
|
101
|
+
version_requirements: *70272822133960
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: jasmine
|
104
|
+
requirement: &70272822133540 !ruby/object:Gem::Requirement
|
137
105
|
none: false
|
138
106
|
requirements:
|
139
107
|
- - ! '>='
|
140
108
|
- !ruby/object:Gem::Version
|
141
109
|
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *70272822133540
|
142
113
|
description: facebook-stub is a gem for stubbing out the Facebook JavaScript API in
|
143
114
|
acceptance and integration tests.
|
144
115
|
email:
|
@@ -165,6 +136,11 @@ files:
|
|
165
136
|
- lib/facebook_stub/utf8_encode.js
|
166
137
|
- lib/facebook_stub/version.rb
|
167
138
|
- spec/acceptance/facebook-stub_spec.rb
|
139
|
+
- spec/javascripts/FacebookStubSpec.js
|
140
|
+
- spec/javascripts/helpers/SpecHelper.js
|
141
|
+
- spec/javascripts/support/jasmine.yml
|
142
|
+
- spec/javascripts/support/jasmine_config.rb
|
143
|
+
- spec/javascripts/support/jasmine_runner.rb
|
168
144
|
- spec/spec_helper.rb
|
169
145
|
- test/config.ru
|
170
146
|
- test/server.rb
|
@@ -183,7 +159,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
183
159
|
version: '0'
|
184
160
|
segments:
|
185
161
|
- 0
|
186
|
-
hash: -
|
162
|
+
hash: -4225699949950565184
|
187
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
188
164
|
none: false
|
189
165
|
requirements:
|
@@ -192,15 +168,20 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
168
|
version: '0'
|
193
169
|
segments:
|
194
170
|
- 0
|
195
|
-
hash: -
|
171
|
+
hash: -4225699949950565184
|
196
172
|
requirements: []
|
197
173
|
rubyforge_project: facebook-stub
|
198
|
-
rubygems_version: 1.8.
|
174
|
+
rubygems_version: 1.8.11
|
199
175
|
signing_key:
|
200
176
|
specification_version: 3
|
201
177
|
summary: Stub out the FB JS API
|
202
178
|
test_files:
|
203
179
|
- spec/acceptance/facebook-stub_spec.rb
|
180
|
+
- spec/javascripts/FacebookStubSpec.js
|
181
|
+
- spec/javascripts/helpers/SpecHelper.js
|
182
|
+
- spec/javascripts/support/jasmine.yml
|
183
|
+
- spec/javascripts/support/jasmine_config.rb
|
184
|
+
- spec/javascripts/support/jasmine_runner.rb
|
204
185
|
- spec/spec_helper.rb
|
205
186
|
- test/config.ru
|
206
187
|
- test/server.rb
|