rummageable 0.1.3 → 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.
@@ -6,6 +6,9 @@ module Rummageable
6
6
  def delete(link)
7
7
  end
8
8
 
9
+ def commit
10
+ end
11
+
9
12
  def validate_structure(hash, parents=[])
10
13
  end
11
14
  end
@@ -12,9 +12,18 @@ module Rummageable
12
12
  end
13
13
  end
14
14
 
15
+ def amend(link, amendments)
16
+ validate_structure amendments
17
+ RestClient.post url_for(link), amendments
18
+ end
19
+
15
20
  def delete(link)
16
- url = Rummageable.rummager_host + Rummageable.path_prefix + "/documents/" + CGI.escape(link)
17
- RestClient.delete url, content_type: :json, accept: :json
21
+ RestClient.delete url_for(link), content_type: :json, accept: :json
22
+ end
23
+
24
+ def commit
25
+ url = Rummageable.rummager_host + Rummageable.path_prefix + "/commit"
26
+ RestClient.post url, {}
18
27
  end
19
28
 
20
29
  def validate_structure(hash, parents=[])
@@ -32,5 +41,13 @@ module Rummageable
32
41
  end
33
42
  end
34
43
  end
44
+
45
+ private
46
+ def url_for(link)
47
+ [
48
+ Rummageable.rummager_host, Rummageable.path_prefix,
49
+ "/documents/", CGI.escape(link)
50
+ ].join("")
51
+ end
35
52
  end
36
53
  end
@@ -1,3 +1,3 @@
1
1
  module Rummageable
2
- VERSION = "0.1.3"
3
- end
2
+ VERSION = "0.3.0"
3
+ end
data/lib/rummageable.rb CHANGED
@@ -41,6 +41,14 @@ module Rummageable
41
41
  implementation.delete(link)
42
42
  end
43
43
 
