halibut 0.1.0 → 0.2.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.
@@ -2,7 +2,7 @@
2
2
  "self": { "href": "/orders" },
3
3
  "find": { "href": "/orders{?id}", "templated": true },
4
4
  "next": [
5
- { "href": "/orders/1" },
5
+ { "href": "/orders/1", "name": "hotdog" },
6
6
  { "href": "/orders/9" }
7
7
  ]
8
8
  },
@@ -0,0 +1,43 @@
1
+ require_relative 'spec_helper'
2
+
3
+ require 'halibut/link_relation'
4
+
5
+ describe Halibut::LinkRelation do
6
+
7
+ describe "String" do
8
+ it "has a name" do
9
+ relation = Halibut::LinkRelation.new 'default'
10
+
11
+ assert relation.name
12
+ relation.name.must_equal 'default'
13
+ end
14
+
15
+ it "has a curie and a name" do
16
+ relation = Halibut::LinkRelation.new 'mighty:max'
17
+
18
+ relation.curie.wont_be_nil
19
+ relation.curie.must_equal 'mighty'
20
+ relation.name
21
+ relation.name.must_equal 'max'
22
+ end
23
+ end
24
+
25
+ describe "Symbol" do
26
+ it "has a name" do
27
+ relation = Halibut::LinkRelation.new :default
28
+
29
+ assert relation.name
30
+ relation.name.must_equal 'default'
31
+ end
32
+
33
+ it "has a curie and a name" do
34
+ relation = Halibut::LinkRelation.new :'mighty:max'
35
+
36
+ relation.curie.wont_be_nil
37
+ relation.curie.must_equal 'mighty'
38
+ relation.name
39
+ relation.name.must_equal 'max'
40
+ end
41
+
42
+ end
43
+ end
data/spec/link_spec.rb CHANGED
@@ -1,53 +1,55 @@
1
1
  require_relative 'spec_helper'
2
2
 
3
- describe Halibut::Link do
3
+ describe Halibut::HAL::Link do
4
4
  let(:normal_uri) { 'http://example.com' }
5
5
  let(:tmpl_uri) { 'http://example.com/{id}' }
6
6
 
7
7
  describe "href" do
8
8
  it "accepts non-templated uri" do
9
- link = Halibut::Link.new normal_uri
10
-
9
+ link = Halibut::HAL::Link.new normal_uri
10
+
11
11
  link.templated?.must_equal false
12
12
  link.href.must_equal normal_uri
13
13
  end
14
-
14
+
15
15
  it "accepts templated uri" do
16
- link = Halibut::Link.new tmpl_uri, true
17
-
16
+ link = Halibut::HAL::Link.new tmpl_uri, templated: true
17
+
18
18
  link.templated?.must_equal true
19
19
  link.href.must_equal tmpl_uri
20
20
  end
21
21
  end
22
-
22
+
23
23
  describe "optionals" do
24
24
  it "are set correctly" do
