facebook-stub 0.0.1.18 → 0.0.1.19

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/bin/facebook-stub.js CHANGED
@@ -60,7 +60,7 @@
60
60
  FBWorld.beingPromptedToLogin = true;
61
61
  FBWorld.beingPromptedToLoginOptions = options;
62
62
  FBWorld.beingPromptedToLoginCallback = callback;
63
- FBWorld.beingPromptedToLoginSkipConnection = skipConnection
63
+ FBWorld.beingPromptedToLoginSkipConnection = skipConnection;
64
64
  }
65
65
 
66
66
  // simulates resolving a login prompt in one of three ways
@@ -234,6 +234,14 @@
234
234
  return getStatus().session;
235
235
  }
236
236
 
237
+ function forceReturnError(error) {
238
+ FBWorld.returnError = error;
239
+ }
240
+
241
+ function resetForcedReturnError() {
242
+ FBWorld.returnError = undefined;
243
+ }
244
+
237
245
  function api(path, method, params, callback) {
238
246
  // Curry arguments to allow multiple forms:
239
247
  // api(path, callback)
@@ -255,25 +263,26 @@
255
263
  }
256
264
  }
257
265
 
266
+ var callbackResult;
258
267
  if (!FBWorld.state('connected')) {
259
268
  callback(apiUnconnectedMessage());
260
269
  return;
261
270
  }
262
271
 
263
272
  if(/\/me\/friends(\?.*)?/.test(path)) { // /me/friends?limit=100
264
- callback({data:FBWorld.friendList()});
273
+ callbackResult = {data:FBWorld.friendList()};
265
274
  } else if(/\/me\/permissions(\?.*)?/.test(path)) { // /me/permissions
266
275
  var theState = FBWorld.state();
267
276
  var perms;
268
277
  if (theState && theState.perms && theState.perms.data)
269
278
  perms = {data:[theState.perms.data]};
270
- callback(perms);
279
+ callbackResult = perms;
271
280
  } else if(/\/.+\/feed/.test(path) && method == 'post') { // /me/feed or /123/feed
272
281
  FBWorld.posted({path: path, params: params});
273
- callback({id: randomPostId()});
282
+ callbackResult = {id: randomPostId()};
274
283
  } else if(/\/me\/.+:.+/.test(path) && method == 'post') {
275
284
  FBWorld.posted({path: path, params: params});
276
- callback({id: randomPostId()});
285
+ callbackResult = {id: randomPostId()};
277
286
  } else if (/\//.test(path) && method == 'post') { // / for batch api updates
278
287
  var result = [];
279
288
  for(var i=0; i<params.batch.length; i++) {
@@ -305,10 +314,11 @@
305
314
  }
306
315
  );
307
316
  }
308
- callback(result)
317
+ callbackResult = result;
309
318
  } else {
310
- callback(apiFailMessage(path));
319
+ callbackResult = apiFailMessage(path);
311
320
  }
321
+ callback(FBWorld.returnError || callbackResult);
312
322
  }
313
323
 
314
324
  function randomPostId() {
@@ -461,6 +471,7 @@
461
471
  FBWorld.beingPromptedToShare = false;
462
472
  FBWorld.beingPromptedToShareOptions = undefined;
463
473
  FBWorld.beingPromptedToShareCallback = undefined;
474
+ FBWorld.resetForcedReturnError();
464
475
 
465
476
  // reset cookie
466
477
  FBWorld.Helpers.makeMeACookie('fb-stub', null);
@@ -567,7 +578,12 @@
567
578
 
568
579
  // posted
569
580
  posted : posted,
570
- lastPostForPath : lastPostForPath
581
+ lastPostForPath : lastPostForPath,
582
+
583
+ // error testing
584
+ returnError : undefined,
585
+ forceReturnError : forceReturnError,
586
+ resetForcedReturnError : resetForcedReturnError
571
587
  };
572
588
 
573
589
 
@@ -60,7 +60,7 @@
60
60
  FBWorld.beingPromptedToLogin = true;
61
61
  FBWorld.beingPromptedToLoginOptions = options;
62
62
  FBWorld.beingPromptedToLoginCallback = callback;
