-
Notifications
You must be signed in to change notification settings - Fork 4
/
translator_spec.rb
91 lines (79 loc) · 2.82 KB
/
translator_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
require File.expand_path("../../spec_helper", __FILE__)
require 'ostruct'
describe "Friendly::Translator" do
before do
@serializer = stub
@time = stub
@translator = Friendly::Translator.new(@serializer, @time)
end
describe "translating a row to an object" do
before do
@serializer.stubs(:parse).with("THE JSON").returns(:name => "Stewie")
@time = Time.new
@row = {:added_id => 12345,
:created_at => @time,
:updated_at => @time,
:attributes => "THE JSON"}
@doc = stub
@klass = stub
@klass.stubs(:new_without_change_tracking).
with(:updated_at => @time, :new_record => false,
:name => "Stewie", :created_at => @time).returns(@doc)
end
it "creates a new object without change tracking" do
@translator.to_object(@klass, @row).should == @doc
end
end
describe "translating from a document in to a record" do
describe "when the document has yet to be saved" do
before do
@hash = {:name => "Stewie"}
@time.stubs(:new).returns(Time.new)
@serializer.stubs(:generate).with(@hash).returns("SOME JSON")
@document = stub(:to_hash => @hash,
:new_record? => true,
:created_at => nil,
:id => 12345)
@record = @translator.to_record(@document)
end
it "serializes the attributes" do
@record[:attributes].should == "SOME JSON"
end
it "sets updated_at" do
@record[:updated_at].should == @time.new
end
it "sets the id from the document" do
@record[:id].should == 12345
end
end
describe "when the document has already been saved" do
before do
@created_at = Time.new
@hash = {:name => "Stewie",
:id => 1,
:created_at => @created_at,
:updated_at => Time.new}
@time.stubs(:new).returns(Time.new + 5000)
@serializer.stubs(:generate).returns("SOME JSON")
@document = stub(:to_hash => @hash,
:created_at => @created_at,
:new_record? => false,
:id => 12345)
@record = @translator.to_record(@document)
end
it "serializes the attributes" do
@serializer.should have_received(:generate).with(:name => "Stewie")
@record[:attributes].should == "SOME JSON"
end
it "doesn't bump the created_at" do
@record[:created_at].should == @created_at
end
it "should bump the updated_at" do
@record[:updated_at].should == @time.new
end
it "takes the id from the documetn" do
@record[:id].should == 12345
end
end
end
end