spec/functional/representation/graph_spec.rb in render-0.0.3 vs spec/functional/representation/graph_spec.rb in render-0.0.4
- old
+ new
@@ -3,7 +3,67 @@
module Render
describe Graph do
describe "relationships" do
#
end
+
+ context "not live" do
+ describe "#render" do
+ before(:each) do
+ Render.stub({ live: false })
+ @hash_definition = {
+ title: :book,
+ type: Object,
+ properties: {
+ title: { type: String }
+ }
+ }
+ @array_definition = {
+ title: :books,
+ type: Array,
+ items: {
+ type: UUID
+ }
+ }
+ end
+
+ it "generates random number of array elements" do
+ graph = Graph.new(@array_definition)
+ generated_book_sizes = 5.times.collect { graph.render.books.size }
+ generated_book_sizes.compact.size.should > 1
+ end
+
+ context "explicit data" do
+ it "uses explicit data for hashes" do
+ graph = Render::Graph.new(@hash_definition)
+ green_eggs_and_ham = "Green Eggs and Ham"
+ data = graph.render({ title: green_eggs_and_ham })
+ data.book.title.should == green_eggs_and_ham
+ end
+
+ it "uses explicit nil data for hashes" do
+ graph = Render::Graph.new(@hash_definition)
+ data = graph.render({ title: nil })
+ data.book.title.should == nil
+ end
+
+ it "uses explicit data for arrays" do
+ graph = Render::Graph.new(@array_definition)
+ id = UUID.generate
+ graph.render([id]).books.should == [id]
+ graph.render([]).books.should == []
+ end
+
+ it "uses explicit data for nested data" do
+ @array_definition[:items] = @hash_definition
+ nested_graph = Graph.new(@array_definition)
+ tell_tale_heart = "The Tell-Tale Heart"
+ data = nested_graph.render([{ title: tell_tale_heart }])
+ data.books.size.should == 1
+ data.books.first.title.should == tell_tale_heart
+ end
+
+ end
+ end
+ end
end
end