active_remote 3.3.3 → 5.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +28 -0
  3. data/CHANGES.md +13 -0
  4. data/Gemfile +1 -1
  5. data/Rakefile +7 -3
  6. data/active_remote.gemspec +8 -6
  7. data/lib/active_remote.rb +9 -8
  8. data/lib/active_remote/association.rb +12 -14
  9. data/lib/active_remote/attribute_definition.rb +14 -12
  10. data/lib/active_remote/attributes.rb +6 -6
  11. data/lib/active_remote/base.rb +20 -27
  12. data/lib/active_remote/config.rb +1 -1
  13. data/lib/active_remote/dirty.rb +3 -3
  14. data/lib/active_remote/dsl.rb +3 -4
  15. data/lib/active_remote/errors.rb +1 -11
  16. data/lib/active_remote/persistence.rb +11 -12
  17. data/lib/active_remote/primary_key.rb +0 -1
  18. data/lib/active_remote/query_attributes.rb +13 -13
  19. data/lib/active_remote/rpc.rb +8 -14
  20. data/lib/active_remote/rpc_adapters/protobuf_adapter.rb +18 -17
  21. data/lib/active_remote/scope_keys.rb +1 -2
  22. data/lib/active_remote/search.rb +8 -6
  23. data/lib/active_remote/serializers/protobuf.rb +15 -25
  24. data/lib/active_remote/validations.rb +1 -1
  25. data/lib/active_remote/version.rb +1 -1
  26. data/spec/lib/active_remote/association_spec.rb +23 -23
  27. data/spec/lib/active_remote/attributes_spec.rb +49 -3
  28. data/spec/lib/active_remote/base_spec.rb +1 -1
  29. data/spec/lib/active_remote/dirty_spec.rb +12 -12
  30. data/spec/lib/active_remote/dsl_spec.rb +4 -4
  31. data/spec/lib/active_remote/integration_spec.rb +2 -2
  32. data/spec/lib/active_remote/persistence_spec.rb +26 -33
  33. data/spec/lib/active_remote/primary_key_spec.rb +3 -3
  34. data/spec/lib/active_remote/query_attribute_spec.rb +0 -120
  35. data/spec/lib/active_remote/rpc_adapters/protobuf_adapter_spec.rb +1 -1
  36. data/spec/lib/active_remote/rpc_spec.rb +1 -1
  37. data/spec/lib/active_remote/scope_keys_spec.rb +7 -7
  38. data/spec/lib/active_remote/search_spec.rb +8 -8
  39. data/spec/lib/active_remote/serialization_spec.rb +4 -4
  40. data/spec/lib/active_remote/serializers/protobuf_spec.rb +23 -23
  41. data/spec/lib/active_remote/validations_spec.rb +17 -17
  42. data/spec/spec_helper.rb +9 -9
  43. data/spec/support/helpers.rb +6 -6
  44. data/spec/support/models.rb +8 -8
  45. data/spec/support/models/author.rb +1 -1
  46. data/spec/support/models/category.rb +1 -2
  47. data/spec/support/models/default_author.rb +1 -1
  48. data/spec/support/models/post.rb +4 -4
  49. data/spec/support/models/tag.rb +1 -1
  50. data/spec/support/models/typecasted_author.rb +4 -5
  51. data/spec/support/protobuf.rb +5 -5
  52. metadata +24 -26
  53. data/lib/active_remote/attribute_assignment.rb +0 -53
  54. data/lib/active_remote/type.rb +0 -36
  55. data/lib/active_remote/type/registry.rb +0 -45
  56. data/lib/active_remote/typecasting.rb +0 -51
  57. data/lib/active_remote/typecasting/big_decimal_typecaster.rb +0 -21
  58. data/lib/active_remote/typecasting/boolean.rb +0 -7
  59. data/lib/active_remote/typecasting/boolean_typecaster.rb +0 -18
  60. data/lib/active_remote/typecasting/date_time_typecaster.rb +0 -10
  61. data/lib/active_remote/typecasting/date_typecaster.rb +0 -10
  62. data/lib/active_remote/typecasting/float_typecaster.rb +0 -9
  63. data/lib/active_remote/typecasting/integer_typecaster.rb +0 -10
  64. data/lib/active_remote/typecasting/object_typecaster.rb +0 -9
  65. data/lib/active_remote/typecasting/string_typecaster.rb +0 -9
  66. data/spec/lib/active_remote/errors_spec.rb +0 -31
  67. data/spec/lib/active_remote/typecasting_spec.rb +0 -53
