halibut 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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