roar 0.12.9 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +8 -10
  4. data/CHANGES.markdown +24 -2
  5. data/Gemfile +5 -2
  6. data/README.markdown +132 -28
  7. data/TODO.markdown +9 -7
  8. data/examples/example.rb +2 -0
  9. data/examples/example_server.rb +19 -3
  10. data/gemfiles/Gemfile.representable-2.0 +5 -0
  11. data/gemfiles/Gemfile.representable-2.1 +5 -0
  12. data/lib/roar.rb +1 -1
  13. data/lib/roar/client.rb +38 -0
  14. data/lib/roar/{representer/feature/coercion.rb → coercion.rb} +2 -1
  15. data/lib/roar/decorator.rb +3 -11
  16. data/lib/roar/http_verbs.rb +88 -0
  17. data/lib/roar/hypermedia.rb +174 -0
  18. data/lib/roar/json.rb +55 -0
  19. data/lib/roar/json/collection.rb +3 -0
  20. data/lib/roar/{representer/json → json}/collection_json.rb +20 -20
  21. data/lib/roar/{representer/json → json}/hal.rb +33 -31
  22. data/lib/roar/json/hash.rb +3 -0
  23. data/lib/roar/json/json_api.rb +208 -0
  24. data/lib/roar/representer.rb +3 -36
  25. data/lib/roar/transport/faraday.rb +49 -0
  26. data/lib/roar/transport/net_http.rb +57 -0
  27. data/lib/roar/transport/net_http/request.rb +72 -0
  28. data/lib/roar/version.rb +1 -1
  29. data/lib/roar/xml.rb +54 -0
  30. data/roar.gemspec +5 -4
  31. data/test/client_test.rb +3 -3
  32. data/test/coercion_feature_test.rb +6 -3
  33. data/test/collection_json_test.rb +8 -10
  34. data/test/decorator_test.rb +27 -15
  35. data/test/faraday_http_transport_test.rb +13 -15
  36. data/test/hal_json_test.rb +16 -16
  37. data/test/hal_links_test.rb +3 -3
  38. data/test/http_verbs_test.rb +17 -22
  39. data/test/hypermedia_feature_test.rb +23 -45
  40. data/test/hypermedia_test.rb +11 -23
  41. data/test/integration/band_representer.rb +2 -2
  42. data/test/integration/runner.rb +4 -3
  43. data/test/integration/server.rb +13 -2
  44. data/test/integration/ssl_server.rb +1 -1
  45. data/test/json_api_test.rb +336 -0
  46. data/test/json_representer_test.rb +16 -12
  47. data/test/lib/runner.rb +134 -0
  48. data/test/lonely_test.rb +9 -0
  49. data/test/net_http_transport_test.rb +4 -4
  50. data/test/representer_test.rb +2 -2
  51. data/test/{lib/roar/representer/transport/net_http/request_test.rb → ssl_client_certs_test.rb} +43 -5
  52. data/test/test_helper.rb +12 -5
  53. data/test/xml_representer_test.rb +26 -166
  54. metadata +49 -29
  55. data/gemfiles/Gemfile.representable-1.7 +0 -6
  56. data/gemfiles/Gemfile.representable-1.8 +0 -6
  57. data/lib/roar/representer/feature/client.rb +0 -39
  58. data/lib/roar/representer/feature/http_verbs.rb +0 -95
  59. data/lib/roar/representer/feature/hypermedia.rb +0 -175
  60. data/lib/roar/representer/json.rb +0 -67
  61. data/lib/roar/representer/transport/faraday.rb +0 -50
  62. data/lib/roar/representer/transport/net_http.rb +0 -59
  63. data/lib/roar/representer/transport/net_http/request.rb +0 -75
  64. data/lib/roar/representer/xml.rb +0 -61
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ require "roar/json/collection"
4
+ require "roar/json/hash"
5
+
6
+ class LonelyCollectionTest < MiniTest::Spec
7
+ it { Roar::JSON::Collection.must_equal Representable::JSON::Collection }
8
+ it { Roar::JSON::Hash.must_equal Representable::JSON::Hash }
9
+ end
@@ -1,11 +1,11 @@
1
1
  require 'test_helper'
