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 +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
|