63
- FBWorld.beingPromptedToLoginSkipConnection = skipConnection
63
+ FBWorld.beingPromptedToLoginSkipConnection = skipConnection;
64
64
  }
65
65
 
66
66
  // simulates resolving a login prompt in one of three ways
@@ -234,6 +234,14 @@
234
234
  return getStatus().session;
235
235
  }
236
236
 
237
+ function forceReturnError(error) {
238
+ FBWorld.returnError = error;
239
+ }
240
+
241
+ function resetForcedReturnError() {
242
+ FBWorld.returnError = undefined;
243
+ }
244
+
237
245
  function api(path, method, params, callback) {
238
246
  // Curry arguments to allow multiple forms:
239
247
  // api(path, callback)
@@ -255,25 +263,26 @@
255
263
  }
256
264
  }
257
265
 
266
+ var callbackResult;
258
267
  if (!FBWorld.state('connected')) {
259
268
  callback(apiUnconnectedMessage());
260
269
  return;
261
270
  }
262
271
 
263
272
  if(/\/me\/friends(\?.*)?/.test(path)) { // /me/friends?limit=100
264
- callback({data:FBWorld.friendList()});
273
+ callbackResult = {data:FBWorld.friendList()};
265
274
  } else if(/\/me\/permissions(\?.*)?/.test(path)) { // /me/permissions
266
275
  var theState = FBWorld.state();
267
276
  var perms;
268
277
  if (theState && theState.perms && theState.perms.data)
269
278
  perms = {data:[theState.perms.data]};
270
- callback(perms);
279
+ callbackResult = perms;
271
280
  } else if(/\/.+\/feed/.test(path) && method == 'post') { // /me/feed or /123/feed
272
281
  FBWorld.posted({path: path, params: params});
273
- callback({id: randomPostId()});
282
+ callbackResult = {id: randomPostId()};
274
283
  } else if(/\/me\/.+:.+/.test(path) && method == 'post') {
275
284
  FBWorld.posted({path: path, params: params});
276
- callback({id: randomPostId()});
285
+ callbackResult = {id: randomPostId()};
277
286
  } else if (/\//.test(path) && method == 'post') { // / for batch api updates
278
287
  var result = [];
279
288
  for(var i=0; i<params.batch.length; i++) {
@@ -305,10 +314,11 @@
305
314
  }
306
315
  );
307
316
  }
308
- callback(result)
317
+ callbackResult = result;
309
318
  } else {
310
- callback(apiFailMessage(path));
319
+ callbackResult = apiFailMessage(path);
311
320
  }
321
+ callback(FBWorld.returnError || callbackResult);
312
322
  }
313
323
 
314
324
  function randomPostId() {
@@ -461,6 +471,7 @@
461
471
  FBWorld.beingPromptedToShare = false;
462
472
  FBWorld.beingPromptedToShareOptions = undefined;
463
473
  FBWorld.beingPromptedToShareCallback = undefined;
474
+ FBWorld.resetForcedReturnError();
464
475
 
465
476
  // reset cookie
466
477
  FBWorld.Helpers.makeMeACookie('fb-stub', null);
@@ -567,7 +578,12 @@
567
578
 
568
579
  // posted
569
580
  posted : posted,
570
- lastPostForPath : lastPostForPath
581
+ lastPostForPath : lastPostForPath,
582
+
583
+ // error testing
584
+ returnError : undefined,
585
+ forceReturnError : forceReturnError,
586
+ resetForcedReturnError : resetForcedReturnError
571
587
  };
572
588
 
573
589
 
@@ -1,3 +1,3 @@
1
1
  module FacebookStub
2
- VERSION = "0.0.1.18"
2
+ VERSION = "0.0.1.19"
3
3
  end
@@ -21,6 +21,17 @@ describe("FB.api", function() {
21
21
  expect(r.data).toEqual(FBWorld.friendList());
22
22
  });
23
23
  });
24
+
25
+ describe("when a FBWorld.returnError has been set", function() {
26
+ beforeEach(function() {
27
+ FBWorld.forceReturnError('Facebook Error 1');
28
+ });
29
+ it("should callback with the forced error message", function() {
30
+ FB.api('/me/feed', 'post', {}, function (r) {
31
+ expect(r).toEqual('Facebook Error 1');
32
+ });
33
+ });
34
+ });
24
35
  });
