actionfacade 0.0.17.3 → 0.1.0

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