simple_form_object 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c5b1bb8877957e9dece06a0ea28f2eddb48c744
4
- data.tar.gz: b1d5870ddc177dad61b1ec5f313f37a378cb2565
3
+ metadata.gz: 1fbf783ca89d65945dbdeac23091e2b8609e7d31
4
+ data.tar.gz: 7e4049380a3fd366d256921c8ba53211bfbcdcd4
5
5
  SHA512:
6
- metadata.gz: 5cbbbde1b4d58ed0374267535412fb76375e172dd2ec02f16692357dab90844a2cc697a676b16d85235365fa0075c9c70ca80331dc115db70175b9ec326bb389
7
- data.tar.gz: 97b625f72a2bdec29e3e97d2aabeb3364d6a33e47d0f1751fdd5e1015ed0d6f6d4a06dfc7f39ffab8c4a76847e62d28b7d4eb7eac8f04c9546ccd83eafa411cf
6
+ metadata.gz: ccceb3c72c942e845e37ca67800fd60c216361d281faa1c18ab8acc68c4111c1e39e2946b141095772d9eaac33ab61e49fa371e0fd5f33090bd8ce40fb16897a
7
+ data.tar.gz: 9575382b6d1f35cc090ca179b3911182ad31ee387012ae3193dd9ff82cc6be4a48ea4d9f746f19c0a27dcd0489b59600a341a916446e83016fb781b2b536ce00
@@ -39,9 +39,9 @@ module SimpleFormObject
39
39
  end
40
40
 
41
41
  class Attribute
42
- def initialize(name, type, options)
42
+ def initialize(name, type = nil, options)
43
43
  @name = name
44
- @type = type
44
+ @type = type || :string
45
45
  @options = options
46
46
 
47
47
  extract_options
@@ -55,14 +55,16 @@ module SimpleFormObject
55
55
 
56
56
  def apply_default_to(form)
57
57
  if form.send(@name).nil?
58
- form.send("#{@name}=", @default) if @default
58
+ form.send("#{@name}=", @default) if @apply_default
59
59
  end
60
60
  end
61
61
 
62
62
  private
63
63
 
64
64
  def extract_options
65
- @default = options.fetch(:default, nil)
65
+ @apply_default = true
66
+ @default = options.fetch(:default) { @apply_default = false; nil }
67
+ @skip_validations = options.fetch(:skip_validations, false)
66
68
  end
67
69
  end
68
70
 
@@ -1,3 +1,3 @@
1
1
  module SimpleFormObject
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["lengarvey@gmail.com"]
11
11
  spec.summary = %q{Simple form objects for simple form and rails}
12
12
  spec.description = %q{Very simple form objects for simple form and rails}
13
- spec.homepage = "http://github.com/lengarvey/simple_form_objects"
13
+ spec.homepage = "http://github.com/reinteractive-open/simple_form_object"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe SimpleFormObject::Attribute do
4
+ describe 'initialization' do
5
+ subject(:attribute) { SimpleFormObject::Attribute.new(name, type, options) }
6
+
7
+ let(:name) { :foo }
8
+ let(:type) { :boolean }
9
+ let(:options) { { default: 'hello' } }
10
+
11
+ it 'should be initialized with a name, type and options hash' do
12
+ expect(attribute.name).to eq name
13
+ expect(attribute.type).to eq type
14
+ expect(attribute.options).to eq options
15
+ end
16
+
17
+ describe 'type' do
18
+ let(:type) { nil }
19
+
20
+ it 'is :string when nil or not provided' do
21
+ expect(attribute.type).to eq :string
22
+ end
23
+ end
24
+ end
25
+
26
+ describe '#apply_default_to' do
27
+ let(:name) { :foo }
28
+ let(:type) { :boolean }
29
+ let(:options) { { default: default } }
30
+ let(:default) { true }
31
+ let(:attribute) { SimpleFormObject::Attribute.new(name, type, options) }
32
+ let(:form) { double(foo: nil) }
33
+
34
+ it 'should apply the default value to the attribute on the object' do
35
+ expect(form).to receive("#{name}=").with(default)
36
+ attribute.apply_default_to(form)
37
+ end
38
+
39
+ context 'with a falsey default' do
40
+ let(:default) { false }
41
+ it 'should apply the default value to the attribute on the object' do
42
+ expect(form).to receive("#{name}=").with(default)
43
+ attribute.apply_default_to(form)
44
+ end
45
+ end
46
+
47
+ context 'when the form object attribute has a value' do
48
+ let(:form) { double(foo: false) }
49
+
50
+ it 'should not apply the default' do
51
+ expect(form).to_not receive("#{name}=").with(default)
52
+ attribute.apply_default_to(form)
53
+ expect(form.foo).to eq false
54
+ end
55
+ end
56
+
57
+ end
58
+ end
data/spec/model_spec.rb CHANGED
@@ -1,15 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'including SimpleFormObject' do
4
- context 'when included' do
5
- let(:instance) do
6
- class Klass
7
- include SimpleFormObject
8
- end
9
-
10
- Klass.new
11
- end
3
+ describe 'SimpleFormObject' do
4
+ let(:base_klass) { Class.new.tap{|k| k.include SimpleFormObject } }
5
+ let(:klass) { base_klass }
6
+ let(:instance) { klass.new }
12
7
 
