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 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