facebook-stub 0.0.1.18 → 0.0.1.19

Sign up to get free protection for your applications and to get access to all the features.
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