8
+ context 'when included' do
13
9
  it 'should have ActiveModel::Model' do
14
10
  expect(instance).to respond_to :valid?
15
11
  end
@@ -17,14 +13,9 @@ describe 'including SimpleFormObject' do
17
13
 
18
14
  describe '.attribute' do
19
15
  let(:attribute) { :foo }
20
- let(:instance) do
21
- class Klass
22
- include SimpleFormObject
23
-
24
- attribute :foo
25
- end
26
16
 
27
- Klass.new
17
+ before do
18
+ klass.attribute :foo
28
19
  end
29
20
 
30
21
  it 'should respond to "attribute"' do
@@ -39,15 +30,10 @@ describe 'including SimpleFormObject' do
39
30
  let(:types) { %i(boolean string email url tel password search text file hidden integer float decimal range datetime date time select radio_buttons check_boxes country time_zone) }
40
31
 
41
32
  let(:type) { :boolean }
42
- let(:attr) { :foo }
43
- let(:instance) do
44
- class AnotherForm
45
- include SimpleFormObject
46
-
47
- attribute :foo, :boolean
48
- end
33
+ let(:attr) { :la }
49
34
 
50
- AnotherForm.new
35
+ before do
36
+ klass.attribute attr, type
51
37
  end
52
38
 
53
39
  it 'should return a fake column with the correct type' do
@@ -56,34 +42,23 @@ describe 'including SimpleFormObject' do
56
42
  end
57
43
 
58
44
  describe 'options' do
59
- describe 'default' do
60
- let(:instance) do
61
- class AnotherForm
62
- include SimpleFormObject
63
-
64
- attribute :foo, :boolean, default: true
65
- end
45
+ let(:type) { :boolean }
46
+ let(:attr) { :doh }
66
47
 
67
- AnotherForm.new
68
- end
48
+ before do
49
+ klass.attribute attr, type, default: true
50
+ end
69
51
 
52
+ describe 'default' do
70
53
  it 'should set the attribute to the default' do
71
- expect(instance.foo).to eq true
54
+ expect(instance.doh).to eq true
72
55
  end
73
56
 
74
57
  context 'when a value is supplied in the initialization hash' do
75
- let(:instance) do
76
- class AnotherForm
77
- include SimpleFormObject
78
-
79
- attribute :foo, :boolean, default: true
80
- end
81
-
82
- AnotherForm.new(foo: false)
83
- end
58
+ let(:instance) { klass.new(doh: false) }
84
59
 
85
60
  it 'should use the value in the hash' do
86
- expect(instance.foo).to eq false
61
+ expect(instance.doh).to eq false
87
62
  end
88
63
  end
89
64
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_form_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leonard Garvey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-08 00:00:00.000000000 Z
11
+ date: 2014-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -95,9 +95,10 @@ files:
95
95
  - lib/simple_form_object.rb
96
96
  - lib/simple_form_object/version.rb
97
97
  - simple_form_objects.gemspec
98
+ - spec/attribute_spec.rb
98
99
  - spec/model_spec.rb
99
100
  - spec/spec_helper.rb
100
- homepage: http://github.com/lengarvey/simple_form_objects
101
+ homepage: http://github.com/reinteractive-open/simple_form_object
101
102
  licenses:
102
103
  - MIT
103
104
  metadata: {}
@@ -122,5 +123,6 @@ signing_key:
122
123
  specification_version: 4
123
124
  summary: Simple form objects for simple form and rails
124
125
  test_files:
126
+ - spec/attribute_spec.rb
125
127
  - spec/model_spec.rb
126
128
  - spec/spec_helper.rb