2
- require 'roar/representer/transport/net_http'
2
+ require 'roar/transport/net_http'
3
3
 
4
4
  class NetHTTPTransportTest < MiniTest::Spec
5
5
  let(:url) { "http://localhost:4567/method" }
6
6
  let(:body) { "booty" }
7
7
  let(:as) { "application/xml" }
8
- let (:transport) { Roar::Representer::Transport::NetHTTP.new }
8
+ let (:transport) { Roar::Transport::NetHTTP.new }
9
9
 
10
10
  it "#get_uri returns response" do
11
11
  transport.get_uri(:uri => url, :as => as).must_match_net_response :get, url, as
@@ -47,13 +47,13 @@ class NetHTTPTransportTest < MiniTest::Spec
47
47
 
48
48
  describe "basic auth" do
49
49
  it "raises when no credentials provided" do
50
- assert_raises Roar::Representer::Transport::UnauthorizedError do
50
+ assert_raises Roar::Transport::UnauthorizedError do
51
51
  transport.get_uri(:uri => "http://localhost:4567/protected/bands/bodyjar", :as => "application/json")
52
52
  end
53
53
  end
54
54
 
55
55
  it "raises when wrong credentials provided" do
56
- assert_raises Roar::Representer::Transport::UnauthorizedError do
56
+ assert_raises Roar::Transport::UnauthorizedError do
57
57
  transport.get_uri(:uri => "http://localhost:4567/protected/bands/bodyjar", :as => "application/json", :basic_auth => ["admin", "wrong--!!!--password"])
58
58
  end
59
59
  end
@@ -22,13 +22,13 @@ class RepresenterTest < MiniTest::Spec
22
22
  describe "Inheritance" do
23
23
  it "properly inherits properties from modules" do
24
24
  module PersonRepresentation
25
- include Roar::Representer::JSON
25
+ include Roar::JSON
26
26
  property :name
27
27
  end
28
28
 
29
29
  class Person
30
30
  include AttributesConstructor
31
- include Roar::Representer::JSON
31
+ include Roar::JSON
32
32
  include PersonRepresentation
33
33
  attr_accessor :name
34
34
  end
@@ -1,9 +1,47 @@
1
1
  require 'test_helper'
2
- require 'roar/representer/transport/net_http/request'
3
2
 
4
- class NetHTTPTransportRequestTest < MiniTest::Spec
3
+ require "roar"
4
+ require 'roar/transport/net_http/request'
5
+ require 'roar/transport/net_http'
5
6
 
6
- describe Roar::Representer::Transport::NetHTTP::Request do
7
+
8
+ class SslClientCertsTest < MiniTest::Spec
9
+
10
+ describe Roar::Transport::NetHTTP do
11
+
12
+ describe "instance methods" do
13
+
14
+ let(:url) { "http://www.bbc.co.uk" }
15
+ let(:as) { "application/xml" }
16
+
17
+ let(:transport) { Roar::Transport::NetHTTP.new }
18
+
19
+ describe "options passed to the request object (private #call method)" do
20
+
21
+ let(:options) { { uri: url, as: as, pem_file: "test/fixtures/sample.pem", ssl_verify_mode: "ssl_verify_mode" } }
22
+
23
+ describe "option handling" do
24
+
25
+ it "provides all options to the Request object" do
26
+
27
+ request_mock = MiniTest::Mock.new
28
+ request_mock.expect :call, nil, [Net::HTTP::Get]
29
+
30
+ options_assertions = lambda { |argument_options|
31
+ assert_equal argument_options, options
32
+ request_mock
33
+ }
34
+
35
+ Roar::Transport::NetHTTP::Request.stub :new, options_assertions do
36
+ transport.get_uri(options)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ describe Roar::Transport::NetHTTP::Request do
7
45
 
