simple_action 1.2.0 → 1.3.0

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTQ2ZmIwMzQxMjdiYTA3YmRjMzhkNTQ1ODBmNjNhNjgyNjM2YmRhMw==
4
+ YTkwMTRjNjg4Y2ZjNGIzZDMzNzU3ZWY0ZDMwNTU3OGRiNjc0MTgyZQ==
5
5
  data.tar.gz: !binary |-
6
- Zjg2OGQ0ZjI1MDc0NzA4YmY2NGQzZjU5NTYyNzc1NTIwYTUxYTNhMg==
6
+ YjA0Yzk4NDk5ZTgyZTEwM2RjZWI5MDgyZTQxZTQzMzZhMTllMjMwMQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NTg2ZWRmNmI5YzM0OTBjNzdhYTdhZTkwMTNlNzc2ZjcyZWI4ZTJiMTBlODM2
10
- NzYzNDRkZDdiY2IxOTA3ZTRjMWE1ZDE4MjQ4NTAyNTU2YTgxYWE5YjhhNWQ0
11
- YjhiNzRlNTFkMzAwOTYwMmExMTM4N2ZhYzQ2ZjE0NTdjODZhM2Y=
9
+ NjRkOWFjZWI5ODYwZGFmZjBiMDU0YjJlMDRmNmM3YzYyMjhjNTczOThkYmE5
10
+ NTNhM2VjZTY0NWI1MTZmOGZjMjBhM2UyZTZlODMxNjljMDI3OTJlZDc5Njg3
11
+ YWY3ZTU0YTIxZjgwZmVlYmQ2Yjc3Mjc5MzgwYzY2YjQ2YzZiOTU=
12
12
  data.tar.gz: !binary |-
