facebook-stub 0.0.1.7 → 0.0.1.8

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/.gitignore CHANGED
@@ -4,3 +4,4 @@
4
4
  Gemfile.lock
5
5
  pkg/*
6
6
  chromedriver.log
7
+ .bin
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ LIB = ROOT + 'lib'
7
7
  PKG = ROOT + 'pkg'
8
8
  BIN = ROOT + 'bin'
9
9
 
10
- task :build do
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 => [:build, :spec]
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(location, callback) {
235
- if (!FBWorld.state('connected')) {
236
- callback(undefined);
237
- } else if (location == '/me/friends') {
238
- callback({data:FBWorld.friendList()});
239
- } else if (location == '/me/permissions') {
240
- var theState = FBWorld.state();
241
- var perms;
242
- if (theState && theState.perms && theState.perms.data) {
243
- perms = {data:[theState.perms.data]};
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
- callback( perms );
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
- FBWorld.state('perms', 'standard', '');
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 : false,
459
+ initialized : false,
383
460
 
384
461
  // Simulate interactions with Facebook
385
462
 
@@ -29,5 +29,6 @@ Gem::Specification.new do |s|
29
29
  s.add_development_dependency 'haml'
30
30
  s.add_development_dependency 'rspec'
31
31
  s.add_development_dependency 'capybara'
32
+ s.add_development_dependency 'jasmine'
32
33
 
33
34
  end
@@ -231,21 +231,73 @@
231
231
  return getStatus().session;
232
232
  }
233
233
 
234
- function api(location, callback) {
235
- if (!FBWorld.state('connected')) {
236
- callback(undefined);
237
- } else if (location == '/me/friends') {
238
- callback({data:FBWorld.friendList()});
239
- } else if (location == '/me/permissions') {
240
- var theState = FBWorld.state();
241
- var perms;
242
- if (theState && theState.perms && theState.perms.data) {
243
- perms = {data:[theState.perms.data]};
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
- callback( perms );
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
- FBWorld.state('perms', 'standard', '');
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 : false,
459
+ initialized : false,
383
460
 
384
461
  // Simulate interactions with Facebook
385
462
 
@@ -1,3 +1,3 @@
1
1
  module FacebookStub
2
- VERSION = "0.0.1.7"
2
+ VERSION = "0.0.1.8"
3
3
  end
@@ -31,7 +31,7 @@ describe "facebook-stub.js" do
31
31
  end
32
32
 
33
33
  def logged_in!
34
- js_exec("FBWorld.loggedIn()")
34
+ js_exec("FBWorld.loggedIn('publish_actions')")
35
35
  end
36
36
 
37
37
  def connected!
@@ -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.7
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-19 00:00:00.000000000 Z
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: -521301745040137504
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: -521301745040137504
171
+ hash: -4225699949950565184
196
172
  requirements: []
197
173
  rubyforge_project: facebook-stub
198
- rubygems_version: 1.8.21
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