25
- link1 = Halibut::Link.new normal_uri, false, {
25
+ link1 = Halibut::HAL::Link.new normal_uri, {
26
26
  :type => 'type',
27
27
  :name => 'name',
28
28
  :profile => 'profile',
29
29
  :title => 'title',
30
30
  :hreflang => 'hreflang'
31
31
  }
32
- link2 = Halibut::Link.new normal_uri, false, {
32
+ link2 = Halibut::HAL::Link.new normal_uri, {
33
33
  :type => 'type',
34
34
  :name => 'name',
35
35
  :profile => 'profile',
36
36
  :title => 'title',
37
37
  :hreflang => 'hreflang'
38
38
  }
39
-
39
+
40
40
  link1.type.must_equal "type"
41
41
  link1.name.must_equal "name"
42
42
  link1.profile.must_equal "profile"
43
43
  link1.title.must_equal "title"
44
44
  link1.hreflang.must_equal "hreflang"
45
-
45
+
46
46
  link2.type.must_equal "type"
47
47
  link2.name.must_equal "name"
48
48
  link2.profile.must_equal "profile"
49
49
  link2.title.must_equal "title"
50
50
  link2.hreflang.must_equal "hreflang"
51
+
52
+ link1.must_equal link2
51
53
  end
52
54
  end
53
55
  end
@@ -2,23 +2,24 @@ require_relative 'spec_helper'
2
2
 
3
3
  describe Halibut::RelationMap do
4
4
  subject { Halibut::RelationMap.new }
5
-
5
+
6
6
  it "is empty" do
7
7
  subject.must_be_empty
8
8
  end
9
-
9
+
10
10
  it "has a single item per relation" do
11
11
  subject.add 'first' , 'first'
12
12
  subject.add 'second', 'second'
13
-
13
+
14
14
  subject['first'].first.must_equal 'first'
15
- subject['second'].first.must_equal 'second'
15
+ subject['second'].last.must_equal 'second'
16
+
16
17
  end
17
-
18
+
18
19
  it "has various items per relation" do
19
20
  subject.add 'first', 'first'
20
21
  subject.add 'first', 'second'
21
-
22
+
22
23
  subject['first'].length.must_equal 2
23
24
  subject['first'].first.must_equal 'first'
24
25
  subject['first'].last.must_equal 'second'
@@ -1,89 +1,59 @@
1
1
  require_relative 'spec_helper'
2
2
 
3
- describe Halibut::Resource do
3
+ describe Halibut::HAL::Resource do
4
4
  let(:templated_uri) { "http://example.com/{path}{?query}" }
5
5
  let(:normal_uri) { "http://example.com" }
6
-
6
+
7
7
  describe "Properties" do
8
- subject { Halibut::Resource.new }
9
-
8
+ subject { Halibut::HAL::Resource.new }
9
+
10
10
  it "set property" do
11
11
  subject.set_property "property", "value"
12
-
12
+
13
13
  subject.properties['property'].must_equal "value"
14
14
  end
15
-
15
+
16
16
  it "read property" do
17
17
  subject.set_property "property", "value"
18
-
18
+
19
19
  subject.get_property('property').must_equal "value"
20
20
  end
21
21
  end
22
-
22
+
23
23
  describe "Links" do
24
-
24
+
25
25
  describe "self link" do
26
26
  it "no default" do
27
- resource = Halibut::Resource.new
27
+ resource = Halibut::HAL::Resource.new
28
28
  resource.links.must_be_empty
29
29
  end
30
-
30
+
31
31
  it "default" do
32
- resource = Halibut::Resource.new normal_uri
33
-
32
+ resource = Halibut::HAL::Resource.new normal_uri
33
+
34
34
  resource.links.wont_be_empty
35
35
  resource.links['self'].first.href.must_equal normal_uri
36
36
  end
37
37
  end
38
-
38
+
39
39
  end
40
-
40
+
41
41
  describe "Embedded resources" do
42
- subject { Halibut::Resource.new }
43
- let(:res1) { Halibut::Resource.new "http://first-resource.com" }
44
- let(:res2) { Halibut::Resource.new "http://secnd-resource.com" }
45
-
42
+ subject { Halibut::HAL::Resource.new }
43
+ let(:res1) { Halibut::HAL::Resource.new "http://first-resource.com" }
44
+ let(:res2) { Halibut::HAL::Resource.new "http://secnd-resource.com" }
45
+
46
46
  it "no embedded resource" do
47
- subject.embedded.must_be_empty
47
+ subject.embedded.must_be_empty
48
48
  end
49
-
49
+
50
50
  it "has embedded resource" do
51
51
  subject.embed_resource 'users', res1
52
52
  subject.embed_resource 'users', res2
53
-
53
+
54
54
  subject.embedded['users'].first.must_equal res1
55
55
  subject.embedded['users'].last.must_equal res2
56
56
  end
57
57
  end
58
-
59
- describe "Serialize" do
60
- subject { Halibut::Resource.new("http://example.com").to_json }
61
-
62
- it "serializes to JSON" do
63
- json = load_json "simple"
64
-
65
- JSON.load(subject).must_equal JSON.load(json)
66
- end
67
- end
68
-
69
- describe "Deserialize" do
70
- subject { Halibut::Resource.from_json(load_json "serialize") }
71
-
72
- it "deserializes from JSON" do
73
- order = Halibut::Resource.new "/orders/123"
74
- order.set_property "total", 30.00
75
- order.set_property "currency", "USD"
76
- order.set_property "status", "shipped"
77
-
78
- resource = Halibut::Resource.new "/orders"
79
- resource.add_link "find", "/orders{?id}", true
80
- resource.add_link "next", "/orders/1"
81
- resource.add_link "next", "/orders/9"
82
- resource.set_property "currentlyProcessing", 14
83
- resource.set_property "shippedToday", 20
84
- resource.embed_resource "orders", order
85
-
86
- subject.must_equal resource
87
- end
88
- end
58
+
89
59
  end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  require 'bundler/setup'
2
- Bundler.setup
3
2
 
4
3
  require 'minitest/autorun'
5
- require 'pry'
6
4
 
7
5
  require 'halibut'
8
6
 
@@ -14,4 +12,8 @@ end
14
12
  # Testing Helper to load XML files. Returns a string containing XML.
15
13
  def load_xml(filename)
16
14
  File.read(File.dirname(__FILE__)+"/fixtures/xml/#{filename}.xml")
15
+ end
16
+
17
+ def load_resource(filename)
18
+ File.read(File.dirname(__FILE__)+"/test-resources/src/main/resources/#{filename}")
17
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: halibut
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.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: 2012-09-11 00:00:00.000000000 Z
12
+ date: 2012-11-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
@@ -44,7 +44,7 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
46
  - !ruby/object:Gem::Dependency
47
- name: uri_template
47
+ name: addressable
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
@@ -60,13 +60,13 @@ dependencies:
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  - !ruby/object:Gem::Dependency
63
- name: rake
63
+ name: minitest
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
67
  - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: '4.1'
70
70
  type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
- version: '0'
77
+ version: '4.1'
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: pry
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +82,7 @@ dependencies:
82
82
  requirements:
83
83
  - - ! '>='
84
84
  - !ruby/object:Gem::Version
85
- version: '0'
85
+ version: 0.9.10
86
86
  type: :development
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,9 +90,9 @@ dependencies:
90
90
  requirements:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
- version: '0'
93
+ version: 0.9.10
94
94
  - !ruby/object:Gem::Dependency
95
- name: pry-full
95
+ name: pry-doc
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
@@ -108,7 +108,7 @@ dependencies:
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  - !ruby/object:Gem::Dependency
111
- name: pry-coolline
111
+ name: pry-stack_explorer
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements:
@@ -124,7 +124,39 @@ dependencies:
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
- name: minitest
127
+ name: pry-coolline
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - '='
132
+ - !ruby/object:Gem::Version
133
+ version: 0.1.5
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - '='
140
+ - !ruby/object:Gem::Version
141
+ version: 0.1.5
142
+ - !ruby/object:Gem::Dependency
143
+ name: pry-rescue
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - '='
148
+ - !ruby/object:Gem::Version
149
+ version: '0.13'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - '='
156
+ - !ruby/object:Gem::Version
157
+ version: '0.13'
158
+ - !ruby/object:Gem::Dependency
159
+ name: hash-differ
128
160
  requirement: !ruby/object:Gem::Requirement
129
161
  none: false
130
162
  requirements:
@@ -187,6 +219,22 @@ dependencies:
187
219
  - - ! '>='
188
220
  - !ruby/object:Gem::Version
189
221
  version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: rb-fsevent
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
190
238
  - !ruby/object:Gem::Dependency
191
239
  name: terminal-notifier-guard
192
240
  requirement: !ruby/object:Gem::Requirement
@@ -211,24 +259,35 @@ extensions: []
211
259
  extra_rdoc_files: []
212
260
  files:
213
261
  - .gitignore
262
+ - .gitmodules
214
263
  - .rvmrc
215
264
  - .travis.yml
216
265
  - Gemfile
266
+ - Gemfile.travis
217
267
  - Guardfile
218
268
  - LICENSE
219
269
  - README.md
220
270
  - Rakefile
271
+ - TODO
221
272
  - halibut.gemspec
222
273
  - lib/halibut.rb
223
- - lib/halibut/link.rb
274
+ - lib/halibut/adapter/json.rb
275
+ - lib/halibut/adapter/xml.rb
276
+ - lib/halibut/builder.rb
277
+ - lib/halibut/hal/link.rb
278
+ - lib/halibut/hal/resource.rb
279
+ - lib/halibut/link_relation.rb
224
280
  - lib/halibut/relation_map.rb
225
- - lib/halibut/resource.rb
226
281
  - lib/halibut/version.rb
282
+ - spec/adapter/json_spec.rb
283
+ - spec/adapter/xml_spec.rb
284
+ - spec/builder_spec.rb
227
285
  - spec/fixtures/example.json
228
286
  - spec/fixtures/example.xml
229
287
  - spec/fixtures/minimal.json
230
288
  - spec/fixtures/serialize.json
231
289
  - spec/fixtures/simple.json
290
+ - spec/link_relation_spec.rb
232
291
  - spec/link_spec.rb
233
292
  - spec/relation_map_spec.rb
234
293
  - spec/resource_spec.rb
@@ -242,9 +301,9 @@ require_paths:
242
301
  required_ruby_version: !ruby/object:Gem::Requirement
243
302
  none: false
244
303
  requirements:
245
- - - ! '>='
304
+ - - ~>
246
305
  - !ruby/object:Gem::Version
247
- version: '0'
306
+ version: 1.9.3
248
307
  required_rubygems_version: !ruby/object:Gem::Requirement
249
308
  none: false
250
309
  requirements:
@@ -258,11 +317,15 @@ signing_key:
258
317
  specification_version: 3
259
318
  summary: A HAL parser and builder for use in Hypermedia APIs
260
319
  test_files:
320
+ - spec/adapter/json_spec.rb
321
+ - spec/adapter/xml_spec.rb
322
+ - spec/builder_spec.rb
261
323
  - spec/fixtures/example.json
262
324
  - spec/fixtures/example.xml
263
325
  - spec/fixtures/minimal.json
264
326
  - spec/fixtures/serialize.json
265
327
  - spec/fixtures/simple.json
328
+ - spec/link_relation_spec.rb
266
329
  - spec/link_spec.rb
267
330
  - spec/relation_map_spec.rb
268
331
  - spec/resource_spec.rb