actionfacade 0.0.17.3 → 0.1.0

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: 3af09415afc5078d3a98c2bb8042ef29adf85ba074021877e776f1c481381349
4
- data.tar.gz: 69b47890f5458a4a310246ded5db649d077dc6e65bc8c66720c2d7474c44f1e2
3
+ metadata.gz: 99906896fc350593d51d0d42f39e1ee6485da45f1e489978b10576495c51761e
4
+ data.tar.gz: 36035451577d796e903d9bf827fb83c61330b58e0bf71da07ae66d0c6fabd34d
5
5
  SHA512:
6
- metadata.gz: 42d4357c1a77324ac3a580aed4767fdca916efe6e4d390fc558523cdb34d6d717fbc7d319067b0708ee5131c7df138215835bc522458950e5c233b05999e6f94
7
- data.tar.gz: e2ee8b5015e17b40b594ba9db188b68c7ea619db1262f1201f4dce4a494fc9340c331b488bbbfb8c0b05cc5829cea769326276e0dbb11c08b766ef78ca11deda
6
+ metadata.gz: ce6689c0718cf998e3a635791b7b427653ec64b49bf75db90031ffb4bc09af0cda375cb879bf0437865104a74d193667bf025954ffd774ab442c2ff9abbfdc98
7
+ data.tar.gz: e5f9b334d397a2690d47d2325b38286a64c82d2d2008a903547b36a7fa655e23d64fb658d1084a49433e4312a684dcaab47f483d8ce3f671de2e1d5b3ca9ccaf
data/actionfacade.gemspec CHANGED
@@ -25,4 +25,5 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.add_dependency "bundler", ">= 1.3"
27
27
  s.add_development_dependency "rake", "~> 0"
28
+ s.add_development_dependency "test-unit", ">= 3.3"
28
29
  end
@@ -1,12 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionFacade
4
+ # == Action \Facade \Base
5
+ #
6
+ # This is only a base class for extract data from input (payload).
7
+ # This can be inherited to another class and you can implement
8
+ # some mothods for obtaining data.
9
+ # In Ruby on Rails, you can implemented Active Record query methods
10
+ # to the inherited class.
11
+ # For example
12
+ #
13
+ # class Mypage::IndexFacade < ActionFacade::Base
14
+ # attr_reader :current_user
15
+ #
16
+ # def initialize(payload)
17
+ # @current_user = payload[:current_user]
18
+ # end
19
+ #
20
+ # def active_users
21
+ # @active_users ||= User.active.order(login_at: :desc).limit(10)
22
+ # end
23
+ #
24
+ # def messages
25
+ # @messages ||= current_user.messages.order(created_at: :desc).limit(10)
26
+ # end
27
+ # end
28
+ #
4
29
  class Base
5
- attr_reader :params
30
+ attr_reader :payload
6
31
 
7
- # pass controller's params by default
8
- def initialize(params)
9
- @params = params
32
+ # Initialize with payload
33
+ def initialize(payload)
34
+ @payload = payload
10
35
  end
11
36
  end
12
37
  end
@@ -1,7 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionFacade
4
+ # == Action \Facade \Retrieval
5
+ #
6
+ # This module provides `retrieve` method to the class which includes the module.
7
+ # The `retrieve` method can be used for obtaining data from the external facade.
8
+ # In Ruby on Rails controllers, this module can be used for assing many instance
9
+ # variables by extracting Active Record queries to the class that is inherited
10
+ # from ActionFacade::Base.
4
11
  module Retrieval
12
+ # Retrieve data from `facade`
13
+ #
14
+ # `variable_names` are symbols for the method names in the facade and
15
+ # they will be set as instance variables in the class that
16
+ # includes the module.
5
17
  def retrieve(facade, *variable_names)
6
18
  variable_names.each do |name|
7
19
  instance_variable_set("@#{name}", facade.send(name.to_sym))
