corey-facebooker 1.0.28.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. data/CHANGELOG.rdoc +17 -0
  2. data/COPYING.rdoc +19 -0
  3. data/README.rdoc +104 -0
  4. data/Rakefile +86 -0
  5. data/TODO.rdoc +4 -0
  6. data/generators/facebook/facebook_generator.rb +14 -0
  7. data/generators/facebook/templates/config/facebooker.yml +49 -0
  8. data/generators/facebook/templates/public/javascripts/facebooker.js +99 -0
  9. data/generators/facebook_controller/USAGE +33 -0
  10. data/generators/facebook_controller/facebook_controller_generator.rb +40 -0
  11. data/generators/facebook_controller/templates/controller.rb +7 -0
  12. data/generators/facebook_controller/templates/functional_test.rb +11 -0
  13. data/generators/facebook_controller/templates/helper.rb +2 -0
  14. data/generators/facebook_controller/templates/view.fbml.erb +2 -0
  15. data/generators/facebook_controller/templates/view.html.erb +2 -0
  16. data/generators/facebook_publisher/facebook_publisher_generator.rb +14 -0
  17. data/generators/facebook_publisher/templates/create_facebook_templates.rb +15 -0
  18. data/generators/facebook_publisher/templates/publisher.rb +3 -0
  19. data/generators/facebook_scaffold/USAGE +27 -0
  20. data/generators/facebook_scaffold/facebook_scaffold_generator.rb +118 -0
  21. data/generators/facebook_scaffold/templates/controller.rb +93 -0
  22. data/generators/facebook_scaffold/templates/facebook_style.css +2579 -0
  23. data/generators/facebook_scaffold/templates/functional_test.rb +89 -0
  24. data/generators/facebook_scaffold/templates/helper.rb +2 -0
  25. data/generators/facebook_scaffold/templates/layout.fbml.erb +6 -0
  26. data/generators/facebook_scaffold/templates/layout.html.erb +17 -0
  27. data/generators/facebook_scaffold/templates/style.css +74 -0
  28. data/generators/facebook_scaffold/templates/view_edit.fbml.erb +13 -0
  29. data/generators/facebook_scaffold/templates/view_edit.html.erb +18 -0
  30. data/generators/facebook_scaffold/templates/view_index.fbml.erb +24 -0
  31. data/generators/facebook_scaffold/templates/view_index.html.erb +24 -0
  32. data/generators/facebook_scaffold/templates/view_new.fbml.erb +12 -0
  33. data/generators/facebook_scaffold/templates/view_new.html.erb +17 -0
  34. data/generators/facebook_scaffold/templates/view_show.fbml.erb +10 -0
  35. data/generators/facebook_scaffold/templates/view_show.html.erb +10 -0
  36. data/generators/publisher/publisher_generator.rb +14 -0
  37. data/generators/xd_receiver/templates/xd_receiver.html +10 -0
  38. data/generators/xd_receiver/xd_receiver_generator.rb +9 -0
  39. data/init.rb +23 -0
  40. data/install.rb +12 -0
  41. data/lib/facebooker.rb +181 -0
  42. data/lib/facebooker/adapters/adapter_base.rb +90 -0
  43. data/lib/facebooker/adapters/bebo_adapter.rb +75 -0
  44. data/lib/facebooker/adapters/facebook_adapter.rb +52 -0
  45. data/lib/facebooker/admin.rb +42 -0
  46. data/lib/facebooker/batch_request.rb +44 -0
  47. data/lib/facebooker/data.rb +57 -0
  48. data/lib/facebooker/feed.rb +78 -0
  49. data/lib/facebooker/logging.rb +51 -0
  50. data/lib/facebooker/mobile.rb +20 -0
  51. data/lib/facebooker/mock/service.rb +50 -0
  52. data/lib/facebooker/mock/session.rb +18 -0
  53. data/lib/facebooker/model.rb +137 -0
  54. data/lib/facebooker/models/affiliation.rb +10 -0
  55. data/lib/facebooker/models/album.rb +11 -0
  56. data/lib/facebooker/models/applicationproperties.rb +39 -0
  57. data/lib/facebooker/models/applicationrestrictions.rb +10 -0
  58. data/lib/facebooker/models/cookie.rb +10 -0
  59. data/lib/facebooker/models/education_info.rb +11 -0
  60. data/lib/facebooker/models/event.rb +28 -0
  61. data/lib/facebooker/models/friend_list.rb +16 -0
  62. data/lib/facebooker/models/group.rb +36 -0
  63. data/lib/facebooker/models/info_item.rb +10 -0
  64. data/lib/facebooker/models/info_section.rb +10 -0
  65. data/lib/facebooker/models/location.rb +8 -0
  66. data/lib/facebooker/models/notifications.rb +17 -0
  67. data/lib/facebooker/models/page.rb +27 -0
  68. data/lib/facebooker/models/photo.rb +12 -0
  69. data/lib/facebooker/models/tag.rb +12 -0
  70. data/lib/facebooker/models/user.rb +471 -0
  71. data/lib/facebooker/models/video.rb +9 -0
  72. data/lib/facebooker/models/work_info.rb +9 -0
  73. data/lib/facebooker/parser.rb +610 -0
  74. data/lib/facebooker/rails/controller.rb +307 -0
  75. data/lib/facebooker/rails/cucumber.rb +28 -0
  76. data/lib/facebooker/rails/cucumber/world.rb +46 -0
  77. data/lib/facebooker/rails/extensions/action_controller.rb +48 -0
  78. data/lib/facebooker/rails/extensions/rack_setup.rb +2 -0
  79. data/lib/facebooker/rails/extensions/routing.rb +15 -0
  80. data/lib/facebooker/rails/facebook_form_builder.rb +112 -0
  81. data/lib/facebooker/rails/facebook_pretty_errors.rb +22 -0
  82. data/lib/facebooker/rails/facebook_request_fix.rb +24 -0
  83. data/lib/facebooker/rails/facebook_session_handling.rb +69 -0
  84. data/lib/facebooker/rails/facebook_url_helper.rb +192 -0
  85. data/lib/facebooker/rails/facebook_url_rewriting.rb +52 -0
  86. data/lib/facebooker/rails/helpers.rb +772 -0
  87. data/lib/facebooker/rails/helpers/fb_connect.rb +99 -0
  88. data/lib/facebooker/rails/integration_session.rb +38 -0
  89. data/lib/facebooker/rails/profile_publisher_extensions.rb +42 -0
  90. data/lib/facebooker/rails/publisher.rb +530 -0
  91. data/lib/facebooker/rails/routing.rb +49 -0
  92. data/lib/facebooker/rails/test_helpers.rb +68 -0
  93. data/lib/facebooker/rails/utilities.rb +22 -0
  94. data/lib/facebooker/server_cache.rb +24 -0
  95. data/lib/facebooker/service.rb +94 -0
  96. data/lib/facebooker/session.rb +596 -0
  97. data/lib/facebooker/version.rb +9 -0
  98. data/lib/net/http_multipart_post.rb +123 -0
  99. data/lib/rack/facebook.rb +77 -0
  100. data/lib/tasks/facebooker.rake +18 -0
  101. data/lib/tasks/tunnel.rake +46 -0
  102. data/rails/init.rb +1 -0
  103. data/setup.rb +1585 -0
  104. data/templates/layout.erb +24 -0
  105. data/test/facebooker/adapters_test.rb +96 -0
  106. data/test/facebooker/admin_test.rb +102 -0
  107. data/test/facebooker/batch_request_test.rb +83 -0
  108. data/test/facebooker/data_test.rb +86 -0
  109. data/test/facebooker/logging_test.rb +43 -0
  110. data/test/facebooker/mobile_test.rb +45 -0
  111. data/test/facebooker/model_test.rb +123 -0
  112. data/test/facebooker/models/event_test.rb +15 -0
  113. data/test/facebooker/models/user_test.rb +331 -0
  114. data/test/facebooker/rails/publisher_test.rb +468 -0
  115. data/test/facebooker/rails_integration_test.rb +1349 -0
  116. data/test/facebooker/server_cache_test.rb +44 -0
  117. data/test/facebooker/session_test.rb +614 -0
  118. data/test/facebooker_test.rb +925 -0
  119. data/test/fixtures/multipart_post_body_with_only_parameters.txt +33 -0
  120. data/test/fixtures/multipart_post_body_with_single_file.txt +38 -0
  121. data/test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt +38 -0
  122. data/test/net/http_multipart_post_test.rb +52 -0
  123. data/test/rack/facebook_test.rb +62 -0
  124. data/test/rails_test_helper.rb +13 -0
  125. data/test/test_helper.rb +66 -0
  126. metadata +219 -0
