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 +24 -8
- data/lib/facebook_stub/core.js +24 -8
- data/lib/facebook_stub/version.rb +1 -1
- data/spec/javascripts/FBApiSpec.js +33 -0
- metadata +23 -68
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
|
-
|
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
|
-
|
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
|
-
|
282
|
+
callbackResult = {id: randomPostId()};
|
274
283
|
} else if(/\/me\/.+:.+/.test(path) && method == 'post') {
|
275
284
|
FBWorld.posted({path: path, params: params});
|
276
|
-
|
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
|
-
|
317
|
+
callbackResult = result;
|
309
318
|
} else {
|
310
|
-
|
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
|
|
data/lib/facebook_stub/core.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
|
-
|
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
|
-
|
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
|
-
|
282
|
+
callbackResult = {id: randomPostId()};
|
274
283
|
} else if(/\/me\/.+:.+/.test(path) && method == 'post') {
|
275
284
|
FBWorld.posted({path: path, params: params});
|
276
|
-
|
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
|
-
|
317
|
+
callbackResult = result;
|
309
318
|
} else {
|
310
|
-
|
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
|
|
@@ -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.
|
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-
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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: -
|
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: -
|
172
|
+
hash: -4042681251053903088
|
218
173
|
requirements: []
|
219
174
|
rubyforge_project: facebook-stub
|
220
|
-
rubygems_version: 1.8.
|
175
|
+
rubygems_version: 1.8.17
|
221
176
|
signing_key:
|
222
177
|
specification_version: 3
|
223
178
|
summary: Stub out the FB JS API
|