facebooker-lite 1.0.67
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/.autotest +15 -0
- data/CHANGELOG.rdoc +24 -0
- data/COPYING.rdoc +19 -0
- data/Manifest.txt +114 -0
- data/README.rdoc +120 -0
- data/Rakefile +94 -0
- data/TODO.rdoc +4 -0
- data/facebooker.gemspec +42 -0
- data/generators/xd_receiver/templates/xd_receiver.html +10 -0
- data/generators/xd_receiver/templates/xd_receiver_ssl.html +10 -0
- data/generators/xd_receiver/xd_receiver_generator.rb +10 -0
- data/init.rb +25 -0
- data/install.rb +12 -0
- data/lib/facebooker.rb +261 -0
- data/lib/facebooker/adapters/adapter_base.rb +91 -0
- data/lib/facebooker/adapters/bebo_adapter.rb +77 -0
- data/lib/facebooker/adapters/facebook_adapter.rb +60 -0
- data/lib/facebooker/admin.rb +42 -0
- data/lib/facebooker/application.rb +37 -0
- data/lib/facebooker/attachment.rb +51 -0
- data/lib/facebooker/batch_request.rb +45 -0
- data/lib/facebooker/data.rb +57 -0
- data/lib/facebooker/feed.rb +78 -0
- data/lib/facebooker/logging.rb +44 -0
- data/lib/facebooker/mobile.rb +20 -0
- data/lib/facebooker/mock/service.rb +50 -0
- data/lib/facebooker/mock/session.rb +18 -0
- data/lib/facebooker/model.rb +139 -0
- data/lib/facebooker/models/affiliation.rb +10 -0
- data/lib/facebooker/models/album.rb +11 -0
- data/lib/facebooker/models/applicationproperties.rb +39 -0
- data/lib/facebooker/models/applicationrestrictions.rb +10 -0
- data/lib/facebooker/models/comment.rb +9 -0
- data/lib/facebooker/models/cookie.rb +10 -0
- data/lib/facebooker/models/education_info.rb +11 -0
- data/lib/facebooker/models/event.rb +28 -0
- data/lib/facebooker/models/family_relative_info.rb +7 -0
- data/lib/facebooker/models/friend_list.rb +16 -0
- data/lib/facebooker/models/group.rb +36 -0
- data/lib/facebooker/models/info_item.rb +10 -0
- data/lib/facebooker/models/info_section.rb +10 -0
- data/lib/facebooker/models/location.rb +8 -0
- data/lib/facebooker/models/message_thread.rb +89 -0
- data/lib/facebooker/models/notifications.rb +17 -0
- data/lib/facebooker/models/page.rb +46 -0
- data/lib/facebooker/models/photo.rb +19 -0
- data/lib/facebooker/models/tag.rb +12 -0
- data/lib/facebooker/models/user.rb +751 -0
- data/lib/facebooker/models/video.rb +9 -0
- data/lib/facebooker/models/work_info.rb +10 -0
- data/lib/facebooker/parser.rb +970 -0
- data/lib/facebooker/rails/backwards_compatible_param_checks.rb +31 -0
- data/lib/facebooker/rails/controller.rb +353 -0
- data/lib/facebooker/rails/extensions/action_controller.rb +47 -0
- data/lib/facebooker/rails/extensions/rack_setup.rb +16 -0
- data/lib/facebooker/rails/extensions/routing.rb +15 -0
- data/lib/facebooker/rails/facebook_pretty_errors.rb +22 -0
- data/lib/facebooker/rails/facebook_request_fix.rb +28 -0
- data/lib/facebooker/rails/facebook_request_fix_2-3.rb +31 -0
- data/lib/facebooker/rails/facebook_session_handling.rb +68 -0
- data/lib/facebooker/rails/facebook_url_rewriting.rb +60 -0
- data/lib/facebooker/rails/helpers/fb_connect.rb +75 -0
- data/lib/facebooker/rails/integration_session.rb +38 -0
- data/lib/facebooker/rails/profile_publisher_extensions.rb +42 -0
- data/lib/facebooker/rails/publisher.rb +608 -0
- data/lib/facebooker/rails/routing.rb +49 -0
- data/lib/facebooker/rails/test_helpers.rb +68 -0
- data/lib/facebooker/rails/utilities.rb +22 -0
- data/lib/facebooker/server_cache.rb +24 -0
- data/lib/facebooker/service.rb +103 -0
- data/lib/facebooker/service/base_service.rb +19 -0
- data/lib/facebooker/service/curl_service.rb +44 -0
- data/lib/facebooker/service/net_http_service.rb +12 -0
- data/lib/facebooker/service/typhoeus_multi_service.rb +27 -0
- data/lib/facebooker/service/typhoeus_service.rb +17 -0
- data/lib/facebooker/session.rb +786 -0
- data/lib/facebooker/stream_post.rb +19 -0
- data/lib/facebooker/version.rb +9 -0
- data/lib/net/http_multipart_post.rb +123 -0
- data/lib/rack/facebook.rb +89 -0
- data/lib/rack/facebook_session.rb +21 -0
- data/lib/tasks/facebooker.rake +19 -0
- data/lib/tasks/facebooker.rb +2 -0
- data/lib/tasks/tunnel.rake +46 -0
- data/rails/init.rb +1 -0
- data/setup.rb +1585 -0
- data/templates/layout.erb +24 -0
- data/test/facebooker/adapters_test.rb +191 -0
- data/test/facebooker/admin_test.rb +102 -0
- data/test/facebooker/application_test.rb +110 -0
- data/test/facebooker/attachment_test.rb +72 -0
- data/test/facebooker/batch_request_test.rb +83 -0
- data/test/facebooker/data_test.rb +86 -0
- data/test/facebooker/logging_test.rb +43 -0
- data/test/facebooker/mobile_test.rb +45 -0
- data/test/facebooker/model_test.rb +133 -0
- data/test/facebooker/models/event_test.rb +15 -0
- data/test/facebooker/models/page_test.rb +56 -0
- data/test/facebooker/models/photo_test.rb +16 -0
- data/test/facebooker/models/user_test.rb +1074 -0
- data/test/facebooker/rails/facebook_request_fix_2-3_test.rb +25 -0
- data/test/facebooker/rails/facebook_url_rewriting_test.rb +76 -0
- data/test/facebooker/rails/integration_session_test.rb +13 -0
- data/test/facebooker/rails/publisher_test.rb +538 -0
- data/test/facebooker/rails_integration_test.rb +1543 -0
- data/test/facebooker/server_cache_test.rb +44 -0
- data/test/facebooker/service_test.rb +58 -0
- data/test/facebooker/session_test.rb +883 -0
- data/test/facebooker_test.rb +1263 -0
- data/test/fixtures/multipart_post_body_with_only_parameters.txt +33 -0
- data/test/fixtures/multipart_post_body_with_single_file.txt +38 -0
- data/test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt +38 -0
- data/test/net/http_multipart_post_test.rb +52 -0
- data/test/rack/facebook_session_test.rb +34 -0
- data/test/rack/facebook_test.rb +73 -0
- data/test/rails_test_helper.rb +36 -0
- data/test/test_helper.rb +74 -0
- metadata +278 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
|
2
|
+
|
|
3
|
+
class Facebooker::BatchRequestTest < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@proc_called=false
|
|
7
|
+
@batch_request=Facebooker::BatchRequest.new({:params=>true},nil)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_can_set_result
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_can_set_result_with_proc_and_have_proc_called
|
|
15
|
+
p=Proc.new {@proc_called=true}
|
|
16
|
+
|
|
17
|
+
@batch_request=Facebooker::BatchRequest.new({:params=>true},p)
|
|
18
|
+
@batch_request.result="Mike"
|
|
19
|
+
assert @proc_called
|
|
20
|
+
end
|
|
21
|
+
def test_can_set_result_with_proc_and_use_proc_result
|
|
22
|
+
p=Proc.new {@proc_called=true}
|
|
23
|
+
|
|
24
|
+
@batch_request=Facebooker::BatchRequest.new({:params=>true},p)
|
|
25
|
+
@batch_request.result="Mike"
|
|
26
|
+
assert @batch_request
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_proxies_methods
|
|
30
|
+
@batch_request.result="Mike"
|
|
31
|
+
assert @batch_request == "Mike"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_threequal_works
|
|
35
|
+
@batch_request.result="Mike"
|
|
36
|
+
assert @batch_request === String
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_can_set_exception_and_check_it
|
|
40
|
+
@batch_request.exception_raised=ArgumentError.new
|
|
41
|
+
assert_raises(ArgumentError) {
|
|
42
|
+
@batch_request.exception_raised?
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
def test_can_set_exception_and_have_it_raised_on_access
|
|
46
|
+
@batch_request.exception_raised=ArgumentError.new
|
|
47
|
+
assert_raises(ArgumentError) {
|
|
48
|
+
@batch_request == true
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
def test_exception_raised_false_when_no_exception
|
|
52
|
+
@batch_request.result="Mike"
|
|
53
|
+
assert ! @batch_request.exception_raised?
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# def test_case_works
|
|
57
|
+
# @batch_request.result="Mike"
|
|
58
|
+
# case @batch_request
|
|
59
|
+
# when String
|
|
60
|
+
# else
|
|
61
|
+
# fail("case failed")
|
|
62
|
+
# end
|
|
63
|
+
#
|
|
64
|
+
# end
|
|
65
|
+
|
|
66
|
+
def test_calling_method_without_result_raises_exception
|
|
67
|
+
assert_raises(Facebooker::BatchRequest::UnexecutedRequest) {
|
|
68
|
+
@batch_request.to_s
|
|
69
|
+
}
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def test_respond_to
|
|
73
|
+
@batch_request.result=[]
|
|
74
|
+
assert @batch_request.respond_to?(:empty?)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def test_calling_method_after_exception_re_raises_exception
|
|
78
|
+
@batch_request.result="String"
|
|
79
|
+
assert_raises(NoMethodError) {
|
|
80
|
+
@batch_request.fake
|
|
81
|
+
}
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
|
2
|
+
|
|
3
|
+
class Facebooker::DataTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@session = Facebooker::Session.create('apikey', 'secretkey')
|
|
6
|
+
#make sure we use net::http since that's what the tests expect
|
|
7
|
+
Facebooker.use_curl=false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_can_ask_facebook_to_set_a_cookies
|
|
11
|
+
expect_http_posts_with_responses(example_set_cookie_xml)
|
|
12
|
+
assert(@session.data.set_cookie(12345, 'name', 'value'))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_can_ask_facebook_to_get_cookies
|
|
16
|
+
expect_http_posts_with_responses(example_get_cookies_xml)
|
|
17
|
+
assert(@session.data.get_cookies(12345))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_can_get_cookies_for_user
|
|
21
|
+
mock_http = establish_session
|
|
22
|
+
mock_http.should_receive(:post_form).and_return(example_get_cookies_xml).once.ordered(:posts)
|
|
23
|
+
cookies = @session.data.get_cookies(508508326)
|
|
24
|
+
assert_equal 'Foo', cookies.first.name
|
|
25
|
+
assert_equal 'Bar', cookies.first.value
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_can_ask_facebook_to_set_a_preference
|
|
29
|
+
expect_http_posts_with_responses(example_set_preference_xml)
|
|
30
|
+
assert(@session.data.set_preference(0, 'hello'))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_can_ask_facebook_to_get_preference
|
|
34
|
+
expect_http_posts_with_responses(example_get_preference_xml)
|
|
35
|
+
assert(@session.data.get_preference(0))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_can_get_preference
|
|
39
|
+
mock_http = establish_session
|
|
40
|
+
mock_http.should_receive(:post_form).and_return(example_get_preference_xml).once.ordered(:posts)
|
|
41
|
+
assert_equal 'hello', @session.data.get_preference(0)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
def example_set_cookie_xml
|
|
46
|
+
<<-XML
|
|
47
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
48
|
+
<data_setCookie_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
49
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</data_setCookie_response>
|
|
50
|
+
XML
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def example_get_cookies_xml
|
|
54
|
+
<<-XML
|
|
55
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
56
|
+
<data_getCookie_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
57
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
|
|
58
|
+
<cookies>
|
|
59
|
+
<uid>508508326</uid>
|
|
60
|
+
<name>Foo</name>
|
|
61
|
+
<value>Bar</value>
|
|
62
|
+
<expires>0</expires>
|
|
63
|
+
<path>/tmp/</path>
|
|
64
|
+
</cookies>
|
|
65
|
+
</data_getCookie_response>
|
|
66
|
+
XML
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def example_set_preference_xml
|
|
70
|
+
<<-XML
|
|
71
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
72
|
+
<data_setUserPreference_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
73
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd"/>
|
|
74
|
+
XML
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def example_get_preference_xml
|
|
78
|
+
<<-XML
|
|
79
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
80
|
+
<data_getUserPreference_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
81
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
|
|
82
|
+
hello
|
|
83
|
+
</data_getUserPreference_response>
|
|
84
|
+
XML
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
|
2
|
+
require 'logger'
|
|
3
|
+
|
|
4
|
+
class Facebooker::LoggingTest < Test::Unit::TestCase
|
|
5
|
+
def setup
|
|
6
|
+
super
|
|
7
|
+
Facebooker.logger = Logger.new(STDERR)
|
|
8
|
+
Facebooker::Logging.skip_api_logging=false
|
|
9
|
+
end
|
|
10
|
+
def teardown
|
|
11
|
+
Facebooker.logger = nil
|
|
12
|
+
super
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_does_not_crash_with_nil_logger
|
|
16
|
+
Facebooker.logger = nil
|
|
17
|
+
Facebooker::Logging.log_fb_api('sample.api.call',
|
|
18
|
+
{'param1' => true, 'param2' => 'value2'})
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_does_not_crash_outside_rails
|
|
22
|
+
flexmock(Facebooker.logger, :logger).should_receive(:info).once.with(String)
|
|
23
|
+
Facebooker::Logging.log_fb_api('sample.api.call',
|
|
24
|
+
{'param1' => true, 'param2' => 'value2'})
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_can_disable_logging
|
|
28
|
+
Facebooker::Logging.skip_api_logging = true
|
|
29
|
+
flexmock(Facebooker::Logging).should_receive(:log_info).never
|
|
30
|
+
Facebooker::Logging.log_fb_api('sample.api.call',
|
|
31
|
+
{'param1' => true, 'param2' => 'value2'})
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_plain_format
|
|
35
|
+
flexmock(Facebooker.logger, :logger).should_receive(:info).once.with(
|
|
36
|
+
'sample.api.call (0) param1 = true')
|
|
37
|
+
Facebooker::Logging.log_fb_api('sample.api.call',
|
|
38
|
+
{'param1' => true})
|
|
39
|
+
ensure
|
|
40
|
+
Facebooker.logger = nil
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
|
2
|
+
|
|
3
|
+
class Facebooker::MobileTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@session = Facebooker::Session.create('apikey', 'secretkey')
|
|
6
|
+
@user = Facebooker::User.new(1234, @session)
|
|
7
|
+
Facebooker.use_curl=false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_can_send
|
|
11
|
+
expect_http_posts_with_responses(example_can_send_xml)
|
|
12
|
+
assert(@session.mobile.can_send(@user))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_send
|
|
16
|
+
expect_http_posts_with_responses(example_send_xml)
|
|
17
|
+
assert(@session.mobile.send(@user, "Some sort of message"))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
def example_can_send_xml
|
|
22
|
+
<<-XML
|
|
23
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
24
|
+
<sms_canSend_response
|
|
25
|
+
xmlns="http://api.facebook.com/1.0/"
|
|
26
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
27
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/http://api.facebook.com/1.0/facebook.xsd">
|
|
28
|
+
0
|
|
29
|
+
</sms_canSend_response>
|
|
30
|
+
XML
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def example_send_xml
|
|
34
|
+
<<-XML
|
|
35
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
36
|
+
<sms_send_response
|
|
37
|
+
xmlns="http://api.facebook.com/1.0/"
|
|
38
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
39
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/http://api.facebook.com/1.0/facebook.xsd">
|
|
40
|
+
0
|
|
41
|
+
</sms_send_response>
|
|
42
|
+
XML
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
|
2
|
+
|
|
3
|
+
class Facebooker::ModelTest < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
class ComplexThing
|
|
6
|
+
include Facebooker::Model
|
|
7
|
+
attr_accessor :weight, :height
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class Thing
|
|
11
|
+
include Facebooker::Model
|
|
12
|
+
attr_accessor :name, :job
|
|
13
|
+
hash_settable_accessor :complex_thing, ComplexThing
|
|
14
|
+
hash_settable_list_accessor :list_of_complex_things, ComplexThing
|
|
15
|
+
|
|
16
|
+
def initialize *args
|
|
17
|
+
@session = nil
|
|
18
|
+
super
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class PopulatingThing
|
|
23
|
+
include Facebooker::Model
|
|
24
|
+
populating_attr_accessor :first_name
|
|
25
|
+
|
|
26
|
+
def initialize
|
|
27
|
+
@first_name = nil
|
|
28
|
+
@populated = false
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_can_instantiate_an_object_with_a_hash
|
|
33
|
+
h = {:name => "Blob", :job => "Monster"}
|
|
34
|
+
assert_equal("Blob", Thing.from_hash(h).name)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_ignores_non_model_keys
|
|
38
|
+
h = {:name => "Blob", :job => "Monster", :not_there=>true}
|
|
39
|
+
assert_equal("Blob", Thing.from_hash(h).name)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_logs_non_model_keys
|
|
43
|
+
flexmock(Facebooker::Logging).should_receive(:log_info)
|
|
44
|
+
h = {:name => "Blob", :job => "Monster", :not_there=>true}
|
|
45
|
+
Thing.from_hash(h)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_if_no_hash_is_given_to_model_constructor_no_attributes_are_set
|
|
50
|
+
assert_nothing_raised {
|
|
51
|
+
t = Thing.new
|
|
52
|
+
assert_nil(t.name)
|
|
53
|
+
}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_can_declare_hash_settable_attributes
|
|
57
|
+
t = Thing.new({})
|
|
58
|
+
t.complex_thing = {:weight => 123, :height => 5.4}
|
|
59
|
+
assert_equal(123, t.complex_thing.weight)
|
|
60
|
+
t.complex_thing = ComplexThing.new(:weight => 321)
|
|
61
|
+
assert_equal(321, t.complex_thing.weight)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_can_declare_attributes_which_are_settable_via_a_list_of_hashes
|
|
65
|
+
t = Thing.new
|
|
66
|
+
t.list_of_complex_things = [{:weight => 444, :height => 123.0}, {:weight => 222, :height => 321.1}]
|
|
67
|
+
assert_equal("123.0, 321.1", t.list_of_complex_things.map{|ct| ct.height.to_s}.sort.join(', '))
|
|
68
|
+
t.list_of_complex_things = [ComplexThing.new(:weight => 555), ComplexThing.new(:weight => 111)]
|
|
69
|
+
assert_equal("111, 555", t.list_of_complex_things.map{|ct| ct.weight.to_s}.sort.join(', '))
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def test_if_you_try_to_use_a_models_session_without_initializing_it_first_you_get_a_descriptive_error
|
|
73
|
+
t = Thing.new
|
|
74
|
+
assert_raises(Facebooker::Model::UnboundSessionException) {
|
|
75
|
+
t.session
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_populating_reader_will_call_populate_if_model_was_not_previously_populated
|
|
80
|
+
t = PopulatingThing.new
|
|
81
|
+
flexmock(t).should_receive(:populate).once
|
|
82
|
+
t.first_name
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_populating_reader_will_not_call_populate_if_model_was_previously_populated
|
|
86
|
+
t = PopulatingThing.new
|
|
87
|
+
flexmock(t).should_receive(:populated?).and_return(true)
|
|
88
|
+
flexmock(t).should_receive(:populate).never
|
|
89
|
+
t.first_name
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_attempting_to_access_a_populating_reader_will_raise_an_exception_if_populate_was_not_defined
|
|
93
|
+
t = PopulatingThing.new
|
|
94
|
+
assert_raises(NotImplementedError) {
|
|
95
|
+
t.first_name
|
|
96
|
+
}
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def test_populate_from_hash_e_should_call_a_setter_for_a_key
|
|
100
|
+
t = PopulatingThing.new
|
|
101
|
+
flexmock(t).should_receive('mykey=').with('a value')
|
|
102
|
+
t.populate_from_hash!({ :mykey => 'a value' })
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_populate_from_hash_e_should_call_a_setter_for_a_key_if_the_value_is_false
|
|
106
|
+
t = PopulatingThing.new
|
|
107
|
+
flexmock(t).should_receive('mykey=').with(false)
|
|
108
|
+
t.populate_from_hash!({ :mykey => false })
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def test_populate_from_hash_e_should_call_not_a_setter_for_a_key_if_the_value_is_nil
|
|
112
|
+
t = PopulatingThing.new
|
|
113
|
+
flexmock(t).should_receive('mykey=').never
|
|
114
|
+
t.populate_from_hash!({ :mykey => nil })
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_populate_from_hash_should_check_for_an_empty_hash
|
|
118
|
+
t = PopulatingThing.new
|
|
119
|
+
hash = {}
|
|
120
|
+
flexmock(hash).should_receive('empty?')
|
|
121
|
+
t.populate_from_hash!(hash)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def test_populate_from_hash_should_check_for_a_nil_param
|
|
125
|
+
t = PopulatingThing.new
|
|
126
|
+
hash = nil
|
|
127
|
+
assert_nothing_raised do
|
|
128
|
+
t.populate_from_hash!(hash)
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
end
|
|
133
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
|
2
|
+
|
|
3
|
+
class Facebooker::EventTest < Test::Unit::TestCase
|
|
4
|
+
def test_attendance_will_query_for_event_when_asked_for_full_event_object
|
|
5
|
+
session = flexmock("a session object")
|
|
6
|
+
eid = 123
|
|
7
|
+
attendance = Facebooker::Event::Attendance.new
|
|
8
|
+
attendance.eid = eid
|
|
9
|
+
attendance.session = session
|
|
10
|
+
event = Facebooker::Event.new
|
|
11
|
+
event.eid = eid
|
|
12
|
+
session.should_receive(:post).once.with('facebook.events.get', :eids => [eid]).and_return([{:eid => eid}])
|
|
13
|
+
assert_equal(123, attendance.event.eid)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
|
2
|
+
require 'active_support'
|
|
3
|
+
|
|
4
|
+
class Facebooker::PageTest < Test::Unit::TestCase
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
super
|
|
8
|
+
Facebooker::Session.current = mock("session")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_should_be_able_to_populate_with_photo_id_as_integer
|
|
12
|
+
p = Facebooker::Page.new(12345)
|
|
13
|
+
assert_equal(12345,p.page_id)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_should_be_able_to_initialize_with_photo_id_as_string
|
|
17
|
+
p = Facebooker::Page.new("12345")
|
|
18
|
+
assert_equal("12345",p.page_id)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_should_alias_photo_id_as_id
|
|
22
|
+
p = Facebooker::Page.new("12345")
|
|
23
|
+
assert_equal("12345", p.id)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_should_be_able_to_initialize_with_hash
|
|
27
|
+
p = Facebooker::Page.new(:page_id=>12345,:name=>"test page")
|
|
28
|
+
assert_equal("test page",p.name)
|
|
29
|
+
assert_equal(12345,p.page_id)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_should_be_able_to_see_if_user_is_fan_with_id
|
|
33
|
+
Facebooker::Session.current.expects(:post).with("facebook.pages.isFan",:page_id=>12345,:uid=>12451752).returns(true)
|
|
34
|
+
p = Facebooker::Page.new(12345)
|
|
35
|
+
assert p.user_is_fan?(12451752)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_should_be_able_to_see_if_user_is_fan_with_user
|
|
39
|
+
Facebooker::Session.current.expects(:post).with("facebook.pages.isFan",:page_id=>12345,:uid=>12451752).returns(false)
|
|
40
|
+
p = Facebooker::Page.new(12345)
|
|
41
|
+
assert !p.user_is_fan?(Facebooker::User.new(12451752))
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_should_be_able_to_see_if_user_is_admin_with_id
|
|
45
|
+
Facebooker::Session.current.expects(:post).with("facebook.pages.isAdmin",:page_id=>12345,:uid=>12451752).returns(false)
|
|
46
|
+
p = Facebooker::Page.new(12345)
|
|
47
|
+
assert !p.user_is_admin?(12451752)
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_should_be_able_to_see_if_user_is_admin_with_user
|
|
52
|
+
Facebooker::Session.current.expects(:post).with("facebook.pages.isAdmin",:page_id=>12345,:uid=>12451752).returns(true)
|
|
53
|
+
p = Facebooker::Page.new(12345)
|
|
54
|
+
assert p.user_is_admin?(Facebooker::User.new(12451752))
|
|
55
|
+
end
|
|
56
|
+
end
|