constructable 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{constructable}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Manuel Korfmann"]
12
- s.date = %q{2011-06-09}
12
+ s.date = %q{2011-06-10}
13
13
  s.description = %q{
14
14
  Adds the class macro Class#constructable to easily define what attributes a Class accepts provided as a hash to Class#new.
15
15
  Attributes can be configured in their behaviour in case they are not provided or are in the wrong format.
@@ -30,6 +30,10 @@ module Constructable
30
30
  end
31
31
  end
32
32
 
33
+ def defined?
34
+ @defined
35
+ end
36
+
33
37
  def accessible=(boolean)
34
38
  if boolean
35
39
  self.readable = true
@@ -56,9 +60,11 @@ module Constructable
56
60
  check_for_requirement(requirement, constructor_hash)
57
61
  end
58
62
  value = constructor_hash[self.name]
63
+ @defined = true
59
64
  self.converter ? converter.(value) : value
60
65
  else
61
66
  check_for_requirement(REQUIRED_REQUIREMENT, constructor_hash)
67
+ @defined = false
62
68
  self.default
63
69
  end.tap { |value| @value = value }
64
70
  end
@@ -30,7 +30,7 @@ module Constructable
30
30
 
31
31
  define_method(attribute.group) do
32
32
  attributes.group_by(&:group)[attribute.group].inject({}) do |hash, attribute|
33
- hash[attribute.name] = attribute.value
33
+ hash[attribute.name] = attribute.value if attribute.defined?
34
34
  hash
35
35
  end
36
36
  end if attribute.group && !method_defined?(attribute.group)
@@ -32,6 +32,12 @@ describe 'Constructor' do
32
32
  instance = @klass.new(foo: 1, bar: 2)
33
33
  assert_equal({foo: 1, bar: 2}, instance.foobar)
34
34
  end
35
+
36
+ it 'ONLY returns attributes acutally provided' do
37
+ @klass.constructable foobar: [:foo, :bar]
38
+ instance = @klass.new(foo: 1)
39
+ assert_equal false, instance.foobar.has_key?(:bar)
40
+ end
35
41
  end
36
42
 
37
43
  describe 'permission' do
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: constructable
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.0
5
+ version: 0.2.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Manuel Korfmann
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-09 00:00:00 +02:00
13
+ date: 2011-06-10 00:00:00 +02:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -104,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
104
  requirements:
105
105
  - - ">="
106
106
  - !ruby/object:Gem::Version
107
- hash: -4108706002012057813
107
+ hash: -1729575163689007260
108
108
  segments:
109
109
  - 0
110
110
  version: "0"