protobuf-activerecord 1.2.6 → 2.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,102 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Protoable::Fields do
4
- describe "._protobuf_map_columns" do
5
- context "when the class has a table" do
6
- let(:expected_column_names) {
7
- User.columns.inject({}) do |hash, column|
8
- hash[column.name.to_sym] = column
9
- hash
10
- end
11
- }
12
-
13
- let(:expected_column_types) {
14
- User.columns.inject({}) do |hash, column|
15
- hash[column.type.to_sym] ||= []
16
- hash[column.type.to_sym] << column.name.to_sym
17
- hash
18
- end
19
- }
20
-
21
- it "maps columns by name" do
22
- User._protobuf_columns.should eq expected_column_names
23
- end
24
-
25
- it "maps column names by column type" do
26
- User._protobuf_column_types.should eq expected_column_types
27
- end
28
- end
29
- end
30
-
31
- describe ".convert_field" do
32
- context "when the given converter is a hash" do
33
- let(:method) { lambda { User.__send__(:convert_base64_to_string, value) } }
34
-
35
- before { User.convert_field :public_key, :from => :base64, :to => :string }
36
-
37
- it "determines the method using the hash's :to and :from keys" do
38
- User.should_receive(:convert_base64_to_string)
39
- User._protobuf_field_converters[:public_key].call(1)
40
- end
41
- end
42
-
43
- context "when the given converter is a symbol" do
44
- let(:callable) { lambda { User.__send__(:convert_email_to_lowercase, value) } }
45
-
46
- before { User.convert_field :email, :convert_email_to_lowercase }
47
-
48
- it "creates a callable method object from the converter" do
49
- User.should_receive(:convert_email_to_lowercase)
50
- User._protobuf_field_converters[:email].call(1)
51
- end
52
- end
53
-
54
- context "when the given converter is not callable" do
55
- it "raises an exception" do
56
- expect { User.convert_field :email, nil }.to raise_exception(Protoable::FieldConverterError)
57
- end
58
- end
59
-
60
- context "when the given converter is callable" do
61
- let(:callable) { lambda { |value| value } }
62
-
63
- before { User.convert_field :email, callable }
64
-
65
- it "adds the given converter to list of field converters" do
66
- User._protobuf_field_converters[:email].should eq callable
67
- end
68
- end
69
- end
70
-
71
- describe ".attribute_from_proto" do
72
- context "when the given converter is a symbol" do
73
- let(:callable) { lambda { |value| User.__send__(:extract_first_name) } }
74
-
75
- before { User.attribute_from_proto :first_name, :extract_first_name }
76
-
77
- it "creates a callable method object from the converter" do
78
- User.should_receive(:extract_first_name)
79
- User._protobuf_attribute_transformers[:first_name].call(1)
80
- end
81
- end
82
-
83
- context "when the given converter is not callable" do
84
- it "raises an exception" do
85
- expect { User.attribute_from_proto :name, nil }.to raise_exception(Protoable::AttributeTransformerError)
86
- end
87
- end
88
-
89
- context "when the given transformer is callable" do
90
- let(:callable) { lambda { |proto| nil } }
91
-
92
- before {
93
- User.stub(:_protobuf_attribute_transformers).and_return(Hash.new)
94
- User.attribute_from_proto :account_id, callable
95
- }
96
-
97
- it "adds the given converter to the list of protobuf field transformers" do
98
- User._protobuf_attribute_transformers[:account_id] = callable
99
- end
100
- end
101
- end
102
- end