8
46
  describe "instance methods" do
9
47
  describe "#initialize" do
@@ -13,7 +51,7 @@ class NetHTTPTransportRequestTest < MiniTest::Spec
13
51
  let(:uri) { URI.parse("http://www.bbc.co.uk") }
14
52
  let(:options) { { uri: uri, pem_file: pem_file, ssl_verify_mode: ssl_verify_mode } }
15
53
 
16
- let(:request) { Roar::Representer::Transport::NetHTTP::Request.new(options) }
54
+ let(:request) { Roar::Transport::NetHTTP::Request.new(options) }
17
55
  let(:net_http_instance) { request.instance_variable_get(:@http) }
18
56
  let(:ssl_verify_mode) { nil }
19
57
 
@@ -30,7 +68,7 @@ class NetHTTPTransportRequestTest < MiniTest::Spec
30
68
  end
31
69
 
32
70
  it "sets the client cert" do
33
- assert_equal(net_http_instance.cert.to_s, cert.to_s)
71
+ assert_equal(net_http_instance.cert.to_s, cert.to_s)
34
72
  end
35
73
  it "sets the client key" do
36
74
  assert_equal(net_http_instance.key.to_s, key.to_s)
data/test/test_helper.rb CHANGED
@@ -2,8 +2,8 @@ require 'minitest/autorun'
2
2
  require 'ostruct'
3
3
 
4
4
  require 'roar/representer'
5
- require 'roar/representer/feature/http_verbs'
6
- require 'roar/representer/json/hal'
5
+ require 'roar/http_verbs'
6
+ require 'roar/json/hal'
7
7
 
8
8
  module AttributesConstructor # TODO: remove me.
9
9
  def initialize(attrs={})
@@ -24,16 +24,16 @@ class Album < OpenStruct
24
24
  end
25
25
 
26
26
  require "test_xml/mini_test"
27
- require "roar/representer/xml"
27
+ require "roar/xml"
28
28
 
29
29
  require "integration/runner"
30
30
 
31
31
  MiniTest::Spec.class_eval do
32
32
  def link(options)
33
- Roar::Representer::Feature::Hypermedia::Hyperlink.new(options)
33
+ Roar::Hypermedia::Hyperlink.new(options)
34
34
  end
35
35
 
36
- def self.representer_for(modules=[Roar::Representer::JSON, Roar::Representer::Feature::Hypermedia], &block)
36
+ def self.representer_for(modules=[Roar::JSON, Roar::Hypermedia], &block)
37
37
  let (:rpr) do
38
38
  Module.new do
39
39
  include *modules.reverse
@@ -51,3 +51,10 @@ MiniTest::Spec.class_eval do
51
51
  %w(get post put delete).each(&block)
52
52
  end
53
53
  end
54
+
55
+
56
+ Roar::Hypermedia::Hyperlink.class_eval do
57
+ def ==(b)
58
+ @attrs == b.instance_variable_get(:@attrs)
59
+ end
60
+ end
@@ -1,192 +1,52 @@
1
1
  require 'test_helper'
2
2
 
3
- class ItemRepresenter
4
- include AttributesConstructor
5
- include Roar::Representer::XML
6
- self.representation_wrap= :item
7
- property :value
8
- attr_accessor :value
9
- end
10
-
11
- class PositionRepresenter
12
- include AttributesConstructor
13
- include Roar::Representer::XML
14
- self.representation_wrap= :position
15
- property :id
16
- property :item, :class => ItemRepresenter
17
- attr_accessor :id, :item
18
- end
19
-
20
-
21
3
  class XMLRepresenterFunctionalTest < MiniTest::Spec