@@ -15,6 +15,52 @@ describe ::ActiveRemote::Attributes do
15
15
  end
16
16
  subject { ::Author.new }
17
17
 
18
+ describe "type casting" do
19
+ let(:test_class) { ::TypecastedAuthor }
20
+
21
+ describe "boolean" do
22
+ it "casts to boolean" do
23
+ record = test_class.new(:writes_fiction => "f")
24
+ expect(record.writes_fiction).to eq(false)
25
+ end
26
+ end
27
+
28
+ describe "datetime" do
29
+ it "casts to datetime" do
30
+ record = test_class.new(:birthday => "2016-01-01")
31
+ expect(record.birthday).to eq(DateTime.parse("2016-01-01"))
32
+ end
33
+
34
+ context "invalid date" do
35
+ it "sets attribute to nil" do
36
+ record = test_class.new(:birthday => "23451234")
37
+ expect(record.birthday).to be_nil
38
+ end
39
+ end
40
+ end
41
+
42
+ describe "float" do
43
+ it "casts to float" do
44
+ record = test_class.new(:net_sales => "2000.20")
45
+ expect(record.net_sales).to eq(2000.2)
46
+ end
47
+ end
48
+
49
+ describe "integer" do
50
+ it "casts to integer" do
51
+ record = test_class.new(:age => "40")
52
+ expect(record.age).to eq(40)
53
+ end
54
+ end
55
+
56
+ describe "string" do
57
+ it "casts to string" do
58
+ record = test_class.new(:guid => 1000)
59
+ expect(record.guid).to eq("1000")
60
+ end
61
+ end
62
+ end
63
+
18
64
  describe ".attribute" do
19
65
  context "a dangerous attribute" do
20
66
  it "raises an error" do
@@ -98,7 +144,7 @@ describe ::ActiveRemote::Attributes do
98
144
  end
99
145
 
100
146
  it "returns a new Hash " do
101
- subject.attributes.merge!("foobar" => "foobar")
147
+ subject.attributes["foobar"] = "foobar"
102
148
  expect(subject.attributes).to_not include("foobar" => "foobar")
103
149
  end
104
150
 
@@ -112,11 +158,11 @@ describe ::ActiveRemote::Attributes do
112
158
  before { subject.name = "test" }
113
159
 
114
160
  it "includes the class name and all attribute values in alphabetical order by attribute name" do
