remote_partial 0.0.1

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.
Files changed (98) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +63 -0
  3. data/Rakefile +40 -0
  4. data/app/helpers/remote_partial/application_helper.rb +4 -0
  5. data/app/helpers/remote_partial/host_app_helper.rb +11 -0
  6. data/app/models/remote_partial/builder.rb +30 -0
  7. data/app/models/remote_partial/exceptions.rb +24 -0
  8. data/app/models/remote_partial/partial.rb +57 -0
  9. data/app/models/remote_partial/resource_manager.rb +66 -0
  10. data/config/routes.rb +2 -0
  11. data/db/migrate/20130702072157_create_remote_partial_partials.rb +12 -0
  12. data/lib/remote_partial/engine.rb +11 -0
  13. data/lib/remote_partial/version.rb +3 -0
  14. data/lib/remote_partial.rb +23 -0
  15. data/lib/tasks/remote_partial_tasks.rake +10 -0
  16. data/test/dummy/README.rdoc +261 -0
  17. data/test/dummy/Rakefile +7 -0
  18. data/test/dummy/app/assets/javascripts/application.js +15 -0
  19. data/test/dummy/app/assets/javascripts/demos.js +2 -0
  20. data/test/dummy/app/assets/javascripts/samples.js +2 -0
  21. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  22. data/test/dummy/app/assets/stylesheets/demos.css +4 -0
  23. data/test/dummy/app/assets/stylesheets/samples.css +4 -0
  24. data/test/dummy/app/controllers/application_controller.rb +3 -0
  25. data/test/dummy/app/controllers/demos_controller.rb +18 -0
  26. data/test/dummy/app/helpers/application_helper.rb +2 -0
  27. data/test/dummy/app/helpers/demos_helper.rb +2 -0
  28. data/test/dummy/app/helpers/samples_helper.rb +2 -0
  29. data/test/dummy/app/views/demos/_clock.html.erb +6 -0
  30. data/test/dummy/app/views/demos/_fixed.html.erb +3 -0
  31. data/test/dummy/app/views/demos/_ruby.html.erb +4 -0
  32. data/test/dummy/app/views/demos/index.html.erb +7 -0
  33. data/test/dummy/app/views/demos/show.html.erb +3 -0
  34. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  35. data/test/dummy/app/views/remote_partials/_clock.html.erb +1 -0
  36. data/test/dummy/app/views/remote_partials/_fixed.html.erb +2 -0
  37. data/test/dummy/app/views/remote_partials/_ruby.html.erb +11 -0
  38. data/test/dummy/app/views/remote_partials/_wcc.html.erb +810 -0
  39. data/test/dummy/config/application.rb +59 -0
  40. data/test/dummy/config/boot.rb +10 -0
  41. data/test/dummy/config/database.yml +25 -0
  42. data/test/dummy/config/environment.rb +5 -0
  43. data/test/dummy/config/environments/development.rb +37 -0
  44. data/test/dummy/config/environments/production.rb +67 -0
  45. data/test/dummy/config/environments/test.rb +37 -0
  46. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  47. data/test/dummy/config/initializers/inflections.rb +15 -0
  48. data/test/dummy/config/initializers/mime_types.rb +5 -0
  49. data/test/dummy/config/initializers/remote_partial.rb +16 -0
  50. data/test/dummy/config/initializers/secret_token.rb +7 -0
  51. data/test/dummy/config/initializers/session_store.rb +8 -0
  52. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  53. data/test/dummy/config/locales/en.yml +5 -0
  54. data/test/dummy/config/routes.rb +8 -0
  55. data/test/dummy/config.ru +4 -0
  56. data/test/dummy/db/development.sqlite3 +0 -0
  57. data/test/dummy/db/migrate/20130703141929_create_remote_partial_partials.remote_partial.rb +13 -0
  58. data/test/dummy/db/schema.rb +26 -0
  59. data/test/dummy/db/test.sqlite3 +0 -0
  60. data/test/dummy/log/development.log +4200 -0
  61. data/test/dummy/log/test.log +1397 -0
  62. data/test/dummy/public/404.html +26 -0
  63. data/test/dummy/public/422.html +26 -0
  64. data/test/dummy/public/500.html +25 -0
  65. data/test/dummy/public/favicon.ico +0 -0
  66. data/test/dummy/script/rails +6 -0
  67. data/test/dummy/test/functional/demos_controller_test.rb +20 -0
  68. data/test/dummy/test/unit/helpers/demos_helper_test.rb +13 -0
  69. data/test/dummy/test/unit/helpers/samples_helper_test.rb +4 -0
  70. data/test/dummy/tmp/cache/assets/BE9/0F0/sprockets%2Fb918d6cc641337193b96751002451244 +0 -0
  71. data/test/dummy/tmp/cache/assets/C2E/4E0/sprockets%2F5b29288e435665a224409e7d76530c95 +0 -0
  72. data/test/dummy/tmp/cache/assets/CB3/DC0/sprockets%2F157201713d2fd4954447e0bf4d8e853e +0 -0
  73. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  74. data/test/dummy/tmp/cache/assets/CE3/080/sprockets%2F7d4d7689d6fa8236f0b4848c03ba1215 +0 -0
  75. data/test/dummy/tmp/cache/assets/CE5/D30/sprockets%2F8c9834a63b25a66203918a75ff56e2ac +0 -0
  76. data/test/dummy/tmp/cache/assets/D16/E10/sprockets%2Fd5d9c442561ec08a55d5d843a0d9792d +0 -0
  77. data/test/dummy/tmp/cache/assets/D20/020/sprockets%2F488c2c97fede45c86a62f1aa14554957 +0 -0
  78. data/test/dummy/tmp/cache/assets/D2E/690/sprockets%2F840591ad233bc7bda28b7f6a2b27c205 +0 -0
  79. data/test/dummy/tmp/cache/assets/D30/990/sprockets%2F995cc20d042afc03241f58f7d6ca1f02 +0 -0
  80. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  81. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  82. data/test/dummy/tmp/cache/assets/D52/430/sprockets%2F6ada07f0c9869f9f35b05fa0988dc717 +0 -0
  83. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  84. data/test/dummy/tmp/cache/assets/DBB/BE0/sprockets%2Fc6eb578d23a69b5abb056e3abaa5c060 +0 -0
  85. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  86. data/test/dummy/tmp/cache/assets/E02/FA0/sprockets%2Fca8d5771d03e669be1d96acb6beb6cb6 +0 -0
  87. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  88. data/test/dummy/tmp/pids/server.pid +1 -0
  89. data/test/fixtures/remote_partial/partials.yml +10 -0
  90. data/test/integration/navigation_test.rb +10 -0
  91. data/test/remote_partial_test.rb +7 -0
  92. data/test/test_helper.rb +80 -0
  93. data/test/unit/remote_partial/builder_test.rb +113 -0
  94. data/test/unit/remote_partial/exception_test.rb +21 -0
  95. data/test/unit/remote_partial/partial_test.rb +66 -0
  96. data/test/unit/remote_partial/resource_manager_test.rb +76 -0
  97. data/test/unit/remote_partial_test.rb +26 -0
  98. metadata +291 -0
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ class DemosControllerTest < ActionController::TestCase
4
+ def test_index
5
+ get :index
6
+ assert_response :success
7
+
8
+ end
9
+
10
+ def test_show_fixed
11
+ get :show, id: 'fixed'
12
+ assert_response :success
13
+ assert_match content_of('fixed'), response.body
14
+ end
15
+
16
+ def content_of(remote_partial_name)
17
+ File.read(Rails.root + "app/views/remote_partials/_#{remote_partial_name}.html.erb")
18
+ end
19
+
20
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+ require 'remote_partial/host_app_helper'
3
+
4
+ class DemosHelperTest < ActionView::TestCase
5
+ include RemotePartial::HostAppHelper
6
+
7
+ def test_render_remote_partial_with_no_partial
8
+ assert_raise ActionView::MissingTemplate do
9
+ render_remote_partial 'non-existent-partial'
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class SamplesHelperTest < ActionView::TestCase
4
+ end
@@ -0,0 +1 @@
1
+ 6728
@@ -0,0 +1,10 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ wcc:
4
+ id: 1
5
+ name: simple
6
+ url: 'http://www.warwickshire.gov.uk'
7
+ criteria: 'p:first-child'
8
+ repeat_period: <%= 10.minutes %>
9
+
10
+
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class NavigationTest < ActionDispatch::IntegrationTest
4
+ fixtures :all
5
+
6
+ # test "the truth" do
7
+ # assert true
8
+ # end
9
+ end
10
+
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class RemotePartialTest < ActiveSupport::TestCase
4
+ test "truth" do
5
+ assert_kind_of Module, RemotePartial
6
+ end
7
+ end
@@ -0,0 +1,80 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+ require 'webmock/test_unit'
7
+
8
+ Rails.backtrace_cleaner.remove_silencers!
9
+
10
+ # Load support files
11
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
12
+
13
+ # Load fixtures from the engine
14
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
15
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
16
+ end
17
+
18
+ class ActiveSupport::TestCase
19
+ fixtures :all
20
+
21
+ def enable_mock(url, body = '<body><h1>Something</h1><p>Else</p></body>')
22
+ WebMock.enable!
23
+ stub_request(:get, url).
24
+ with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
25
+ to_return(:status => 200, :body => body, :headers => {})
26
+ end
27
+
28
+ def enable_mock_connection_failure(url, status = 400)
29
+ WebMock.enable!
30
+ stub_request(:get, url).
31
+ with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
32
+ to_return(:status => status, :body => 'Whoops!', :headers => {})
33
+ end
34
+
35
+ def enable_mock_connection_error(url)
36
+ WebMock.enable!
37
+ stub_request(:get, url).to_raise(SocketError.new("Some connection error"))
38
+ end
39
+
40
+ def disable_mock
41
+ WebMock.disable!
42
+ end
43
+
44
+ def assert_equal_ignoring_cr(expected, testing, comment = nil)
45
+ cr = "\n"
46
+ assert_equal(expected, testing.gsub(cr, ""), comment)
47
+ end
48
+
49
+ def remove_file(file_name)
50
+ File.delete(file_name) if File.exists?(file_name)
51
+ end
52
+
53
+ def assert_file_exists(file_name)
54
+ assert(File.exists?(file_name), "File should exist: #{file_name}")
55
+ end
56
+
57
+ def assert_file_does_not_exist(file_name)
58
+ assert(!File.exists?(file_name), "File should not exist: #{file_name}")
59
+ end
60
+
61
+
62
+ def assert_output_file_updated(content = nil, &test)
63
+ remove_output_file
64
+ test.call
65
+ assert_file_exists @partial.output_file_name
66
+ assert_equal_ignoring_cr(content, File.read(@partial.output_file_name)) if content
67
+ remove_output_file
68
+ end
69
+
70
+ def assert_output_file_not_updated(&test)
71
+ remove_output_file
72
+ test.call
73
+ assert_file_does_not_exist @partial.output_file_name
74
+ end
75
+
76
+ def remove_output_file
77
+ remove_file @partial.output_file_name
78
+ end
79
+
80
+ end
@@ -0,0 +1,113 @@
1
+ require 'test_helper'
2
+
3
+ module RemotePartial
4
+ class BuilderTest < ActiveSupport::TestCase
5
+
6
+ def setup
7
+ @partial = Partial.find(1)
8
+ @name = 'foo'
9
+ @url = @partial.url
10
+ enable_mock @url
11
+ new_builder
12
+ end
13
+
14
+ def teardown
15
+ disable_mock
16
+ end
17
+
18
+ def test_create_or_update_partial
19
+ assert_difference 'RemotePartial::Partial.count' do
20
+ @builder.create_or_update_partial
21
+ end
22
+ assert_equal @name, Partial.last.name
23
+ end
24
+
25
+ def test_create_or_update_partial_updates_if_partial_exists
26
+ test_create_or_update_partial
27
+ @url = 'other'
28
+ new_builder
29
+ assert_no_difference 'RemotePartial::Partial.count' do
30
+ @builder.create_or_update_partial
31
+ end
32
+ assert_equal @url, Partial.last.url
33
+ end
34
+
35
+ def test_build
36
+ assert_expected_file_created do
37
+ assert_difference 'RemotePartial::Partial.count' do
38
+ Builder.build(
39
+ url: @url,
40
+ name: @name
41
+ )
42
+ end
43
+ assert_equal(@name, Partial.last.name)
44
+ end
45
+ end
46
+
47
+ def test_build_with_existing_stale_partial
48
+ assert(@partial.stale?, "Partial needs to be stale at start of test")
49
+ assert_output_file_updated do
50
+ assert_no_difference 'RemotePartial::Partial.count' do
51
+ Builder.build(
52
+ url: @partial.url,
53
+ name: @partial.name
54
+ )
55
+ end
56
+ end
57
+ end
58
+
59
+ def test_build_with_existing_partial
60
+ @partial.update_stale_at
61
+ assert_output_file_not_updated do
62
+ assert_no_difference 'RemotePartial::Partial.count' do
63
+ Builder.build(
64
+ url: @partial.url,
65
+ name: @partial.name
66
+ )
67
+ end
68
+ end
69
+ end
70
+
71
+ def test_build_with_http_error
72
+ enable_mock_connection_failure @url
73
+ assert_output_file_not_updated do
74
+ assert_no_difference 'RemotePartial::Partial.count' do
75
+ Builder.build(
76
+ url: @partial.url,
77
+ name: @partial.name
78
+ )
79
+ end
80
+ end
81
+ end
82
+
83
+ def test_stale_at_not_modified_if_unable_to_retrieve
84
+ expected = @partial.stale_at
85
+ test_build_with_http_error
86
+ assert_equal(expected, @partial.reload.stale_at)
87
+ end
88
+
89
+ def assert_expected_file_created(&test)
90
+ remove_file expected_output_file_name
91
+ test.call
92
+ assert_file_exists expected_output_file_name
93
+ remove_file expected_output_file_name
94
+ end
95
+
96
+ def assert_expected_file_not_created(&test)
97
+ remove_file @partial.output_file_name
98
+ test.call
99
+ assert_file_does_not_exist @partial.output_file_name
100
+ end
101
+
102
+ def new_builder
103
+ @builder = Builder.new(
104
+ name: @name,
105
+ url: @url
106
+ )
107
+ end
108
+
109
+ def expected_output_file_name
110
+ @expected_output_file_name ||= @partial.output_file_name.gsub(@partial.name, @name)
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,21 @@
1
+ require 'test_helper'
2
+
3
+ module RemotePartial
4
+ class ExceptionTest < ActiveSupport::TestCase
5
+ def test_remote_partial_retrival_error
6
+ inner_message = 'Whoops'
7
+ catch_exception { raise RemotePartialRetrivalError.new(inner_message, Array)}
8
+ assert_match("Unable to retrieve remote partial", @exception.message)
9
+ assert_match(inner_message, @exception.message)
10
+ assert_match('Array', @exception.message)
11
+ end
12
+
13
+ def catch_exception(&process)
14
+ begin
15
+ process.call
16
+ rescue => e
17
+ @exception = e
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,66 @@
1
+ require 'test_helper'
2
+
3
+ module RemotePartial
4
+ class PartialTest < ActiveSupport::TestCase
5
+
6
+ def setup
7
+ @partial = Partial.find(1)
8
+ @first_p = '<p>One</p>'
9
+ @body = "<body><h1>Foo</h1><div>#{@first_p}<p>Bar</p></div></body>"
10
+ enable_mock(@partial.url, @body)
11
+ end
12
+
13
+ def teardown
14
+ disable_mock
15
+ end
16
+
17
+ def test_output_file_name
18
+ expected = "#{RemotePartial.partial_location}/_#{@partial.name}.html.erb"
19
+ assert_equal expected, @partial.output_file_name
20
+ end
21
+
22
+ def test_update_file
23
+ assert_output_file_updated(@first_p) do
24
+ @partial.update_file
25
+ end
26
+
27
+ end
28
+
29
+ def test_update_stale_at
30
+ @partial.update_stale_at
31
+ expected = @partial.updated_at + @partial.repeat_period
32
+ assert_equal expected.to_s(:db), @partial.stale_at.to_s(:db)
33
+ end
34
+
35
+ def test_stale_at_not_updated_unless_stale
36
+ test_update_stale_at
37
+ before = @partial.stale_at
38
+ @partial.update_stale_at
39
+ assert_equal before, @partial.stale_at
40
+ end
41
+
42
+ def test_stale_at_reset_if_stale
43
+ @partial.stale_at = 1.hour.ago
44
+ test_update_stale_at
45
+ end
46
+
47
+ def test_update_stale_file
48
+ assert_output_file_updated(@first_p) do
49
+ @partial.update_stale_file
50
+ end
51
+ end
52
+
53
+ def test_update_stale_file_when_not_stale
54
+ test_update_stale_at
55
+ assert_output_file_not_updated do
56
+ @partial.update_stale_file
57
+ end
58
+ end
59
+
60
+ def test_update_file_not_affected_by_stale_state
61
+ test_update_stale_at
62
+ test_update_file
63
+ end
64
+
65
+ end
66
+ end
@@ -0,0 +1,76 @@
1
+ require 'test_helper'
2
+ require 'nokogiri'
3
+ require 'net/http'
4
+
5
+ module RemotePartial
6
+ class ResourceManagerTest < ActiveSupport::TestCase
7
+
8
+ def setup
9
+ @url = "http://www.worcestershire.gov.uk"
10
+ @body = "<body><p>One</p><h1>Foo</h1><p>Bar</p></body>"
11
+ enable_mock(@url, @body)
12
+ @path = 'temp/file.text'
13
+ File.delete(@path) if File.exists?(@path)
14
+ end
15
+
16
+ def teardown
17
+ disable_mock
18
+ end
19
+
20
+ def test_stub
21
+ assert_equal_ignoring_cr(@body, content.search('body').to_s)
22
+ end
23
+
24
+ def test_get_page
25
+ assert_equal(content.to_s, ResourceManager.get_page(@url).to_s)
26
+ end
27
+
28
+ def test_get_raw
29
+ raw = Net::HTTP.get(URI(@url))
30
+ assert_equal raw, ResourceManager.get_raw(@url)
31
+ end
32
+
33
+ def test_html
34
+ resource_manager = ResourceManager.new(@url)
35
+ assert_equal content.to_s, resource_manager.html
36
+ end
37
+
38
+ def test_html_with_limit
39
+ @resource_manager = ResourceManager.new(@url, 'body')
40
+ assert_equal_ignoring_cr @body, @resource_manager.html
41
+ end
42
+
43
+ def test_html_with_limit_that_returns_multiple_matches
44
+ expected = '<p>One</p><p>Bar</p>'
45
+ resource_manager = ResourceManager.new(@url, 'p')
46
+ assert_equal_ignoring_cr expected, resource_manager.html
47
+ end
48
+
49
+ def test_output_to
50
+ test_html_with_limit
51
+ @resource_manager.output_to(@path)
52
+ assert_equal_ignoring_cr(@body, File.read(@path))
53
+ end
54
+
55
+ def test_connection_failure
56
+ enable_mock_connection_failure @url
57
+ assert_raise RemotePartialRetrivalError do
58
+ ResourceManager.new(@url, 'body').html
59
+ end
60
+ end
61
+
62
+ def test_connection_failure_due_to_invalid_url
63
+ enable_mock_connection_error @url
64
+ assert_raise RemotePartialRetrivalError do
65
+ ResourceManager.new(@url, 'body').html
66
+ end
67
+ end
68
+
69
+ def content
70
+ Nokogiri::HTML(Net::HTTP.get(URI(@url)))
71
+ end
72
+
73
+
74
+
75
+ end
76
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ class RemotePartialTest < ActiveSupport::TestCase
4
+ def test_define
5
+ assert_difference 'RemotePartial::Partial.count' do
6
+ RemotePartial.define(
7
+ url: 'http://www.warwickshire.gov.uk',
8
+ name: 'wcc'
9
+ )
10
+ end
11
+ assert_equal('wcc', RemotePartial::Partial.last.name)
12
+ end
13
+
14
+ def test_partial_location
15
+ expected = File.expand_path('../../dummy/app/views/remote_partials', __FILE__)
16
+ assert_equal expected, RemotePartial.partial_location
17
+ end
18
+
19
+ def test_set_partial_location
20
+ location = '/tmp'
21
+ RemotePartial.partial_location = location
22
+ assert_equal location, RemotePartial.partial_location
23
+ RemotePartial.partial_location = nil
24
+ test_partial_location
25
+ end
26
+ end