22
- class Order
23
- include AttributesConstructor
24
- attr_accessor :id, :items
25
- end
26
-
27
- class GreedyOrder < Order
28
- end
4
+ module OrderRepresenter
5
+ include Roar::XML
29
6
 
30
- class TestXmlRepresenter
31
- include Roar::Representer::XML
32
- self.representation_wrap= :order
33
7
  property :id
34
- attr_accessor :id
8
+ self.representation_wrap = :order
35
9
  end
36
10
 
11
+ Order = Struct.new(:id, :items)
37
12
 
38
- describe "XMLRepresenter" do
39
- before do
40
- @m = {"id" => "1"}
41
- @o = Order.new(@m)
13
+ describe "#to_xml" do
14
+ let (:order) { Order.new(1).extend(OrderRepresenter) }
42
15
 
43
- @r = TestXmlRepresenter.new
44
- @i = ItemRepresenter.new
45
- @i.value = "Beer"
46
- end
16
+ # empty model
17
+ it { Order.new.extend(OrderRepresenter).to_xml.must_equal_xml "<order/>" }
47
18
 
48
- describe "#to_xml" do
49
- it "serializes the model" do
50
- assert_xml_equal "<order/>", @r.to_xml
19
+ # populated model
20
+ it { order.to_xml.must_equal_xml "<order><id>1</id></order>" }
51
21
 
52
- @r.id = 1
53
- assert_xml_equal "<order><id>1</id></order>", @r.to_xml
54
-
55
- @r.id = 2
56
- assert_xml_equal "<rap><id>2</id></rap>", @r.to_xml(:wrap => :rap)
57
- end
58
-
59
- it "is aliased by #serialize" do
60
- assert_equal @r.to_xml, @r.serialize
61
- end
62
-
63
- it "accepts :include and :exclude" do
64
- assert_equal '<order/>', @r.to_xml(:exclude => [:id])
65
- end
66
- end
67
-
68
- describe "#from_xml" do
69
- it "deserializes object" do
70
- @order = Order.new.from_xml("<order><id>1</id></order>")
71
- assert_equal "1", @order.id
72
- end
73
-
74
- it "is aliased by #deserialize" do
75
- @order = Order.new.deserialize("<order><id>1</id></order>")
76
- assert_equal "1", @order.id
77
- end
78
-
79
- it "accepts :include and :exclude" do
80
- @order = Order.new.deserialize("<order><id>1</id></order>", :exclude => [:id])
81
- assert_equal nil, @order.id
82
- end
83
- end
84
-
85
-
86
- describe "XML.from_xml" do
87
- class Order
88
- include Roar::Representer::XML
89
- property :id
90
- property :pending
91
- attr_accessor :id, :pending
92
- end
93
-
94
- it "is aliased to #deserialize" do
95
- assert_equal TestXmlRepresenter.from_xml("<order/>").id, TestXmlRepresenter.deserialize("<order/>").id
96
- end
97
-
98
- it "accepts :exclude option" do
99
- order = Order.from_xml(%{<order><id>1</id><pending>1</pending></order>}, :exclude => [:id])
100
- assert_equal nil, order.id
101
- assert_equal "1", order.pending
102
- end
103
-
104
- it "accepts :include option" do
105
- order = Order.from_xml(%{<order><id>1</id><pending>1</pending></order>}, :include => [:id])
106
- assert_equal "1", order.id
107
- assert_equal nil, order.pending
108
- end
109
- end
22
+ # with wrap
23
+ it { order.to_xml(wrap: :rap).must_equal_xml "<rap><id>1</id></rap>" }
110
24
 
25
+ # aliased to #serialize
26
+ it { order.to_xml.must_equal order.serialize }
111
27
 