data/lib/actionfacade.rb CHANGED
@@ -1,4 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "action_facade/base"
4
- require "action_facade/retrieval"
3
+ $:.unshift File.dirname(__FILE__)
4
+
5
+ module ActionFacade
6
+ autoload :Base, "action_facade/base"
7
+ autoload :Retrieval, "action_facade/retrieval"
8
+ end
data/test/base_test.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  require "test/unit"
2
- require "actionfacade"
2
+ require_relative "../lib/actionfacade"
3
3
 
4
4
  class BaseTest < Test::Unit::TestCase
5
5
  test ".new does not raise error" do
6
- params = {}
7
- assert_nothing_raised { ActionFacade::Base.new(params) }
6
+ payload = {}
7
+ assert_nothing_raised { ActionFacade::Base.new(payload) }
8
8
  end
9
9
 
10
- test "#params returns original params object" do
11
- params = {}
12
- facade = ActionFacade::Base.new(params)
13
- assert_equal(facade.params, params)
10
+ test "#payload returns original payload object" do
11
+ payload = {}
12
+ facade = ActionFacade::Base.new(payload)
13
+ assert_equal(facade.payload, payload)
14
14
  end
15
15
  end
@@ -1,5 +1,5 @@
1
1
  require "test/unit"
2
- require "actionfacade"
2
+ require_relative "../lib/actionfacade"
3
3
 
4
4
  class UserFacade < ActionFacade::Base
5
5
  USER_DATA = [{ id: 1, name: "john" }, { id: 2, name: "taro" }]
@@ -15,25 +15,25 @@ end
15
15
 
16
16
  class InheritanceTest < Test::Unit::TestCase
17
17
  test ".new does not raise error" do
18
- params = {}
19
- assert_nothing_raised { UserFacade.new(params) }
18
+ payload = {}
19
+ assert_nothing_raised { UserFacade.new(payload) }
20
20
  end
21
21
 
22
- test "#params returns user object" do
23
- params = {}
24
- facade = UserFacade.new(params)
25
- assert_equal(facade.params, params)
22
+ test "#payload returns user object" do
23
+ payload = {}
24
+ facade = UserFacade.new(payload)
25
+ assert_equal(facade.payload, payload)
26
26
  end
27
27
 
28
28
  test "#all returns all data" do
29
- params = {}
30
- facade = UserFacade.new(params)
29
+ payload = {}
30
+ facade = UserFacade.new(payload)
31
31
  assert_equal(facade.all, [{ id: 1, name: "john" }, { id: 2, name: "taro" }])
32
32
  end
33
33
 
34
34
  test "#taro returns taro's data" do
35
- params = {}
36
- facade = UserFacade.new(params)
35
+ payload = {}
36
+ facade = UserFacade.new(payload)
37
37
  assert_equal(facade.taro, { id: 2, name: "taro" })
38
38
  end
39
39
  end
@@ -2,9 +2,9 @@ require "test/unit"
2
2
  require_relative "../lib/action_facade/base.rb"
3
3
  require_relative "../lib/action_facade/retrieval.rb"
4
4
 
5
- class UserFacade < ActionFacade::Base
6
- USER_DATA = [{ id: 1, name: "john" }]
5
+ USER_DATA = [{ id: 1, name: "john" }]
7
6
 
7
+ class UserFacade < ActionFacade::Base
8
8
  def john
9
9
  USER_DATA.find { |user| user[:name] == "john" }
10
10
  end
@@ -16,8 +16,8 @@ class UsersController
16
16
  attr_reader :john
17
17
 
18
18
  def show
19
- params = {}
20
- facade = UserFacade.new(params)
19
+ payload = {}
20
+ facade = UserFacade.new(payload)
21
21
  retrieve(facade, :john)
22
22
  end
23
23
  end
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.0.17.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Hashimoto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-25 00:00:00.000000000 Z
11
+ date: 2020-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '3.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '3.3'
41
55
  description: Action Facade provides a simple interface for data required by view /
42
56
  controller.
43
57
  email: ryohashimoto@gmail.com