remote_partial 0.2.1 → 0.3.0
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/README.rdoc +6 -8
- data/app/models/remote_partial/builder.rb +20 -7
- data/app/models/remote_partial/partial.rb +18 -4
- data/app/models/remote_partial/yaml_store.rb +87 -0
- data/lib/remote_partial.rb +1 -10
- data/lib/remote_partial/version.rb +9 -1
- data/test/dummy/app/views/remote_partials/_clock.html.erb +1 -1
- data/test/dummy/config/application.rb +6 -2
- data/test/dummy/config/environments/development.rb +9 -7
- data/test/dummy/config/environments/production.rb +2 -0
- data/test/dummy/config/environments/test.rb +9 -7
- data/test/dummy/config/initializers/secret_token.rb +1 -0
- data/test/dummy/db/remote_partial/partials.yml +13 -0
- data/test/dummy/log/development.log +298 -0
- data/test/dummy/log/test.log +15708 -0
- data/test/test_helper.rb +0 -1
- data/test/unit/remote_partial/builder_test.rb +17 -7
- data/test/unit/remote_partial/partial_test.rb +24 -3
- data/test/unit/remote_partial/yaml_store_test.rb +136 -0
- data/test/unit/remote_partial_test.rb +22 -3
- metadata +9 -12
- data/test/dummy/config/database.yml +0 -25
- data/test/dummy/db/schema.rb +0 -26
- data/test/fixtures/remote_partial/partials.yml +0 -10
- data/test/integration/navigation_test.rb +0 -10
data/test/test_helper.rb
CHANGED
@@ -4,18 +4,27 @@ module RemotePartial
|
|
4
4
|
class BuilderTest < ActiveSupport::TestCase
|
5
5
|
|
6
6
|
def setup
|
7
|
-
@partial = Partial.
|
7
|
+
@partial = Partial.create(
|
8
|
+
name: 'simple',
|
9
|
+
url: 'http://www.warwickshire.gov.uk',
|
10
|
+
criteria: 'p:first-child',
|
11
|
+
repeat_period: 10.minutes
|
12
|
+
)
|
8
13
|
@name = 'foo'
|
9
14
|
@url = @partial.url
|
10
15
|
enable_mock @url
|
11
16
|
new_builder
|
12
17
|
end
|
13
18
|
|
19
|
+
def teardown
|
20
|
+
File.delete(Partial.file) if File.exists?(Partial.file)
|
21
|
+
end
|
22
|
+
|
14
23
|
def test_create_or_update_partial
|
15
24
|
assert_difference 'RemotePartial::Partial.count' do
|
16
25
|
@builder.create_or_update_partial
|
17
26
|
end
|
18
|
-
|
27
|
+
assert Partial.find @name
|
19
28
|
end
|
20
29
|
|
21
30
|
def test_create_or_update_partial_updates_if_partial_exists
|
@@ -25,7 +34,7 @@ module RemotePartial
|
|
25
34
|
assert_no_difference 'RemotePartial::Partial.count' do
|
26
35
|
@builder.create_or_update_partial
|
27
36
|
end
|
28
|
-
assert_equal @url, Partial.
|
37
|
+
assert_equal @url, Partial.find(@name).url
|
29
38
|
end
|
30
39
|
|
31
40
|
def test_build
|
@@ -36,12 +45,12 @@ module RemotePartial
|
|
36
45
|
name: @name
|
37
46
|
)
|
38
47
|
end
|
39
|
-
assert_equal(@name, Partial.
|
48
|
+
assert_equal(@name, Partial.find(@name).name)
|
40
49
|
end
|
41
50
|
end
|
42
51
|
|
43
52
|
def test_build_with_existing_stale_partial
|
44
|
-
assert(@partial.stale?, "Partial
|
53
|
+
assert(@partial.stale?, "Partial should be stale at start of test")
|
45
54
|
assert_output_file_updated do
|
46
55
|
assert_no_difference 'RemotePartial::Partial.count' do
|
47
56
|
Builder.build(
|
@@ -54,6 +63,7 @@ module RemotePartial
|
|
54
63
|
|
55
64
|
def test_build_with_existing_partial
|
56
65
|
@partial.update_stale_at
|
66
|
+
partial = Partial.find(@partial.name)
|
57
67
|
assert_output_file_not_updated do
|
58
68
|
assert_no_difference 'RemotePartial::Partial.count' do
|
59
69
|
Builder.build(
|
@@ -79,7 +89,7 @@ module RemotePartial
|
|
79
89
|
def test_stale_at_not_modified_if_unable_to_retrieve
|
80
90
|
expected = @partial.stale_at
|
81
91
|
test_build_with_http_error
|
82
|
-
assert_equal(expected, @partial.
|
92
|
+
assert_equal(expected, Partial.find(@partial.name).stale_at)
|
83
93
|
end
|
84
94
|
|
85
95
|
def assert_expected_file_created(&test)
|
@@ -103,7 +113,7 @@ module RemotePartial
|
|
103
113
|
end
|
104
114
|
|
105
115
|
def expected_output_file_name
|
106
|
-
@expected_output_file_name ||= @partial.output_file_name.gsub(@partial.name, @name)
|
116
|
+
@expected_output_file_name ||= @partial.output_file_name.gsub(@partial.name.to_s, @name)
|
107
117
|
end
|
108
118
|
end
|
109
119
|
end
|
@@ -4,12 +4,21 @@ module RemotePartial
|
|
4
4
|
class PartialTest < ActiveSupport::TestCase
|
5
5
|
|
6
6
|
def setup
|
7
|
-
@partial = Partial.
|
7
|
+
@partial = Partial.create(
|
8
|
+
name: :simple,
|
9
|
+
url: 'http://www.warwickshire.gov.uk',
|
10
|
+
criteria: 'p:first-child',
|
11
|
+
repeat_period: 10.minutes
|
12
|
+
)
|
8
13
|
@first_p = '<p>One</p>'
|
9
14
|
@body = "<body><h1>Foo</h1><div>#{@first_p}<p>Bar</p></div></body>"
|
10
15
|
enable_mock(@partial.url, @body)
|
11
16
|
end
|
12
17
|
|
18
|
+
def teardown
|
19
|
+
File.delete(Partial.file) if File.exists?(Partial.file)
|
20
|
+
end
|
21
|
+
|
13
22
|
def test_output_file_name
|
14
23
|
expected = "#{RemotePartial.partial_location}/_#{@partial.name}.html.erb"
|
15
24
|
assert_equal expected, @partial.output_file_name
|
@@ -24,8 +33,20 @@ module RemotePartial
|
|
24
33
|
|
25
34
|
def test_update_stale_at
|
26
35
|
@partial.update_stale_at
|
27
|
-
expected = @partial.updated_at + @partial.repeat_period
|
28
|
-
assert_equal expected.to_s(:db), @partial.stale_at.to_s(:db)
|
36
|
+
@expected = @partial.updated_at + @partial.repeat_period
|
37
|
+
assert_equal @expected.to_s(:db), @partial.stale_at.to_s(:db)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_stale_at_gets_into_hash
|
41
|
+
test_update_stale_at
|
42
|
+
hash = @partial.to_hash
|
43
|
+
assert_equal @expected.to_s(:db), hash['stale_at'].to_s(:db)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_stale_at_gets_into_file
|
47
|
+
test_update_stale_at
|
48
|
+
partial = Partial.find(@partial.name)
|
49
|
+
assert_equal partial.stale_at, @partial.stale_at
|
29
50
|
end
|
30
51
|
|
31
52
|
def test_stale_at_not_updated_unless_stale
|
@@ -0,0 +1,136 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module RemotePartial
|
4
|
+
class YamlStoreTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
def teardown
|
7
|
+
File.delete(YamlStore.file) if File.exists?(YamlStore.file)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_root
|
11
|
+
assert_equal(fixture_path, YamlStore.root)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_file
|
15
|
+
expected = File.expand_path('remote_partial/yaml_stores.yml', fixture_path)
|
16
|
+
assert_equal(expected, YamlStore.file)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_dir
|
20
|
+
expected = File.expand_path('remote_partial', fixture_path)
|
21
|
+
assert_equal(expected, YamlStore.dir)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_write
|
25
|
+
assert !File.exists?(YamlStore.file), "File should not exist: #{YamlStore.file}"
|
26
|
+
@test = {'this' => {'foo' => 'bar'}}
|
27
|
+
YamlStore.write(@test)
|
28
|
+
assert File.exists?(YamlStore.file), "File should be found: #{YamlStore.file}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_read
|
32
|
+
test_write
|
33
|
+
assert_equal @test, YamlStore.read
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_read_when_no_file_exists
|
37
|
+
assert_equal({}, YamlStore.read)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_merge!
|
41
|
+
test_write
|
42
|
+
new_content = {'some' => {'thing' => 'else'}}
|
43
|
+
YamlStore.merge!({'some' => {'thing' => 'else'}})
|
44
|
+
assert_equal @test.merge(new_content), YamlStore.read
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_new
|
48
|
+
name = 'Bob'
|
49
|
+
yaml_store = YamlStore.new(name: name)
|
50
|
+
assert_equal name, yaml_store.name
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_save
|
54
|
+
hash = {name: 'Foo', colour:'Red'}
|
55
|
+
yaml_store = YamlStore.new(hash)
|
56
|
+
yaml_store.save
|
57
|
+
expected = {hash[:name] => {'colour' => hash[:colour]}.merge(yaml_store.time_stamps)}
|
58
|
+
assert_equal expected, YamlStore.read
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_save_without_a_name
|
62
|
+
hash = {foo: 'bar'}
|
63
|
+
yaml_store = YamlStore.new(hash)
|
64
|
+
assert_raise RuntimeError do
|
65
|
+
yaml_store.save
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_create
|
70
|
+
hash = {name: 'Foo', colour:'Red'}
|
71
|
+
yaml_store = YamlStore.create(hash)
|
72
|
+
expected = {hash[:name] => {'colour' => hash[:colour]}.merge(yaml_store.time_stamps)}
|
73
|
+
assert_equal expected, YamlStore.read
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_find
|
77
|
+
@name = 'Foo'
|
78
|
+
@content = 'Bar'
|
79
|
+
YamlStore.create(name: @name, content: @content)
|
80
|
+
yaml_store = YamlStore.find(@name)
|
81
|
+
assert_equal @name, yaml_store.name
|
82
|
+
assert_equal @content, yaml_store.content
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_find_when_none_exist
|
86
|
+
assert_nil YamlStore.find(:foo), "Should return nil if no match found"
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_find_with_symbol
|
90
|
+
test_find
|
91
|
+
yaml_store = YamlStore.find(@name.to_sym)
|
92
|
+
assert_equal @name, yaml_store.name
|
93
|
+
assert_equal @content, yaml_store.content
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_count
|
97
|
+
assert_equal 0, YamlStore.count
|
98
|
+
test_create
|
99
|
+
assert_equal 1, YamlStore.count
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_created_at
|
103
|
+
yaml_store = YamlStore.create(name: 'foo')
|
104
|
+
assert yaml_store.created_at.kind_of?(Time), 'create_at should be a Time'
|
105
|
+
assert 1.minute.ago < yaml_store.created_at, 'created_at should be within the last minute'
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_created_at_not_updated_if_exists
|
109
|
+
time = 1.day.ago
|
110
|
+
yaml_store = YamlStore.create(name: 'foo', created_at: time)
|
111
|
+
assert_equal(time, yaml_store.created_at)
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_updated_at
|
115
|
+
yaml_store = YamlStore.create(name: 'foo')
|
116
|
+
assert yaml_store.updated_at.kind_of?(Time), 'updated_at should be a Time'
|
117
|
+
assert 1.minute.ago < yaml_store.updated_at, 'updated_at should be within the last minute'
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_updated_at_if_updated_if_exists
|
121
|
+
time = 1.day.ago
|
122
|
+
yaml_store = YamlStore.create(name: 'foo', updated_at: time)
|
123
|
+
assert 1.minute.ago < yaml_store.updated_at, 'updated_at should be within the last minute'
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_string_keys
|
127
|
+
sample = {:this => 'that', 'foo' => 'bar'}
|
128
|
+
expected = {'this' => 'that', 'foo' => 'bar'}
|
129
|
+
assert_equal(expected, YamlStore.string_keys(sample))
|
130
|
+
end
|
131
|
+
|
132
|
+
def fixture_path
|
133
|
+
File.expand_path('../../dummy/test/fixtures', File.dirname(__FILE__))
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
@@ -1,14 +1,33 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class RemotePartialTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
def teardown
|
6
|
+
File.delete(RemotePartial::Partial.file) if File.exists?(RemotePartial::Partial.file)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_define_with_string_keys
|
10
|
+
url = 'http://www.warwickshire.gov.uk'
|
11
|
+
name = 'wcc'
|
12
|
+
assert_difference 'RemotePartial::Partial.count' do
|
13
|
+
RemotePartial.define(
|
14
|
+
'url' => url,
|
15
|
+
'name' => name
|
16
|
+
)
|
17
|
+
end
|
18
|
+
assert_equal(url, RemotePartial::Partial.find(name).url)
|
19
|
+
end
|
20
|
+
|
4
21
|
def test_define
|
22
|
+
url = 'http://www.warwickshire.gov.uk'
|
23
|
+
name = 'wcc'
|
5
24
|
assert_difference 'RemotePartial::Partial.count' do
|
6
25
|
RemotePartial.define(
|
7
|
-
url:
|
8
|
-
name:
|
26
|
+
url: url,
|
27
|
+
name: name
|
9
28
|
)
|
10
29
|
end
|
11
|
-
assert_equal(
|
30
|
+
assert_equal(url, RemotePartial::Partial.find(name).url)
|
12
31
|
end
|
13
32
|
|
14
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remote_partial
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: hashie
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
51
|
- - ! '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
|
-
type: :
|
54
|
+
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
@@ -74,6 +74,7 @@ files:
|
|
74
74
|
- app/models/remote_partial/exceptions.rb
|
75
75
|
- app/models/remote_partial/partial.rb
|
76
76
|
- app/models/remote_partial/builder.rb
|
77
|
+
- app/models/remote_partial/yaml_store.rb
|
77
78
|
- config/routes.rb
|
78
79
|
- db/migrate/20130702072157_create_remote_partial_partials.rb
|
79
80
|
- lib/remote_partial/version.rb
|
@@ -83,7 +84,6 @@ files:
|
|
83
84
|
- MIT-LICENSE
|
84
85
|
- Rakefile
|
85
86
|
- README.rdoc
|
86
|
-
- test/integration/navigation_test.rb
|
87
87
|
- test/dummy/app/helpers/samples_helper.rb
|
88
88
|
- test/dummy/app/helpers/application_helper.rb
|
89
89
|
- test/dummy/app/helpers/demos_helper.rb
|
@@ -108,9 +108,9 @@ files:
|
|
108
108
|
- test/dummy/log/test.log
|
109
109
|
- test/dummy/log/development.log
|
110
110
|
- test/dummy/db/migrate/20130703141929_create_remote_partial_partials.remote_partial.rb
|
111
|
+
- test/dummy/db/remote_partial/partials.yml
|
111
112
|
- test/dummy/db/test.sqlite3
|
112
113
|
- test/dummy/db/development.sqlite3
|
113
|
-
- test/dummy/db/schema.rb
|
114
114
|
- test/dummy/config.ru
|
115
115
|
- test/dummy/public/422.html
|
116
116
|
- test/dummy/public/favicon.ico
|
@@ -145,7 +145,6 @@ files:
|
|
145
145
|
- test/dummy/config/environments/development.rb
|
146
146
|
- test/dummy/config/environments/production.rb
|
147
147
|
- test/dummy/config/environments/test.rb
|
148
|
-
- test/dummy/config/database.yml
|
149
148
|
- test/dummy/config/initializers/inflections.rb
|
150
149
|
- test/dummy/config/initializers/session_store.rb
|
151
150
|
- test/dummy/config/initializers/wrap_parameters.rb
|
@@ -156,11 +155,11 @@ files:
|
|
156
155
|
- test/dummy/config/application.rb
|
157
156
|
- test/dummy/script/rails
|
158
157
|
- test/remote_partial_test.rb
|
159
|
-
- test/fixtures/remote_partial/partials.yml
|
160
158
|
- test/test_helper.rb
|
161
159
|
- test/unit/remote_partial/partial_test.rb
|
162
160
|
- test/unit/remote_partial/builder_test.rb
|
163
161
|
- test/unit/remote_partial/exception_test.rb
|
162
|
+
- test/unit/remote_partial/yaml_store_test.rb
|
164
163
|
- test/unit/remote_partial/resource_manager_test.rb
|
165
164
|
- test/unit/remote_partial_test.rb
|
166
165
|
homepage: https://github.com/warwickshire/remote_partial
|
@@ -189,7 +188,6 @@ specification_version: 3
|
|
189
188
|
summary: RemotePartial adds the facility to grab content from remote sites and add
|
190
189
|
them as partials to the host app.
|
191
190
|
test_files:
|
192
|
-
- test/integration/navigation_test.rb
|
193
191
|
- test/dummy/app/helpers/samples_helper.rb
|
194
192
|
- test/dummy/app/helpers/application_helper.rb
|
195
193
|
- test/dummy/app/helpers/demos_helper.rb
|
@@ -214,9 +212,9 @@ test_files:
|
|
214
212
|
- test/dummy/log/test.log
|
215
213
|
- test/dummy/log/development.log
|
216
214
|
- test/dummy/db/migrate/20130703141929_create_remote_partial_partials.remote_partial.rb
|
215
|
+
- test/dummy/db/remote_partial/partials.yml
|
217
216
|
- test/dummy/db/test.sqlite3
|
218
217
|
- test/dummy/db/development.sqlite3
|
219
|
-
- test/dummy/db/schema.rb
|
220
218
|
- test/dummy/config.ru
|
221
219
|
- test/dummy/public/422.html
|
222
220
|
- test/dummy/public/favicon.ico
|
@@ -251,7 +249,6 @@ test_files:
|
|
251
249
|
- test/dummy/config/environments/development.rb
|
252
250
|
- test/dummy/config/environments/production.rb
|
253
251
|
- test/dummy/config/environments/test.rb
|
254
|
-
- test/dummy/config/database.yml
|
255
252
|
- test/dummy/config/initializers/inflections.rb
|
256
253
|
- test/dummy/config/initializers/session_store.rb
|
257
254
|
- test/dummy/config/initializers/wrap_parameters.rb
|
@@ -262,10 +259,10 @@ test_files:
|
|
262
259
|
- test/dummy/config/application.rb
|
263
260
|
- test/dummy/script/rails
|
264
261
|
- test/remote_partial_test.rb
|
265
|
-
- test/fixtures/remote_partial/partials.yml
|
266
262
|
- test/test_helper.rb
|
267
263
|
- test/unit/remote_partial/partial_test.rb
|
268
264
|
- test/unit/remote_partial/builder_test.rb
|
269
265
|
- test/unit/remote_partial/exception_test.rb
|
266
|
+
- test/unit/remote_partial/yaml_store_test.rb
|
270
267
|
- test/unit/remote_partial/resource_manager_test.rb
|
271
268
|
- test/unit/remote_partial_test.rb
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# SQLite version 3.x
|
2
|
-
# gem install sqlite3
|
3
|
-
#
|
4
|
-
# Ensure the SQLite 3 gem is defined in your Gemfile
|
5
|
-
# gem 'sqlite3'
|
6
|
-
development:
|
7
|
-
adapter: sqlite3
|
8
|
-
database: db/development.sqlite3
|
9
|
-
pool: 5
|
10
|
-
timeout: 5000
|
11
|
-
|
12
|
-
# Warning: The database defined as "test" will be erased and
|
13
|
-
# re-generated from your development database when you run "rake".
|
14
|
-
# Do not set this db to the same as development or production.
|
15
|
-
test:
|
16
|
-
adapter: sqlite3
|
17
|
-
database: db/test.sqlite3
|
18
|
-
pool: 5
|
19
|
-
timeout: 5000
|
20
|
-
|
21
|
-
production:
|
22
|
-
adapter: sqlite3
|
23
|
-
database: db/production.sqlite3
|
24
|
-
pool: 5
|
25
|
-
timeout: 5000
|