112
- describe "without options" do
113
- it ".from_xml returns the deserialized model" do
114
- @m = TestXmlRepresenter.from_xml("<order><id>1</id></order>")
115
- assert_equal "1", @m.id
116
- end
117
-
118
- #it ".from_xml still works with nil" do
119
- # assert TestXmlRepresenter.from_xml(nil)
120
- #end
121
-
122
- end
123
-
124
-
125
- describe "with a typed attribute" do
126
- before do
127
- @r = PositionRepresenter.new("id" => "1")
128
- end
129
-
130
- it "#serialize skips empty :item" do
131
- assert_xml_equal "<position><id>1</id></position>", @r.to_xml
132
- end
133
-
134
- it "#to_xml delegates to ItemRepresenter#to_xml" do
135
- @r.item = @i
136
- assert_xml_equal "<position><id>1</id><item><value>Beer</value></item></position>", @r.to_xml
137
- end
138
-
139
- it ".from_xml typecasts :item" do
140
- @m = PositionRepresenter.from_xml("<position><id>1</id><item><value>beer</value></item>\n</position>")
141
-
142
- assert_equal "1", @m.id
143
- assert_equal "beer", @m.item.value
144
- end
145
- end
146
-
147
-
148
- describe "with a typed list" do
149
- before do
150
- @c = Class.new do
151
- include AttributesConstructor
152
- include Roar::Representer::XML
153
-
154
- self.representation_wrap= :order
155
- property :id
156
- collection :items, :class => ItemRepresenter, :as => :item
157
- attr_accessor :id, :items
158
- end
159
-
160
- @r = @c.new("id" => 1)
161
- end
162
-
163
- it "#serialize_model skips empty :item" do
164
- assert_xml_equal "<order><id>1</id></order>", @r.to_xml
165
- end
166
-
167
- it "#serialize delegates to ItemXmlRepresenter#to_xml in list" do
168
- @r.items = [ItemRepresenter.new("value" => "Bier")]
28
+ # accepts options
29
+ it { order.to_xml(exclude: [:id]).must_equal_xml "<order/>" }
30
+ end
169
31
 
170
- assert_xml_equal "<order><id>1</id><item><value>Bier</value></item></order>",
171
- @r.to_xml
172
- end
32
+ describe "#from_xml" do
33
+ let (:order) { Order.new.extend(OrderRepresenter) }
173
34
 
174
- it ".from_xml typecasts list" do
175
- @m = @c.from_xml("<order><id>1</id><item><value>beer</value></item>\n</order>")
35
+ # parses
36
+ it { order.from_xml("<order><id>1</id></order>").id.must_equal "1" }
176
37
 
177
- assert_equal "1", @m.id
178
- assert_equal 1, @m.items.size
179
- assert_equal "beer", @m.items.first.value
180
- end
181
- end
38
+ # aliased to #deserialize
39
+ it { order.deserialize("<order><id>1</id></order>").id.must_equal "1" }
182
40
 
41
+ # accepts options
42
+ it { order.from_xml("<order><id>1</id></order>", exclude: [:id]).id.must_equal nil }
183
43
  end
184
44
  end
185
45
 
186
46
  class XmlHyperlinkRepresenterTest < MiniTest::Spec
187
47
  describe "API" do
188
48
  before do
189
- @link = Roar::Representer::Feature::Hypermedia::Hyperlink.new.extend(Roar::Representer::XML::HyperlinkRepresenter).from_xml(%{<link rel="self" href="http://roar.apotomo.de" media="web"/>})
49
+ @link = Roar::Hypermedia::Hyperlink.new.extend(Roar::XML::HyperlinkRepresenter).from_xml(%{<link rel="self" href="http://roar.apotomo.de" media="web"/>})
190
50
  end
191
51
 
192
52
  it "responds to #rel" do
metadata CHANGED
@@ -1,35 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.9
4
+ version: 1.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-01 00:00:00.000000000 Z
11
+ date: 2014-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: representable
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.6.0
20
- - - "<"
21
18
  - !ruby/object:Gem::Version
22
19
  version: 2.0.0
20
+ - - "<="
21
+ - !ruby/object:Gem::Version
22
+ version: 3.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 1.6.0
30
- - - "<"
31
28
  - !ruby/object:Gem::Version
