smart_properties 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/smart_properties.rb +2 -2
- data/spec/smart_properties_spec.rb +47 -0
- metadata +18 -18
data/lib/smart_properties.rb
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
#
|
23
23
|
module SmartProperties
|
24
24
|
|
25
|
-
VERSION = "1.2.
|
25
|
+
VERSION = "1.2.3"
|
26
26
|
|
27
27
|
class Property
|
28
28
|
|
@@ -252,7 +252,7 @@ module SmartProperties
|
|
252
252
|
# Assign attributes or default values
|
253
253
|
properties.each do |_, property|
|
254
254
|
value = attrs.fetch(property.name, property.default(self))
|
255
|
-
send(:"#{property.name}=", value)
|
255
|
+
send(:"#{property.name}=", value) unless value.nil?
|
256
256
|
end
|
257
257
|
|
258
258
|
# Exectue configuration block
|
@@ -620,4 +620,51 @@ describe SmartProperties do
|
|
620
620
|
|
621
621
|
end
|
622
622
|
|
623
|
+
context "when building a class that has a property which is required and has false as default" do
|
624
|
+
|
625
|
+
subject(:klass) do
|
626
|
+
Class.new.tap do |c|
|
627
|
+
c.send(:include, described_class)
|
628
|
+
c.send(:property, :flag, :required => true, :default => false)
|
629
|
+
|
630
|
+
def c.name; "Dummy"; end
|
631
|
+
end
|
632
|
+
end
|
633
|
+
|
634
|
+
context 'instances of that class' do
|
635
|
+
|
636
|
+
context 'when created with a set of attributes that explicitly contains nil for the title' do
|
637
|
+
|
638
|
+
subject(:instance) { klass.new :flag => true }
|
639
|
+
|
640
|
+
it "should have no title" do
|
641
|
+
instance.flag.should be_true
|
642
|
+
end
|
643
|
+
|
644
|
+
end
|
645
|
+
|
646
|
+
context 'when created with an block specifying that property' do
|
647
|
+
|
648
|
+
subject(:instance) { klass.new { |i| i.flag = true } }
|
649
|
+
|
650
|
+
it "should have the default title" do
|
651
|
+
instance.flag.should be_true
|
652
|
+
end
|
653
|
+
|
654
|
+
end
|
655
|
+
|
656
|
+
context "when created with no arguments" do
|
657
|
+
|
658
|
+
subject(:instance) { klass.new }
|
659
|
+
|
660
|
+
it "should have false as default flag" do
|
661
|
+
instance.flag.should be_false
|
662
|
+
end
|
663
|
+
|
664
|
+
end
|
665
|
+
|
666
|
+
end
|
667
|
+
|
668
|
+
end
|
669
|
+
|
623
670
|
end
|
metadata
CHANGED
@@ -1,59 +1,59 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_properties
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.2
|
5
4
|
prerelease:
|
5
|
+
version: 1.2.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Konstantin Tennhard
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
16
|
-
|
15
|
+
type: :development
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '2.12'
|
22
|
-
|
22
|
+
name: rspec
|
23
23
|
prerelease: false
|
24
|
-
|
24
|
+
requirement: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '2.12'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
|
32
|
-
|
31
|
+
type: :development
|
32
|
+
version_requirements: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
35
|
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
37
|
version: '0.8'
|
38
|
-
|
38
|
+
name: rake
|
39
39
|
prerelease: false
|
40
|
-
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0.8'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
|
48
|
-
|
47
|
+
type: :development
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
51
|
- - ~>
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0.7'
|
54
|
-
|
54
|
+
name: guard-rspec
|
55
55
|
prerelease: false
|
56
|
-
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
@@ -92,19 +92,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
92
|
requirements:
|
93
93
|
- - ! '>='
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: '0'
|
96
95
|
segments:
|
97
96
|
- 0
|
98
|
-
hash:
|
97
|
+
hash: -4042209003338815638
|
98
|
+
version: '0'
|
99
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
100
|
none: false
|
101
101
|
requirements:
|
102
102
|
- - ! '>='
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '0'
|
105
104
|
segments:
|
106
105
|
- 0
|
107
|
-
hash:
|
106
|
+
hash: -4042209003338815638
|
107
|
+
version: '0'
|
108
108
|
requirements: []
|
109
109
|
rubyforge_project:
|
110
110
|
rubygems_version: 1.8.24
|