44
+ def amend(link, amendments)
45
+ implementation.amend(link, amendments)
46
+ end
47
+
48
+ def commit
49
+ implementation.commit
50
+ end
51
+
44
52
  VALID_KEYS = [
45
53
  %w[title],
46
54
  %w[description],
@@ -49,6 +57,7 @@ module Rummageable
49
57
  %w[subsection],
50
58
  %w[link],
51
59
  %w[indexable_content],
60
+ %w[boost_phrases],
52
61
  %w[additional_links title],
53
62
  %w[additional_links link],
54
63
  %w[additional_links link_order],
@@ -15,6 +15,7 @@ class RummageableTest < MiniTest::Unit::TestCase
15
15
  "subsection" => "NAME OF SUBSECTION",
16
16
  "link" => "/link",
17
17
  "indexable_content" => "TEXT",
18
+ "boost_phrases" => "BOOST",
18
19
  "additional_links" => [
19
20
  {"title" => "LINK1", "link" => "/link1"},
20
21
  {"title" => "LINK2", "link" => "/link2"},
@@ -93,21 +94,51 @@ class RummageableTest < MiniTest::Unit::TestCase
93
94
  def test_should_delete_a_document_by_its_link
94
95
  link = "http://example.com/foo"
95
96
 
96
- stub_request(:delete, "#{API}/documents/http%3A%2F%2Fexample.com%2Ffoo").
97
+ stub_request(:delete, "#{API}/documents/http:%2F%2Fexample.com%2Ffoo").
97
98
  to_return(status: 200, body: '{"status":"OK"}')
98
99
 
99
100
  Rummageable.delete(link)
100
101
  end
101
102
 
103
+ def test_should_post_amendments
104
+ stub_request(:post, "#{API}/documents/%2Ffoobang").
105
+ with(body: {"title" => "Cheese", "indexable_content" => "Blah"}).
106
+ to_return(status: 200, body: '{"status":"OK"}')
107
+
108
+ Rummageable.amend("/foobang", {"title" => "Cheese", "indexable_content" => "Blah"})
109
+ end
110
+
111
+ def test_should_reject_unknown_amendments
112
+ stub_request(:post, "#{API}/documents/%2Ffoobang").
113
+ to_return(status: 200, body: '{"status":"OK"}')
114
+
115
+ assert_raises Rummageable::InvalidDocument do
116
+ Rummageable.amend("/foobang", {"title" => "Cheese", "face" => "Blah"})
117
+ end
118
+
119
+ assert_not_requested :any, "#{API}/documents/%2Ffoobang"
120
+ end
121
+
122
+ def test_should_fail_amendments_with_symbols
123
+ stub_request(:post, "#{API}/documents/%2Ffoobang").
124
+ to_return(status: 200, body: '{"status":"OK"}')
125
+
126
+ assert_raises Rummageable::InvalidDocument do
127
+ Rummageable.amend("/foobang", {title: "Cheese"})
128
+ end
129
+
130
+ assert_not_requested :any, "#{API}/documents/%2Ffoobang"
131
+ end
132
+
102
133
  def test_should_delete_to_rummageable_host_determined_by_rummager_service_name
103
134
  link = "http://example.com/foo"
104
- stub_request(:delete, "#{API}/documents/http%3A%2F%2Fexample.com%2Ffoo")
105
- stub_request(:delete, "http://whitehall-search.test.alphagov.co.uk/documents/http%3A%2F%2Fexample.com%2Ffoo")
135
+ stub_request(:delete, "#{API}/documents/http:%2F%2Fexample.com%2Ffoo")
136
+ stub_request(:delete, "http://whitehall-search.test.alphagov.co.uk/documents/http:%2F%2Fexample.com%2Ffoo")
106
137
  with_rummager_service_name("whitehall-search") do
107
138
  Rummageable.delete(link)
108
139
  end
109
- assert_not_requested(:delete, "#{API}/#{API}/documents/http%3A%2F%2Fexample.com%2Ffoo")
110
- assert_requested(:delete, "http://whitehall-search.test.alphagov.co.uk/documents/http%3A%2F%2Fexample.com%2Ffoo")
140
+ assert_not_requested(:delete, "#{API}/#{API}/documents/http:%2F%2Fexample.com%2Ffoo")
141
+ assert_requested(:delete, "http://whitehall-search.test.alphagov.co.uk/documents/http:%2F%2Fexample.com%2Ffoo")
111
142
  end
112
143
 
113
144
  def test_should_defer_to_plek_for_the_location_of_the_rummager_host
@@ -121,6 +152,13 @@ class RummageableTest < MiniTest::Unit::TestCase
121
152
  Rummageable.rummager_host = nil
122
153
  end
123
154
 
155
+ def test_should_commit_to_rummmageable_host
156
+ stub_request(:post, "#{API}/commit").
157
+ to_return(status: 200, body: '{"result":"OK"}')
158
+
159
+ Rummageable.commit
160
+ end
161
+
124
162
  private
125
163
 
126
164
  def with_rummager_service_name(service_name)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rummageable
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.3
5
+ version: 0.3.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - GovUK Beta Team
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-01-17 00:00:00 Z
13
+ date: 2012-06-27 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json
@@ -67,6 +67,17 @@ dependencies:
67
67
  type: :development
68
68
  prerelease: false
69
69
  version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: gem_publisher
72
+ requirement: &id006 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - "="
76
+ - !ruby/object:Gem::Version
77
+ version: 1.0.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *id006
70
81
  description: Mediator for apps that want their content to be in the search index
71
82
  email:
72
83
  executables: []
@@ -76,10 +87,10 @@ extensions: []
76
87
  extra_rdoc_files: []
77
88
 
78
89
  files:
79
- - lib/rummageable/fake.rb
90
+ - lib/rummageable.rb
80
91
  - lib/rummageable/implementation.rb
81
92
  - lib/rummageable/version.rb
82
- - lib/rummageable.rb
93
+ - lib/rummageable/fake.rb
83
94
  - test/rummageable_test.rb
84
95
  homepage: https://github.com/alphagov/rummageable
85
96
  licenses: []
@@ -94,7 +105,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
105
  requirements:
95
106
  - - ">="
96
107
  - !ruby/object:Gem::Version
97
- hash: 127333834740720783
108
+ hash: 3837460675569533093
98
109
  segments:
99
110
  - 0
100
111
  version: "0"
@@ -103,14 +114,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
114
  requirements:
104
115
  - - ">="
105
116
  - !ruby/object:Gem::Version
106
- hash: 127333834740720783
117
+ hash: 3837460675569533093
107
118
  segments:
108
119
  - 0
109
120
  version: "0"
110
121
  requirements: []
111
122
 
112
123
  rubyforge_project:
113
- rubygems_version: 1.8.13
124
+ rubygems_version: 1.8.12
114
125
  signing_key:
115
126
  specification_version: 3
116
127
  summary: Mediator for apps that want their content to be in the search index