32
29
  version: 2.0.0
30
+ - - "<="
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rake
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -62,16 +62,16 @@ dependencies:
62
62
  name: minitest
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - '='
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: 5.0.0
67
+ version: 5.4.2
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - '='
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: 5.0.0
74
+ version: 5.4.2
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: sinatra
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -87,7 +87,7 @@ dependencies:
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
- name: virtus
90
+ name: sinatra-contrib
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - ">="
@@ -100,6 +100,20 @@ dependencies:
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: virtus
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.0
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 1.0.0
103
117
  - !ruby/object:Gem::Dependency
104
118
  name: faraday
105
119
  requirement: !ruby/object:Gem::Requirement
@@ -146,23 +160,26 @@ files:
146
160
  - TODO.markdown
147
161
  - examples/example.rb
148
162
  - examples/example_server.rb
149
- - gemfiles/Gemfile.representable-1.7
150
- - gemfiles/Gemfile.representable-1.8
163
+ - gemfiles/Gemfile.representable-2.0
164
+ - gemfiles/Gemfile.representable-2.1
151
165
  - lib/roar.rb
166
+ - lib/roar/client.rb
167
+ - lib/roar/coercion.rb
152
168
  - lib/roar/decorator.rb
169
+ - lib/roar/http_verbs.rb
170
+ - lib/roar/hypermedia.rb
171
+ - lib/roar/json.rb
172
+ - lib/roar/json/collection.rb
173
+ - lib/roar/json/collection_json.rb
174
+ - lib/roar/json/hal.rb
175
+ - lib/roar/json/hash.rb
176
+ - lib/roar/json/json_api.rb
153
177
  - lib/roar/representer.rb
154
- - lib/roar/representer/feature/client.rb
155
- - lib/roar/representer/feature/coercion.rb
156
- - lib/roar/representer/feature/http_verbs.rb
157
- - lib/roar/representer/feature/hypermedia.rb
158
- - lib/roar/representer/json.rb
159
- - lib/roar/representer/json/collection_json.rb
160
- - lib/roar/representer/json/hal.rb
161
- - lib/roar/representer/transport/faraday.rb
162
- - lib/roar/representer/transport/net_http.rb
163
- - lib/roar/representer/transport/net_http/request.rb
164
- - lib/roar/representer/xml.rb
178
+ - lib/roar/transport/faraday.rb
179
+ - lib/roar/transport/net_http.rb
180
+ - lib/roar/transport/net_http/request.rb
165
181
  - lib/roar/version.rb
182
+ - lib/roar/xml.rb
166
183
  - roar.gemspec
167
184
  - test/client_test.rb
168
185
  - test/coercion_feature_test.rb
@@ -180,10 +197,13 @@ files:
180
197
  - test/integration/runner.rb
181
198
  - test/integration/server.rb
182
199
  - test/integration/ssl_server.rb
200
+ - test/json_api_test.rb
183
201
  - test/json_representer_test.rb
184
- - test/lib/roar/representer/transport/net_http/request_test.rb
202
+ - test/lib/runner.rb
203
+ - test/lonely_test.rb
185
204
  - test/net_http_transport_test.rb
186
205
  - test/representer_test.rb
206
+ - test/ssl_client_certs_test.rb
187
207
  - test/test_helper.rb
188
208
  - test/xml_representer_test.rb
189
209
  homepage: http://rubygems.org/gems/roar
@@ -201,9 +221,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
201
221
  version: '0'
202
222
  required_rubygems_version: !ruby/object:Gem::Requirement
203
223
  requirements:
204
- - - ">="
224
+ - - ">"
205
225
  - !ruby/object:Gem::Version
206
- version: '0'
226
+ version: 1.3.1
207
227
  requirements: []
208
228
  rubyforge_project:
209
229
  rubygems_version: 2.2.2