25
36
 
26
37
  describe("when I call FB.api('/me/friends?limit=100', callback)", function() {
@@ -124,6 +135,28 @@ describe("FB.api", function() {
124
135
  });
125
136
  });
126
137
 
138
+ describe("when I call FB.api(null, 'post', params, callback)", function() {
139
+ it("should callback with a fail message", function() {
140
+ FB.api(null, 'post', {}, function (r) {
141
+ expect(r.error).toBeDefined();
142
+ expect(r.error.code).toBeDefined();
143
+ expect(r.error.message).toBeDefined();
144
+ expect(r.error.type).toBeDefined();
145
+ });
146
+ });
147
+
148
+ describe("when a FBWorld.returnError has been set", function() {
149
+ beforeEach(function() {
150
+ FBWorld.forceReturnError('Facebook Error 1');
151
+ });
152
+
153
+ it("should callback with the forced error message", function() {
154
+ FB.api(null, 'post', {}, function (r) {
155
+ expect(r).toEqual('Facebook Error 1');
156
+ });
157
+ });
158
+ });
159
+ });
127
160
  });
128
161
 
129
162
  describe("when not connected", function () {
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.18
4
+ version: 0.0.1.19
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-06-28 00:00:00.000000000 Z
12
+ date: 2012-07-12 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: &70326208233400 !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: *70326208233400
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: sprockets
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &70326208232980 !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: *70326208232980
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: rake
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &70326208232560 !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: *70326208232560
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: sinatra
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &70326208232140 !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: *70326208232140
78
58
  - !ruby/object:Gem::Dependency
79
59
  name: shotgun
80
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &70326208231720 !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: *70326208231720
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: haml
96
- requirement: !ruby/object:Gem::Requirement
71
+ requirement: &70326208231300 !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: *70326208231300
110
80
  - !ruby/object:Gem::Dependency
111
81
  name: rspec
112
- requirement: !ruby/object:Gem::Requirement
82
+ requirement: &70326208230880 !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: *70326208230880
126
91
  - !ruby/object:Gem::Dependency
127
92
  name: capybara
128
- requirement: !ruby/object:Gem::Requirement
93
+ requirement: &70326208230460 !ruby/object:Gem::Requirement
129
94
  none: false
130
95
  requirements:
131
96
  - - ! '>='
@@ -133,15 +98,10 @@ dependencies:
133
98
  version: '0'
134
99
  type: :development
135
100
  prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ! '>='
140
- - !ruby/object:Gem::Version
141
- version: '0'
101
+ version_requirements: *70326208230460
142
102
  - !ruby/object:Gem::Dependency
143
103
  name: jasmine
144
- requirement: !ruby/object:Gem::Requirement
104
+ requirement: &70326208230040 !ruby/object:Gem::Requirement
145
105
  none: false
146
106
  requirements:
147
107
  - - ! '>='
@@ -149,12 +109,7 @@ dependencies:
149
109
  version: '0'
150
110
  type: :development
151
111
  prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
- requirements:
155
- - - ! '>='
156
- - !ruby/object:Gem::Version
157
- version: '0'
112
+ version_requirements: *70326208230040
158
113
  description: facebook-stub is a gem for stubbing out the Facebook JavaScript API in
159
114
  acceptance and integration tests.
160
115
  email:
@@ -205,7 +160,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
160
  version: '0'
206
161
  segments:
207
162
  - 0
208
- hash: -3213963571041860594
163
+ hash: -4042681251053903088
209
164
  required_rubygems_version: !ruby/object:Gem::Requirement
210
165
  none: false
211
166
  requirements:
@@ -214,10 +169,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
169
  version: '0'
215
170
  segments:
216
171
  - 0
217
- hash: -3213963571041860594
172
+ hash: -4042681251053903088
218
173
  requirements: []
219
174
  rubyforge_project: facebook-stub
220
- rubygems_version: 1.8.21
175
+ rubygems_version: 1.8.17
221
176
  signing_key:
222
177
  specification_version: 3
223
178
  summary: Stub out the FB JS API