actionfacade 0.2.3 → 0.2.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
  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