actionfacade 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 254de0962aa168621e443a7a14c7e4453f5f2c2274f04648bb6026f45699f108
4
- data.tar.gz: 88829fc832f6ea5d6056395e0e4ce1bb28da6933b27521e39d0ed00996086863
3
+ metadata.gz: 36b54b632384d17a03da67a3c06b17af8f34d3860f4982d34a2085a0435d2050
4
+ data.tar.gz: d5b6cc6da5f073f084b42718f5cf00dbb5c33842aec0ba86eec5107ead413957
5
5
  SHA512:
6
- metadata.gz: f0c6b513755215cdea05f2086c9dddf6e2ee66ee97b4f460dd1eee85dd26e080d105da6ae1144f11d8e992f154398e68f9df7ed5b442b530517db4ce06d5800d
7
- data.tar.gz: f8ede72602f4e8eb948a95450c8af11b498f19a56f12e360b1ecfa23a24833c25e26adad21f99d837809c9b74045859592cd2507b0e7c58b4938e2bad4b78424
6
+ metadata.gz: 9cc9020127e0d5684dc29330a2a2d060b5466c56b2a14d59b2c26207b188ef20cf2a5010963b47c6b34b57f627afdd5107addb24c5e04badf3ff7bfb18141112
7
+ data.tar.gz: ec3730ca6f2a004aa8180e1d209ee9e5c5f400edb5e167c167afbc74b842d4bb162477f78e0b0202123c3cdc2552030a00ab9bfa0708eaac7730f6ed1c4142d7
@@ -13,11 +13,33 @@ module ActionFacade
13
13
  module Retrieval
14
14
  # Retrieve data from `facade`
15
15
  #
16
+ # If `facade_or_other` is a facade, retrieve data from it.
17
+ # If it is a string or a symbol, it will be merged to `variable_names` and
18
+ # retrieve_from method called with controller params.
19
+ # If it is a hash, retrieve_from method will be called with the hash as a payload.
20
+ #
16
21
  # `variable_names` are symbols for the method names in the facade and
17
22
  # they will be set as instance variables in the class that
18
23
  # includes the module.
19
- def retrieve(facade, *variable_names)
20
- variable_names.each do |name|
24
+ def retrieve(facade_or_other, *variable_names)
25
+ facade = nil
26
+ names = variable_names.dup
27
+ case facade_or_other
28
+ when ActionFacade::Base
29
+ facade = facade_or_other
30
+ when String, Symbol
31
+ if defined?(params)
32
+ names.unshift(facade_or_other)
33
+ return retrieve_from(params, *names)
34
+ else
35
+ raise ArgumentError.new("Can't call the method with #{facade_or_other.class} if params is undefined.")
36
+ end
37
+ when Hash
38
+ return retrieve_from(facade_or_other, *variable_names)
39
+ else
40
+ raise ArgumentError.new("First parameter must be instance of ActionFacade::Base, String, Symbol or Hash")
41
+ end
42
+ names.each do |name|
21
43
  instance_variable_set("@#{name}", facade.send(name.to_sym))
22
44
  end
23
45
  end
@@ -20,7 +20,19 @@ class HomeController < ActionController::Base
20
20
  include ActionFacade::Retrieval
21
21
 
22
22
  def index
23
- retrieve_from({}, :all_users)
23
+ case params[:retrieve]
24
+ when "facade"
25
+ facade = Home::IndexFacade.new
26
+ retrieve(facade, :all_users)
27
+ when "string"
28
+ retrieve("all_users")
29
+ when "symbol"
30
+ retrieve(:all_users)
31
+ when "hash"
32
+ retrieve({}, :all_users)
33
+ else
34
+ retrieve_from({}, :all_users)
35
+ end
24
36
  render plain: @all_users
25
37
  end
26
38
  end
@@ -34,7 +46,27 @@ class RailsApp::RetrievalTest < Test::Unit::TestCase
34
46
 
35
47
  test "@all_users is set after retrieve_from({}, :all_users)" do
36
48
  get "/"
37
- assert_equal(last_response.body, USER_DATA.to_s)
49
+ assert_equal(last_response.body, RailsApp::USER_DATA.to_s)
50
+ end
51
+
52
+ test "@all_users is set after retrieve(facade, :all_users)" do
53
+ get "/", params: { retrieve: "facade" }
54
+ assert_equal(last_response.body, RailsApp::USER_DATA.to_s)
55
+ end
56
+
57
+ test "@all_users is set after retrieve(:all_users)" do
58
+ get "/", params: { retrieve: "symbol" }
59
+ assert_equal(last_response.body, RailsApp::USER_DATA.to_s)
60
+ end
61
+
62
+ test "@all_users is set after retrieve(\"all_users\")" do
63
+ get "/", params: { retrieve: "string" }
64
+ assert_equal(last_response.body, RailsApp::USER_DATA.to_s)
65
+ end
66
+
67
+ test "@all_users is set after retrieve({}, :all_users)" do
68
+ get "/", params: { retrieve: "hash" }
69
+ assert_equal(last_response.body, RailsApp::USER_DATA.to_s)
38
70
  end
39
71
 
40
72
  private
@@ -27,6 +27,18 @@ class UsersController
27
27
  retrieve(facade, :john)
28
28
  end
29
29
 
30
+ def show_symbol
31
+ retrieve(:john)
32
+ end
33
+
34
+ def show_string
35
+ retrieve("john")
36
+ end
37
+
38
+ def show_hash
39
+ retrieve({}, :john)
40
+ end
41
+
30
42
  def show_from
31
43
  payload = {}
32
44
  retrieve_from(payload, :john)
@@ -45,6 +57,31 @@ class RetrievalTest < Test::Unit::TestCase
45
57
  assert_equal(controller.john, { id: 1, name: "john" })
46
58
  end
47
59
 
60
+ test "raised exception when retrieve(:john)" do
61
+ controller = UsersController.new
62
+ assert_nil(controller.john)
63
+ error = assert_raises ArgumentError do
64
+ controller.show_symbol
65
+ end
66
+ assert_equal(error.message, "Can't call the method with Symbol if params is undefined.")
67
+ end
68
+
69
+ test "raised exception when retrieve(\"john\")" do
70
+ controller = UsersController.new
71
+ assert_nil(controller.john)
72
+ error = assert_raises ArgumentError do
73
+ controller.show_string
74
+ end
75
+ assert_equal(error.message, "Can't call the method with String if params is undefined.")
76
+ end
77
+
78
+ test "@john is set after retrieve({}, :john)" do
79
+ controller = UsersController.new
80
+ assert_nil(controller.john)
81
+ controller.show_hash
82
+ assert_equal(controller.john, { id: 1, name: "john" })
83
+ end
84
+
48
85
  test "@john is set after retrieve_from(payload, :john)" do
49
86
  controller = UsersController.new
50
87
  assert_nil(controller.john)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionfacade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Hashimoto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-15 00:00:00.000000000 Z
11
+ date: 2021-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  - !ruby/object:Gem::Version
104
104
  version: 1.8.11
105
105
  requirements: []
106
- rubygems_version: 3.0.3
106
+ rubygems_version: 3.1.4
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Action Facade provides a simple interface for data required by view / controller