115
- expect(subject.inspect).to eq(%{#<Author category_guid: nil, chief_editor_guid: nil, editor_guid: nil, guid: nil, name: "test", user_guid: nil>})
161
+ expect(subject.inspect).to eq(%(#<Author category_guid: nil, chief_editor_guid: nil, editor_guid: nil, guid: nil, name: "test", user_guid: nil>))
116
162
  end
117
163
 
118
164
  it "doesn't format the inspection string for attributes if the model does not have any" do
119
- expect(::NoAttributes.new.inspect).to eq(%{#<NoAttributes>})
165
+ expect(::NoAttributes.new.inspect).to eq(%(#<NoAttributes>))
120
166
  end
121
167
  end
122
168
 
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveRemote::Base do
4
4
  describe "#initialize" do
@@ -1,8 +1,8 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveRemote::Dirty do
4
4
  context "when writing attributes through the setter" do
5
- subject { Post.new(:name => 'foo') }
5
+ subject { Post.new(:name => "foo") }
6
6
 
7
7
  before {
8
8
  subject.previous_changes.try(:clear)
@@ -10,20 +10,20 @@ describe ActiveRemote::Dirty do
10
10
  }
11
11
 
12
12
  context "when the value changes" do
13
- before { subject.name = 'bar' }
13
+ before { subject.name = "bar" }
14
14
 
15
15
  its(:name_changed?) { should be_truthy }
16
16
  end
17
17
 
18
18
  context "when the value doesn't change" do
19
- before { subject.name = 'foo' }
19
+ before { subject.name = "foo" }
20
20
 
21
21
  its(:name_changed?) { should be_falsey }
22
22
  end
23
23
  end
24
24
 
25
25
  context "when writing attributes directly" do
26
- subject { Post.new(:name => 'foo') }
26
+ subject { Post.new(:name => "foo") }
27
27
 
28
28
  before {
29
29
  subject.previous_changes.try(:clear)
@@ -31,23 +31,23 @@ describe ActiveRemote::Dirty do
31
31
  }
32
32
 
33
33
  context "when the value changes" do
34
- before { subject[:name] = 'bar' }
34
+ before { subject[:name] = "bar" }
35
35
 
36
36
  its(:name_changed?) { should be_truthy }
37
37
  end
38
38
 
39
39
  context "when the value doesn't change" do
40
- before { subject[:name] = 'foo' }
40
+ before { subject[:name] = "foo" }
41
41
 
42
42
  its(:name_changed?) { should be_falsey }
43
43
  end
44
44
  end
45
45
 
46
46
  describe "#reload" do
47
- subject { Post.new(:name => 'foo') }
47
+ subject { Post.new(:name => "foo") }
48
48
 
49
49
  before {
50
- allow(Post).to receive(:find).and_return(Post.new(:name => 'foo'))
50
+ allow(Post).to receive(:find).and_return(Post.new(:name => "foo"))
51
51
  subject.reload
52
52
  }
53
53
 
@@ -57,7 +57,7 @@ describe ActiveRemote::Dirty do
57
57
  describe "#save" do
58
58
  let!(:changes) { subject.changes }
59
59
 
60
- subject { Post.new(:name => 'foo') }
60
+ subject { Post.new(:name => "foo") }
61
61
 
62
62
  before {
63
63
  allow(subject).to receive(:create_or_update).and_return(true)
@@ -71,7 +71,7 @@ describe ActiveRemote::Dirty do
71
71
  describe "#save!" do
72
72
  let!(:changes) { subject.changes }
73
73
 
74
- subject { Post.new(:name => 'foo') }
74
+ subject { Post.new(:name => "foo") }
75
75
 
76
76
  before {
77
77
  allow(subject).to receive(:save).and_return(true)
@@ -84,7 +84,7 @@ describe ActiveRemote::Dirty do
84
84
 
85
85
  describe "#instantiate" do
86
86
  let(:post) { Post.new }
87
- let(:record) { ::Generic::Remote::Post.new(:name => 'foo') }
87
+ let(:record) { ::Generic::Remote::Post.new(:name => "foo") }
88
88
 
89
89
  it "clears previous changes" do
90
90
  new_record = post.instantiate(record.to_hash)
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  # For testing the DSL methods
4
4
  module Another
@@ -17,19 +17,19 @@ describe ActiveRemote::DSL do
17
17
  Tag.attr_publishable :guid
18
18
  Tag.attr_publishable :name
19
19
 
20
- expect(Tag.publishable_attributes).to match_array([ :guid, :name ])
20
+ expect(Tag.publishable_attributes).to match_array([:guid, :name])
21
21
  end
22
22
  end
23
23
 
24
24
  describe ".endpoints" do
25
25
  it "has default values" do
26
- expect(Tag.endpoints).to eq({
26
+ expect(Tag.endpoints).to eq(
27
27
  :create => :create,
28
28
  :delete => :delete,
29
29
  :destroy => :destroy,
30
30
  :search => :search,
31
31
  :update => :update
32
- })
32
+ )
33
33
  end
34
34
 
35
35
  context "given a new value for an endpoint" do
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ::ActiveRemote::Integration do
4
4
  let(:guid) { "GUID-derp" }
@@ -29,7 +29,7 @@ describe ::ActiveRemote::Integration do
29
29
 
30
30
  it "adds the 'updated_at' attribute to the cache_key if updated_at is present" do
31
31
  ::ActiveRemote.config.default_cache_key_updated_at = true
32
- twenty_o_one_one = subject[:updated_at] = DateTime.new(2001, 01, 01)
32
+ twenty_o_one_one = subject[:updated_at] = DateTime.new(2001, 0o1, 0o1)
33
33
  expect(subject).to receive(:new_record?).and_return(false)
34
34
  expect(subject.cache_key).to eq("tag/#{guid}-#{twenty_o_one_one.to_s(:number)}")
35
35
  subject[:updated_at] = nil
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ::ActiveRemote::Persistence do
4
4
  let(:response_without_errors) { ::HashWithIndifferentAccess.new(:errors => []) }
@@ -15,16 +15,16 @@ describe ::ActiveRemote::Persistence do
15
15
  describe ".create" do
16
16
  it "runs create callbacks" do
17
17
  expect_any_instance_of(Tag).to receive(:after_create_callback)
18
- Tag.create(:name => 'foo')
18
+ Tag.create(:name => "foo")
19
19
  end
20
20
 
21
21
  it "initializes and saves a new record" do
22
22
  expect_any_instance_of(Tag).to receive(:save)
23
- Tag.create(:name => 'foo')
23
+ Tag.create(:name => "foo")
24
24
  end
25
25
 
26
26
  it "returns a new record" do
27
- value = Tag.create(:name => 'foo')
27
+ value = Tag.create(:name => "foo")
28
28
  expect(value).to be_a(Tag)
29
29
  end
30
30
  end
@@ -32,14 +32,14 @@ describe ::ActiveRemote::Persistence do
32
32
  describe ".create!" do
33
33
  it "initializes and saves a new record" do
34
34
  expect_any_instance_of(Tag).to receive(:save!)
35
- Tag.create!(:name => 'foo')
35
+ Tag.create!(:name => "foo")
36
36
  end
37
37
 
38
38
  context "when the record has errors" do
39
39
  before { allow_any_instance_of(Tag).to receive(:save!).and_raise(ActiveRemote::ActiveRemoteError) }
40
40
 
41
41
  it "raises an exception" do
42
- expect { Tag.create!(:name => 'foo') }.to raise_error(ActiveRemote::ActiveRemoteError)
42
+ expect { Tag.create!(:name => "foo") }.to raise_error(ActiveRemote::ActiveRemoteError)
43
43
  end
44
44
  end
45
45
  end
@@ -58,8 +58,8 @@ describe ::ActiveRemote::Persistence do
58
58
  end
59
59
 
60
60
  context "when the response has errors" do
61
- let(:error) { Generic::Error.new(:field => 'name', :message => 'Boom!') }
62
- let(:response) { Generic::Remote::Tag.new(:errors => [ error ]) }
61
+ let(:error) { Generic::Error.new(:field => "name", :message => "Boom!") }
62
+ let(:response) { Generic::Remote::Tag.new(:errors => [error]) }
63
63
 
64
64
  before { allow(rpc).to receive(:execute).and_return(response) }
65
65
 
@@ -81,8 +81,8 @@ describe ::ActiveRemote::Persistence do
81
81
  end
82
82
 
83
83
  context "when an error occurs" do
84
- let(:error) { Generic::Error.new(:field => 'name', :message => 'Boom!') }
85
- let(:response) { Generic::Remote::Tag.new(:errors => [ error ]) }
84
+ let(:error) { Generic::Error.new(:field => "name", :message => "Boom!") }
85
+ let(:response) { Generic::Remote::Tag.new(:errors => [error]) }
86
86
 
87
87
  before { allow(rpc).to receive(:execute).and_return(response) }
88
88
 
@@ -106,8 +106,8 @@ describe ::ActiveRemote::Persistence do
106
106
  end
107
107
 
108
108
  context "when the response has errors" do
109
- let(:error) { Generic::Error.new(:field => 'name', :message => 'Boom!') }
110
- let(:response) { Generic::Remote::Tag.new(:errors => [ error ]) }
109
+ let(:error) { Generic::Error.new(:field => "name", :message => "Boom!") }
110
+ let(:response) { Generic::Remote::Tag.new(:errors => [error]) }
111
111
 
112
112
  before { allow(rpc).to receive(:execute).and_return(response) }
113
113
 
@@ -129,8 +129,8 @@ describe ::ActiveRemote::Persistence do
129
129
  end
130
130
 
131
131
  context "when an error occurs" do
132
- let(:error) { Generic::Error.new(:field => 'name', :message => 'Boom!') }
133
- let(:response) { Generic::Remote::Tag.new(:errors => [ error ]) }
132
+ let(:error) { Generic::Error.new(:field => "name", :message => "Boom!") }
133
+ let(:response) { Generic::Remote::Tag.new(:errors => [error]) }
134
134
 
135
135
  before { allow(rpc).to receive(:execute).and_return(response) }
136
136
 
@@ -142,7 +142,7 @@ describe ::ActiveRemote::Persistence do
142
142
 
143
143
  describe "#readonly?" do
144
144
  context "when the record is created through instantiate with options[:readonly]" do
145
- subject { Tag.instantiate({:guid => 'foo'}, :readonly => true) }
145
+ subject { Tag.instantiate({ :guid => "foo" }, :readonly => true) }
146
146
 
147
147
  its(:new_record?) { should be_falsey }
148
148
  its(:readonly?) { should be_truthy }
@@ -165,13 +165,13 @@ describe ::ActiveRemote::Persistence do
165
165
 
166
166
  describe "#new_record?" do
167
167
  context "when the record is created through instantiate" do
168
- subject { Tag.instantiate(:guid => 'foo') }
168
+ subject { Tag.instantiate(:guid => "foo") }
169
169
 
170
170
  its(:new_record?) { should be_falsey }
171
171
  end
172
172
 
173
173
  context "when the record is persisted" do
174
- subject { Tag.allocate.instantiate(:guid => 'foo') }
174
+ subject { Tag.allocate.instantiate(:guid => "foo") }
175
175
 
176
176
  its(:new_record?) { should be_falsey }
177
177
  end
@@ -185,7 +185,7 @@ describe ::ActiveRemote::Persistence do
185
185
 
186
186
  describe "#persisted?" do
187
187
  context "when the record is persisted" do
188
- subject { Tag.allocate.instantiate(:guid => 'foo') }
188
+ subject { Tag.allocate.instantiate(:guid => "foo") }
189
189
 
190
190
  its(:persisted?) { should be_truthy }
191
191
  end
@@ -215,7 +215,7 @@ describe ::ActiveRemote::Persistence do
215
215
  end
216
216
 
217
217
  context "when the record is not new" do
218
- let(:attributes) { { 'guid' => 'foo' } }
218
+ let(:attributes) { { "guid" => "foo" } }
219
219
 
220
220
  subject { Tag.allocate.instantiate(attributes) }
221
221
 
@@ -259,16 +259,9 @@ describe ::ActiveRemote::Persistence do
259
259
  end
260
260
 
261
261
  context "when the record is not saved" do
262
- let(:errors) {
263
- [Generic::Error.new(:field => "name", :message => "Error one!"),
264
- Generic::Error.new(:field => "name", :message => "Error two!")]
265
- }
266
- let(:response) { Generic::Remote::Tag.new(:errors => errors) }
267
- before { allow(rpc).to receive(:execute).and_return(response) }
268
-
269
262
  it "raises an exception" do
270
- expect { subject.save! }
271
- .to raise_error(ActiveRemote::RemoteRecordNotSaved, "Name Error one!, Name Error two!")
263
+ allow(subject).to receive(:save).and_return(false)
264
+ expect { subject.save! }.to raise_error(ActiveRemote::RemoteRecordNotSaved)
272
265
  end
273
266
  end
274
267
  end
@@ -288,7 +281,7 @@ describe ::ActiveRemote::Persistence do
288
281
  end
289
282
 
290
283
  describe "#update_attribute" do
291
- let(:tag) { Tag.allocate.instantiate({:guid => "123"}) }
284
+ let(:tag) { Tag.allocate.instantiate(:guid => "123") }
292
285
 
293
286
  it "runs update callbacks" do
294
287
  expect(tag).to receive(:after_update_callback)
@@ -296,7 +289,7 @@ describe ::ActiveRemote::Persistence do
296
289
  end
297
290
 
298
291
  it "updates a remote record" do
299
- expect(rpc).to receive(:execute).with(:update, {"name" => "foo", "guid" => "123"})
292
+ expect(rpc).to receive(:execute).with(:update, "name" => "foo", "guid" => "123")
300
293
  tag.update_attribute(:name, "foo")
301
294
  end
302
295
 
@@ -315,8 +308,8 @@ describe ::ActiveRemote::Persistence do
315
308
  end
316
309
 
317
310
  describe "#update_attributes" do
318
- let(:attributes) { HashWithIndifferentAccess.new(:name => 'bar') }
319
- let(:tag) { Tag.allocate.instantiate({:guid => "123"}) }
311
+ let(:attributes) { HashWithIndifferentAccess.new(:name => "bar") }
312
+ let(:tag) { Tag.allocate.instantiate(:guid => "123") }
320
313
 
321
314
  it "runs update callbacks" do
322
315
  expect(tag).to receive(:after_update_callback)
@@ -343,7 +336,7 @@ describe ::ActiveRemote::Persistence do
343
336
  end
344
337
 
345
338
  describe "#update_attributes!" do
346
- let(:attributes) { HashWithIndifferentAccess.new(:name => 'bar') }
339
+ let(:attributes) { HashWithIndifferentAccess.new(:name => "bar") }
347
340
 
348
341
  before { allow(subject).to receive(:save!) }
349
342
  after { allow(subject).to receive(:save!).and_call_original }
@@ -1,12 +1,12 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ActiveRemote::PrimaryKey do
4
- let(:tag) { Tag.new(:id => '1234', :guid => 'TAG-123', :user_guid => 'USR-123') }
4
+ let(:tag) { Tag.new(:id => "1234", :guid => "TAG-123", :user_guid => "USR-123") }
5
5
 
6
6
  after { Tag.instance_variable_set :@primary_key, nil }
7
7
 
8
8
  describe ".default_primary_key" do
9
- it 'returns array of :guid' do
9
+ it "returns array of :guid" do
10
10
  expect(Tag.default_primary_key).to eq(:guid)
11
11
  end
12
12
  end
@@ -47,125 +47,5 @@ describe ::ActiveRemote::QueryAttributes do
47
47
  subject.name = 1
48
48
  expect(subject.name?).to eq true
49
49
  end
50
-
51
- it "is false when the attribute is 0.0" do
52
- subject.name = 0.0
53
- expect(subject.name?).to eq false
54
- end
55
-
56
- it "is true when the attribute is 0.1" do
57
- subject.name = 0.1
58
- expect(subject.name?).to eq true
59
- end
60
-
61
- it "is false when the attribute is a zero BigDecimal" do
62
- subject.name = BigDecimal.new("0.0")
63
- expect(subject.name?).to eq false
64
- end
65
-
66
- it "is true when the attribute is a non-zero BigDecimal" do
67
- subject.name = BigDecimal.new("0.1")
68
- expect(subject.name?).to eq true
69
- end
70
-
71
- it "is true when the attribute is -1" do
72
- subject.name = -1
73
- expect(subject.name?).to eq true
74
- end
75
-
76
- it "is false when the attribute is -0.0" do
77
- subject.name = -0.0
78
- expect(subject.name?).to eq false
79
- end
80
-
81
- it "is true when the attribute is -0.1" do
82
- subject.name = -0.1
83
- expect(subject.name?).to eq true
84
- end
85
-
86
- it "is false when the attribute is a negative zero BigDecimal" do
87
- subject.name = BigDecimal.new("-0.0")
88
- expect(subject.name?).to eq false
89
- end
90
-
91
- it "is true when the attribute is a negative BigDecimal" do
92
- subject.name = BigDecimal.new("-0.1")
93
- expect(subject.name?).to eq true
94
- end
95
-
96
- it "is false when the attribute is '0'" do
97
- subject.name = "0"
98
- expect(subject.name?).to eq false
99
- end
100
-
101
- it "is true when the attribute is '1'" do
102
- subject.name = "1"
103
- expect(subject.name?).to eq true
104
- end
105
-
106
- it "is false when the attribute is '0.0'" do
107
- subject.name = "0.0"
108
- expect(subject.name?).to eq false
109
- end
110
-
111
- it "is true when the attribute is '0.1'" do
112
- subject.name = "0.1"
113
- expect(subject.name?).to eq true
114
- end
115
-
116
- it "is true when the attribute is '-1'" do
117
- subject.name = "-1"
118
- expect(subject.name?).to eq true
119
- end
120
-
121
- it "is false when the attribute is '-0.0'" do
122
- subject.name = "-0.0"
123
- expect(subject.name?).to eq false
124
- end
125
-
126
- it "is true when the attribute is '-0.1'" do
127
- subject.name = "-0.1"
128
- expect(subject.name?).to eq true
129
- end
130
-
131
- it "is true when the attribute is 'true'" do
132
- subject.name = "true"
133
- expect(subject.name?).to eq true
134
- end
135
-
136
- it "is false when the attribute is 'false'" do
137
- subject.name = "false"
138
- expect(subject.name?).to eq false
139
- end
140
-
141
- it "is true when the attribute is 't'" do
142
- subject.name = "t"
143
- expect(subject.name?).to eq true
144
- end
145
-
146
- it "is false when the attribute is 'f'" do
147
- subject.name = "f"
148
- expect(subject.name?).to eq false
149
- end
150
-
151
- it "is true when the attribute is 'T'" do
152
- subject.name = "T"
153
- expect(subject.name?).to eq true
154
- end
155
-
156
- it "is false when the attribute is 'F'" do
157
- subject.name = "F"
158
- expect(subject.name?).to eq false
159
- end
160
-
161
- it "is true when the attribute is 'TRUE'" do
162
- subject.name = "TRUE"
163
- expect(subject.name?).to eq true
164
- end
165
-
166
- it "is false when the attribute is 'FALSE" do
167
- subject.name = "FALSE"
168
- expect(subject.name?).to eq false
169
- end
170
50
  end
171
51
  end