13
- MTU0YmM0NzZkNmU5ZTU3OWZiNzlhMjY1MGNlNGM1NzA2MTIxN2Y5YzdlMWU5
14
- NjA2YjMxODBmYTdiNzgyNGRmNTBhNDhkYzk1ZjhmOGViYzUwODBlYjVmYjM5
15
- MzUyZTFkYWMyOWEzMzg0MmMzYTJlNDhkZTE1YTRlMDRlNjk2MzQ=
13
+ ODUzOGQ2YzZiZTdhNzA1ZDU2ZGIzOTI1YmFlNGIyNDJiMzAzNWUxYTUyZGFi
14
+ MjE5ODBkYzI0MzI0YmI5YmVlMDEzODk0N2I3OTY1NjBkMjM3OTEzNWJhZWFm
15
+ YTM2NDE5MzkwZGE1MDhkZjBlNThlYTIxOWVlYmU3NjVlNzg3NGI=
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_action (1.1.1)
5
- simple_params (>= 1.1.2, < 2.0)
4
+ simple_action (1.2.0)
5
+ simple_params (>= 1.3, < 2.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -48,7 +48,7 @@ GEM
48
48
  rspec-mocks (2.99.3)
49
49
  shoulda-matchers (2.8.0)
50
50
  activesupport (>= 3.0.0)
51
- simple_params (1.1.2)
51
+ simple_params (1.3.0)
52
52
  activemodel (>= 3.0, < 5.0)
53
53
  shoulda-matchers (~> 2.8)
54
54
  virtus (>= 1.0.0)
@@ -14,16 +14,62 @@ module SimpleAction
14
14
  super(sym, *args, &block)
15
15
  end
16
16
 
17
+
18
+ # # Overriding this method to allow for non-strict enforcement!
19
+ # def method_missing(method_name, *arguments, &block)
20
+ # if strict_enforcement?
21
+ # raise SimpleParamsError, "parameter #{method_name} is not defined."
22
+ # else
23
+ # if @original_params.include?(method_name.to_sym)
24
+ # value = @original_params[method_name.to_sym]
25
+ # if value.is_a?(Hash)
26
+ # define_anonymous_class(method_name, value)
27
+ # else
28
+ # Attribute.new(self, method_name).value = value
29
+ # end
30
+ # end
31
+ # end
32
+ # end
33
+
34
+ # def respond_to?(method_name, include_private = false)
35
+ # if strict_enforcement?
36
+ # super
37
+ # else
38
+ # @original_params.include?(method_name.to_sym) || super
39
+ # end
40
+ # end
41
+
42
+
17
43
  private
18
44
  def pass_sym_to_params?(sym)
19
45
  params.present? &&
20
- params_accessor?(sym) &&
46
+ delegatable_params_method?(sym) &&
21
47
  params.respond_to?(sym)
22
48
  end
23
49
 
50
+ def delegatable_params_method?(sym)
51
+ params_accessor?(sym) ||
52
+ attributes_method?(sym) ||
53
+ build_method?(sym)
54
+ end
55
+
24
56
  def params_accessor?(sym)
25
57
  stripped = sym.to_s.gsub('=', '').to_sym
26
58
  params.attributes.include?(stripped)
27
59
  end
60
+
61
+ def attributes_method?(sym)
62
+ sym.to_s.gsub('=', '').end_with?('_attributes')
63
+ end
64
+
65
+ def build_method?(sym)
66
+ sym.to_s.gsub('=', '').start_with?('build_')
67
+ end
68
+
69
+ module ClassMethods
70
+ def reflect_on_association(sym)
71
+ params_class.reflect_on_association(sym)
72
+ end
73
+ end
28
74
  end
29
75
  end
@@ -1,3 +1,3 @@
1
1
  module SimpleAction
2
- VERSION = "1.2.0"
2
+ VERSION = "1.3.0"
3
3
  end
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "simple_params", ">= 1.2", "< 2.0"
21
+ spec.add_dependency "simple_params", ">= 1.3", "< 2.0"
22
22
  spec.add_development_dependency "bundler", "~> 1.5"
23
23
  spec.add_development_dependency "rake", "~> 10.1"
24
24
  spec.add_development_dependency "rspec", "~> 2.6"
@@ -7,6 +7,11 @@ describe "SimpleAction acceptance spec" do
7
7
  param :date_of_birth, type: :date, optional: true
8
8
  validate :name_has_vowels, if: :name
9
9
 
10
+ #TODO: Must fix this error in SimpleParams!!
11
+ nested_hash :address, default: {} do
12
+ param :street, optional: true
13
+ end
14
+
10
15
  def name_has_vowels
11
16
  unless name.scan(/[aeiou]/).count >= 1
12
17
  errors.add(:name, "must contain at least one vowel")
@@ -26,18 +31,51 @@ describe "SimpleAction acceptance spec" do
26
31
  end
27
32
  end
28
33
 
29
- describe "#model_name" do
34
+ describe "#model_name", model_name: true do
30
35
  it "equals class name" do
31
36
  SimpleActionAcceptance.model_name.should eq("SimpleActionAcceptance")
32
37
  end
33
38
  end
34
39
 
35
- describe "params #model_name" do
40
+ describe "params #model_name", params_model_name: true do
36
41
  it "equals class name::Params" do
37
42
  SimpleActionAcceptance.new.params.model_name.should eq("SimpleActionAcceptance::SimpleActionAcceptanceParams")
38
43
  end
39
44
  end
40
45
 
46
+ describe "params accessors", params: true do
47
+ let(:instance) { SimpleActionAcceptance.new }
48
+
49
+ it "allows setters and getters on param vars" do
50
+ instance.name = "Bob"
51
+ expect(instance.name).to eq("Bob")
52
+ end
53
+
54
+ it "allows setters and getters on nested_hash" do
55
+ instance.address = { street: "1 Main St." }
56
+ expect(instance.address.street).to eq("1 Main St.")
57
+ end
58
+
59
+ it "allows setters and getters on nested_hash using _attributes" do
60
+ instance.address_attributes = { street: "1 Main St." }
61
+ expect(instance.address.street).to eq("1 Main St.")
62
+ end
63
+
64
+ it "responds to build_ methods" do
65
+ address = instance.build_address
66
+ address.class.name.should eq("SimpleActionAcceptance::SimpleActionAcceptanceParams::Address")
67
+ end
68
+ end
69
+
70
+ describe "class methods", class_methods: true do
71
+ describe "reflect_on_association", reflect_on_association: true do
72
+ it "returns Address class for :address" do
73
+ address_klass = SimpleActionAcceptance.reflect_on_association(:address)
74
+ address_klass.klass.should eq(SimpleActionAcceptance::SimpleActionAcceptanceParams::Address)
75
+ end
76
+ end
77
+ end
78
+
41
79
  describe "outcome" do
42
80
  context "with nil params" do
43
81
  let(:params) do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_action
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - brycesenz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-28 00:00:00.000000000 Z
11
+ date: 2015-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simple_params
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
- version: '1.2'
19
+ version: '1.3'
20
20
  - - <
21
21
  - !ruby/object:Gem::Version
22
22
  version: '2.0'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: '1.2'
29
+ version: '1.3'
30
30
  - - <
31
31
  - !ruby/object:Gem::Version
32
32
  version: '2.0'