test/integration_test.rb in roar-0.11.4 vs test/integration_test.rb in roar-0.11.5
- old
+ new
@@ -4,81 +4,81 @@
class IntegrationTest < MiniTest::Spec
class Beer
include Roar::Representer::JSON
include Roar::Representer::Feature::Hypermedia
-
+
property :name
-
+
link :self do
"http://beers/#{name.downcase}"
end
end
-
+
class Beers
include Roar::Representer::JSON
include Roar::Representer::Feature::Hypermedia
-
+
collection :items, :class => Beer
end
-
+
describe "Beer service" do
it "provides a document for a particular beer" do
assert_equal "{\"beer\":{\"name\":\"Eisenbahn\",\"links\":[{\"rel\":\"self\",\"href\":\"http://beers/eisenbahn\"}]}}", Beer.from_attributes(name: "Eisenbahn").to_json
end
-
+
it "provides a detailed beers list" do
beers = ["Jever", "Becks", "Eisenbahn", "Colorado"].collect do |name|
Beer.from_attributes(name: name)
end
-
-
+
+
list = Beers.new
list.items = beers
-
+
assert_equal "{\"beers\":{\"items\":[{\"name\":\"Jever\",\"links\":[{\"rel\":\"self\",\"href\":\"http://beers/jever\"}]},{\"name\":\"Becks\",\"links\":[{\"rel\":\"self\",\"href\":\"http://beers/becks\"}]},{\"name\":\"Eisenbahn\",\"links\":[{\"rel\":\"self\",\"href\":\"http://beers/eisenbahn\"}]},{\"name\":\"Colorado\",\"links\":[{\"rel\":\"self\",\"href\":\"http://beers/colorado\"}]}]}}", list.to_json
end
-
+
it "provides a pageable beers list without details" do
class BeerCollection
include Roar::Representer::JSON
include Roar::Representer::Feature::Hypermedia
-
+
attr_accessor :per_page, :current_page, :all_items
-
+
collection :beers, :class => Beer
property :total
-
+
def total
all_items.size
end
-
+
def beers
all_items[(current_page-1)*per_page..current_page*per_page-1]
end
-
+
link :next do
"http://beers/all?page=#{current_page+1}" if current_page < total / per_page
end
-
+
link :prev do
"http://beers/all?page=#{current_page-1}" if current_page > 1
end
end
-
+
beers = ["Jever", "Becks", "Eisenbahn", "Colorado"].collect do |name|
Beer.from_attributes(name: name)
end
-
-
+
+
list = BeerCollection.new
list.all_items = beers # this would be a AR collection from a #find.
list.current_page = 1
list.per_page = 2
-
+
assert_equal "{\"beer_collection\":{\"beers\":[{\"name\":\"Jever\",\"links\":[{\"rel\":\"self\",\"href\":\"http://beers/jever\"}]},{\"name\":\"Becks\",\"links\":[{\"rel\":\"self\",\"href\":\"http://beers/becks\"}]}],\"total\":4,\"links\":[{\"rel\":\"next\",\"href\":\"http://beers/all?page=2\"},{\"rel\":\"prev\"}]}}", list.to_json
-
-
+
+
list.current_page = 2
assert_equal "{\"beer_collection\":{\"beers\":[{\"name\":\"Eisenbahn\",\"links\":[{\"rel\":\"self\",\"href\":\"http://beers/eisenbahn\"}]},{\"name\":\"Colorado\",\"links\":[{\"rel\":\"self\",\"href\":\"http://beers/colorado\"}]}],\"total\":4,\"links\":[{\"rel\":\"next\"},{\"rel\":\"prev\",\"href\":\"http://beers/all?page=1\"}]}}", list.to_json
end
end
end