@@ -0,0 +1,468 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../rails_test_helper')
2
+
3
+ module SymbolHelper
4
+ def symbol_helper_loaded
5
+ true
6
+ end
7
+ end
8
+
9
+ module ModuleHelper
10
+ def module_helper_loaded
11
+ true
12
+ end
13
+ end
14
+
15
+ ::RAILS_DEFAULT_LOGGER = Logger.new(STDOUT)
16
+
17
+ class TestPublisher < Facebooker::Rails::Publisher
18
+
19
+ helper :symbol
20
+ helper ModuleHelper
21
+
22
+ def action(f)
23
+ send_as :action
24
+ from f
25
+ title "Action Title"
26
+ end
27
+
28
+ def templatized_action(f)
29
+ send_as :templatized_action
30
+ from f
31
+ title_template "Templatized Action Title"
32
+ end
33
+
34
+ def story(to)
35
+ send_as :story
36
+ recipients to
37
+ title 'Story Title'
38
+ end
39
+
40
+ def notification(to,f)
41
+ send_as :notification
42
+ recipients to
43
+ from f
44
+ fbml "Not"
45
+ end
46
+
47
+ def email(to,f)
48
+ send_as :email
49
+ recipients to
50
+ from f
51
+ title "Email"
52
+ fbml 'text'
53
+ text fbml
54
+ end
55
+
56
+ def render_notification(to,f)
57
+ send_as :notification
58
+ recipients to
59
+ from f
60
+ fbml render(:inline=>"<%=module_helper_loaded%>")
61
+ end
62
+
63
+
64
+ def profile_update(to,f)
65
+ send_as :profile
66
+ recipients to
67
+ profile "profile"
68
+ profile_action "profile_action"
69
+ mobile_profile "mobile_profile"
70
+
71
+ end
72
+
73
+ def profile_update_with_profile_main(to,f)
74
+ send_as :profile
75
+ recipients to
76
+ from f
77
+ profile "profile"
78
+ profile_action "profile_action"
79
+ mobile_profile "mobile_profile"
80
+ profile_main "profile_main"
81
+ end
82
+
83
+ def ref_update(user)
84
+ send_as :ref
85
+ fbml "fbml"
86
+ handle "handle"
87
+ end
88
+
89
+ def user_action_template
90
+ one_line_story_template "{*actor*} did stuff with {*friend*}"
91
+ short_story_template "{*actor*} has a title {*friend*}", render(:inline=>"This is a test render")
92
+ full_story_template "{*actor*} did a lot","This is the full body",:img=>{:some_params=>true}
93
+ end
94
+
95
+ def simple_user_action_template
96
+ one_line_story_template "{*actor*} did stuff with {*friend*}"
97
+ end
98
+
99
+ def user_action_with_action_links_template
100
+ one_line_story_template "{*actor*} did stuff with {*friend*}"
101
+ short_story_template "{*actor*} has a title {*friend*}", render(:inline=>"This is a test render")
102
+ full_story_template "{*actor*} did a lot","This is the full body",:img=>{:some_params=>true}
103
+ action_links action_link("Source","HREF")
104
+ end
105
+
106
+ def user_action(user)
107
+ send_as :user_action
108
+ from user
109
+ data :friend=>"Mike"
110
+ end
111
+
112
+ def user_action_with_template_id(user)
113
+ send_as :user_action
114
+ from user
115
+ data :friend=>"Mike"
116
+ template_id 4
117
+ end
118
+ def user_action_with_story_size(user)
119
+ send_as :user_action
120
+ from user
121
+ story_size ONE_LINE
122
+ story_size FULL
123
+ story_size SHORT
124
+ data :friend=>"Mike"
125
+ end
126
+ def user_action_no_data(user)
127
+ send_as :user_action
128
+ from user
129
+ end
130
+
131
+ def no_send_as(to)
132
+ recipients to
133
+ end
134
+
135
+ def invalid_send_as(to)
136
+ send_as :fake
137
+ recipients to
138
+ end
139
+
140
+ end
141
+
142
+ class Facebooker::Rails::Publisher::FacebookTemplateTest < Test::Unit::TestCase
143
+ FacebookTemplate = Facebooker::Rails::Publisher::FacebookTemplate
144
+
145
+ def setup
146
+ super
147
+ @template = mock("facebook template")
148
+ FacebookTemplate.stubs(:register).returns(@template)
149
+ FacebookTemplate.clear_cache!
150
+ end
151
+
152
+ def test_find_or_register_calls_find_cached
153
+ FacebookTemplate.expects(:find_cached).with(TestPublisher,"simple_user_action").returns(@template)
154
+ assert_equal FacebookTemplate.for_class_and_method(TestPublisher,"simple_user_action"),@template
155
+ end
156
+
157
+ def test_find_cached_should_use_cached_if_it_exists
158
+ FacebookTemplate.cache(TestPublisher,"simple_user_action",@template)
159
+ assert_equal FacebookTemplate.find_cached(TestPublisher,"simple_user_action"), @template
160
+
161
+ end
162
+
163
+ def test_find_cached_should_call_find_in_db_if_not_in_cache
164
+ FacebookTemplate.expects(:find_in_db).with(TestPublisher,"simple_user_action").returns(@template)
165
+ assert_equal FacebookTemplate.find_cached(TestPublisher,"simple_user_action"), @template
166
+ end
167
+
168
+ def test_find_in_db_should_run_find
169
+ FacebookTemplate.expects(:find_by_template_name).with("TestPublisher::simple_user_action").returns(@template)
170
+ @template.stubs(:template_changed?).returns(false)
171
+ assert_equal FacebookTemplate.find_in_db(TestPublisher,"simple_user_action"), @template
172
+ end
173
+
174
+ def test_find_in_db_should_register_if_not_found
175
+ FacebookTemplate.expects(:find_by_template_name).with("TestPublisher::simple_user_action").returns(nil)
176
+ FacebookTemplate.expects(:register).with(TestPublisher,"simple_user_action").returns(@template)
177
+ FacebookTemplate.find_cached(TestPublisher,"simple_user_action")
178
+
179
+ end
180
+
181
+ def test_find_in_db_should_check_for_change_if_found
182
+ FacebookTemplate.stubs(:find_by_template_name).returns(@template)
183
+ FacebookTemplate.stubs(:hashed_content).returns("MY CONTENT")
184
+ @template.expects(:template_changed?).with("MY CONTENT").returns(false)
185
+ FacebookTemplate.find_in_db(TestPublisher,"simple_user_action")
186
+ end
187
+
188
+ def test_find_in_db_should_destroy_old_record_if_changed
189
+ FacebookTemplate.stubs(:find_by_template_name).returns(@template)
190
+ FacebookTemplate.stubs(:hashed_content).returns("MY CONTENT")
191
+ @template.stubs(:template_changed?).returns(true)
192
+ @template.expects(:destroy)
193
+ FacebookTemplate.find_in_db(TestPublisher,"simple_user_action")
194
+ end
195
+
196
+ def test_find_in_db_should_re_register_if_changed
197
+ FacebookTemplate.stubs(:find_by_template_name).with("TestPublisher::simple_user_action").returns(@template)
198
+ FacebookTemplate.stubs(:hashed_content).returns("MY CONTENT")
199
+ @template.stubs(:template_changed?).returns(true)
200
+ @template.stubs(:destroy)
201
+ FacebookTemplate.expects(:register).with(TestPublisher,"simple_user_action").returns(@template)
202
+ FacebookTemplate.find_in_db(TestPublisher,"simple_user_action")
203
+ end
204
+ end
205
+
206
+ class Facebooker::Rails::Publisher::PublisherTest < Test::Unit::TestCase
207
+ FacebookTemplate = Facebooker::Rails::Publisher::FacebookTemplate
208
+
209
+ def setup
210
+ super
211
+ @user = Facebooker::User.new
212
+ @user.id=4
213
+ @session = "session"
214
+ @user.stubs(:session).returns(@session)
215
+ end
216
+
217
+ def teardown
218
+ super
219
+ end
220
+
221
+ def test_create_action
222
+ action=TestPublisher.create_action(@user)
223
+ assert_equal Facebooker::Feed::Action,action.class
224
+ assert_equal "Action Title",action.title
225
+ end
226
+
227
+ def test_deliver_action
228
+ @user.expects(:publish_action)
229
+ TestPublisher.deliver_action(@user)
230
+ end
231
+
232
+ def test_create_story
233
+ action=TestPublisher.create_story(@user)
234
+ assert_equal Facebooker::Feed::Story,action.class
235
+ assert_equal "Story Title",action.title
236
+ end
237
+
238
+ def test_deliver_story
239
+ @user.expects(:publish_story)
240
+ TestPublisher.deliver_story(@user)
241
+ end
242
+
243
+ def test_create_notification
244
+ notification=TestPublisher.create_notification(12451752,@user)
245
+ assert_equal Facebooker::Rails::Publisher::Notification,notification.class
246
+ assert_equal "Not",notification.fbml
247
+ end
248
+
249
+ def test_deliver_notification
250
+ @session.expects(:send_notification)
251
+ TestPublisher.deliver_notification("12451752",@user)
252
+ end
253
+
254
+ def test_create_email
255
+ email=TestPublisher.create_email("12451752",@user)
256
+ assert_equal Facebooker::Rails::Publisher::Email,email.class
257
+ assert_equal "Email",email.title
258
+ assert_equal "text",email.text
259
+ assert_equal "text",email.fbml
260
+ end
261
+
262
+ def test_deliver_email
263
+ @session.expects(:send_email)
264
+ TestPublisher.deliver_email("12451752",@user)
265
+ end
266
+
267
+ def test_create_templatized_action
268
+ ta=TestPublisher.create_templatized_action(@user)
269
+ assert_equal Facebooker::Feed::TemplatizedAction,ta.class
270
+ assert_equal "Templatized Action Title",ta.title_template
271
+
272
+ end
273
+
274
+
275
+
276
+ def test_deliver_templatized_action
277
+ @user.expects(:publish_action)
278
+ TestPublisher.deliver_templatized_action(@user)
279
+ end
280
+ def test_create_profile_update
281
+ p=TestPublisher.create_profile_update(@user,@user)
282
+ assert_equal Facebooker::Rails::Publisher::Profile,p.class
283
+ assert_equal "profile",p.profile
284
+ assert_equal "profile_action",p.profile_action
285
+ assert_equal "mobile_profile",p.mobile_profile
286
+ end
287
+ def test_create_profile_update_with_profile_main
288
+ p=TestPublisher.create_profile_update_with_profile_main(@user,@user)
289
+ assert_equal Facebooker::Rails::Publisher::Profile,p.class
290
+ assert_equal "profile",p.profile
291
+ assert_equal "profile_action",p.profile_action
292
+ assert_equal "mobile_profile",p.mobile_profile
293
+ assert_equal "profile_main",p.profile_main
294
+ end
295
+
296
+
297
+ def test_deliver_profile
298
+ Facebooker::User.stubs(:new).returns(@user)
299
+ @user.expects(:set_profile_fbml).with('profile', 'mobile_profile', 'profile_action',nil)
300
+ TestPublisher.deliver_profile_update(@user,@user)
301
+ end
302
+
303
+ def test_deliver_profile_with_main
304
+ Facebooker::User.stubs(:new).returns(@user)
305
+ @user.expects(:set_profile_fbml).with('profile', 'mobile_profile', 'profile_action','profile_main')
306
+ TestPublisher.deliver_profile_update_with_profile_main(@user,@user)
307
+ end
308
+
309
+
310
+ def test_create_ref_update
311
+ p=TestPublisher.create_ref_update(@user)
312
+ assert_equal Facebooker::Rails::Publisher::Ref,p.class
313
+ assert_equal "fbml",p.fbml
314
+ assert_equal "handle",p.handle
315
+ end
316
+
317
+ def test_deliver_ref_update
318
+ Facebooker::Session.stubs(:create).returns(@session)
319
+ @server_cache="server_cache"
320
+ @session.expects(:server_cache).returns(@server_cache)
321
+ @server_cache.expects(:set_ref_handle).with("handle","fbml")
322
+ TestPublisher.deliver_ref_update(@user)
323
+ end
324
+
325
+ def test_register_user_action
326
+ Facebooker::Rails::Publisher::FacebookTemplate.expects(:register)
327
+ TestPublisher.register_user_action
328
+ end
329
+ def test_register_user_action_with_action_links
330
+ ActionController::Base.append_view_path("./test/../../app/views")
331
+ Facebooker::Rails::Publisher::FacebookTemplate.expects(:register)
332
+ TestPublisher.register_user_action_with_action_links
333
+ end
334
+
335
+ def test_create_user_action
336
+ @from_user = Facebooker::User.new
337
+ @session = Facebooker::Session.new("","")
338
+ @from_user.stubs(:session).returns(@session)
339
+ Facebooker::Rails::Publisher::FacebookTemplate.expects(:bundle_id_for_class_and_method).
340
+ with(TestPublisher,'user_action').
341
+ returns(20309041537)
342
+ ua = TestPublisher.create_user_action(@from_user)
343
+ assert_equal "user_action", ua.template_name
344
+ end
345
+ def test_create_user_action_with_template_id
346
+ @from_user = Facebooker::User.new
347
+ @session = Facebooker::Session.new("","")
348
+ @from_user.stubs(:session).returns(@session)
349
+ Facebooker::Rails::Publisher::FacebookTemplate.expects(:bundle_id_for_class_and_method).
350
+ with(TestPublisher,'user_action').never
351
+ ua = TestPublisher.create_user_action_with_template_id(@from_user)
352
+ assert_equal 4,ua.template_id
353
+ end
354
+
355
+ def test_publisher_user_action
356
+ @from_user = Facebooker::User.new
357
+ @session = Facebooker::Session.new("","")
358
+ @from_user.stubs(:session).returns(@session)
359
+ @session.expects(:publish_user_action).with(20309041537,{:friend=>"Mike"},nil,nil,nil)
360
+
361
+ Facebooker::Rails::Publisher::FacebookTemplate.expects(:bundle_id_for_class_and_method).
362
+ with(TestPublisher, 'user_action').
363
+ returns(20309041537)
364
+ # pseudo_template = Struct.new(:bundle_id, :content_hash).new(20309041537, '')
365
+ # pseudo_template.expects(:matches_content?).returns(true)
366
+ # Facebooker::Rails::Publisher::FacebookTemplate.expects(:for).returns(pseudo_template)
367
+ TestPublisher.deliver_user_action(@from_user)
368
+ end
369
+
370
+ def test_publish_user_action_with_story_size
371
+ @from_user = Facebooker::User.new
372
+ @session = Facebooker::Session.new("","")
373
+ @from_user.stubs(:session).returns(@session)
374
+ @session.expects(:publish_user_action).with(20309041537,{:friend=>"Mike"},nil,nil,2)
375
+
376
+ Facebooker::Rails::Publisher::FacebookTemplate.expects(:bundle_id_for_class_and_method).
377
+ with(TestPublisher, 'user_action_with_story_size').
378
+ returns(20309041537)
379
+ TestPublisher.deliver_user_action_with_story_size(@from_user)
380
+
381
+ end
382
+
383
+ def test_publishing_user_data_no_action_gives_nil_hash
384
+ @from_user = Facebooker::User.new
385
+ @session = Facebooker::Session.new("","")
386
+ @from_user.stubs(:session).returns(@session)
387
+ @session.expects(:publish_user_action).with(20309041537,{},nil,nil,nil)
388
+
389
+ Facebooker::Rails::Publisher::FacebookTemplate.stubs(:bundle_id_for_class_and_method).returns(20309041537)
390
+ TestPublisher.deliver_user_action_no_data(@from_user)
391
+ end
392
+ def test_no_sends_as_raises
393
+ assert_raises(Facebooker::Rails::Publisher::UnspecifiedBodyType) {
394
+ TestPublisher.deliver_no_send_as(@user)
395
+ }
396
+ end
397
+
398
+ def test_invalid_send_as_raises
399
+ assert_raises(Facebooker::Rails::Publisher::UnknownBodyType) {
400
+ TestPublisher.deliver_invalid_send_as(@user)
401
+ }
402
+ end
403
+
404
+
405
+ def test_keeps_class_method_missing
406
+ assert_raises(NoMethodError) {
407
+ TestPublisher.fake
408
+ }
409
+ end
410
+ def test_keeps_instance_method_missing
411
+ assert_raises(NoMethodError) {
412
+ TestPublisher.new.fake
413
+ }
414
+ end
415
+
416
+ def test_image_urls
417
+ Facebooker.expects(:facebook_path_prefix).returns("/mike")
418
+ string_image = TestPublisher.new.image('image.png', 'raw_string')
419
+ assert_equal('/images/image.png',string_image.src)
420
+ assert_equal('raw_string',string_image.href)
421
+ route_image = TestPublisher.new.image('image.png', {:controller => :pokes, :action => :do, :id => 1})
422
+ assert_equal('http://apps.facebook.com/mike/pokes/do/1',route_image.href)
423
+ end
424
+
425
+ def test_image_to_json_puts_src_first
426
+ string_image = TestPublisher.new.image('image.png', 'raw_string')
427
+ assert_equal "{\"src\":\"/images/image.png\", \"href\":\"raw_string\"}",string_image.to_json
428
+ end
429
+ def test_action_link
430
+ assert_equal({:text=>"text", :href=>"href"}, TestPublisher.new.action_link("text","href"))
431
+ end
432
+
433
+ def test_default_url_options
434
+ Facebooker.expects(:facebook_path_prefix).returns("/mike")
435
+ assert_equal({:host=>"apps.facebook.com/mike"},TestPublisher.default_url_options)
436
+ end
437
+
438
+ def test_recipients
439
+ tp=TestPublisher.new
440
+ tp.recipients "a"
441
+ assert_equal("a",tp.recipients)
442
+ end
443
+
444
+ def test_symbol_helper
445
+ assert TestPublisher.new.symbol_helper_loaded
446
+ end
447
+ def test_module_helper
448
+ assert TestPublisher.new.module_helper_loaded
449
+ end
450
+
451
+ def test_with_render
452
+ #normally Rails would do this for us
453
+ if ActionController::Base.respond_to?(:append_view_path)
454
+ ActionController::Base.append_view_path("./test/../../app/views")
455
+ end
456
+ notification=TestPublisher.create_render_notification(12451752,@user)
457
+ assert_equal "true",notification.fbml
458
+ end
459
+
460
+ def test_notification_as_announcement
461
+ #normally Rails would do this for us
462
+ if ActionController::Base.respond_to?(:append_view_path)
463
+ ActionController::Base.append_view_path("./test/../../app/views")
464
+ end
465
+ notification=TestPublisher.create_render_notification(12451752,nil)
466
+ assert_equal "true",notification.fbml
467
+ end
468
+ end