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 +4 -4
- data/lib/action_facade/retrieval.rb +24 -2
- data/test/rails_app/retrieval_test.rb +34 -2
- data/test/retrieval_test.rb +37 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36b54b632384d17a03da67a3c06b17af8f34d3860f4982d34a2085a0435d2050
|
4
|
+
data.tar.gz: d5b6cc6da5f073f084b42718f5cf00dbb5c33842aec0ba86eec5107ead413957
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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(
|
20
|
-
|
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
|
-
|
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
|
data/test/retrieval_test.rb
CHANGED
@@ -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.
|
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:
|
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.
|
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
|