conderaction 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: a09898c6686b343bb6252352f17086e3975284d5
4
- data.tar.gz: 8e5e1178483b3962de9fd6a5f5c07e7d7c49ad0f
3
+ metadata.gz: 2225da0ea438e23d33846892ce9aaecf8cb25dc6
4
+ data.tar.gz: 25aceda1a6029dd3f1842cb6d310b22a22af3c7d
5
5
  SHA512:
6
- metadata.gz: 6f6d9ddbdecba509d5a701e69e80da2c24c7355125efd3c171edb8b611cb749dde69bdf7080fba5c68f4a712af4703785fb7fa00f9c34ba6b5c17491f6b35e1e
7
- data.tar.gz: 9d08289d8b96488adc3af5f3f9551dd181163f293b90b3b57765fd2f46baec7fbc6d9f2c6f45eecd338e1748702a93d396d3b270b792ec1c43510c6e2ede593d
6
+ metadata.gz: 4ab394cac0ff8f64acf5ee055410fa924ae0282dce8e6334e90ee1e4b794a298cb788bdd14dddb52df5ae090210fa817e0fa2486688ed635022a719551923759
7
+ data.tar.gz: 2b92ddcaa278486729399d3c0302c16bfafc0d6ccd026a42b571350a2ec30bb2edb4e607008f511ceae461f0a19582e9eae399eb11da30c3ab668c388573390b
data/README.md CHANGED
@@ -50,4 +50,4 @@ Or install it yourself as:
50
50
  4. Push to the branch (`git push origin my-new-feature`)
51
51
  5. Create new Pull Request
52
52
 
53
- Built by [SpruceMail](http://www.sprucemail.com)
53
+ Built by [CrowdOx](https://crowdox.com)
@@ -1,3 +1,3 @@
1
1
  module Conderaction
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
@@ -2,24 +2,24 @@ require 'casting'
2
2
  require 'active_support'
3
3
 
4
4
  module DCI
5
-
6
5
  module Context
7
-
8
6
  extend ActiveSupport::Concern
9
7
 
10
8
  included do
11
- def self.perform(*args)
12
- self.new.perform(*args)
9
+ def self.perform(*args, &block)
10
+ if block_given?
11
+ new.perform(*args, &block)
12
+ else
13
+ new.perform(*args)
14
+ end
13
15
  end
14
16
  end
15
17
 
16
- def characterize(*args, &block)
18
+ def characterize(*args)
17
19
  yield
18
20
  args.each do |item|
19
21
  item.uncast unless item.nil?
20
22
  end
21
23
  end
22
-
23
24
  end
24
-
25
25
  end
@@ -1,9 +1,7 @@
1
1
  require 'casting'
2
2
 
3
3
  module DCI
4
-
5
4
  module Data
6
-
7
5
  extend ActiveSupport::Concern
8
6
 
9
7
  included do
@@ -11,16 +9,14 @@ module DCI
11
9
  delegate_missing_methods
12
10
  end
13
11
 
14
- def as(role, &block)
12
+ def as(role)
15
13
  if block_given?
16
14
  Casting.delegating(self => role) do
17
- block.call(self)
15
+ yield(self)
18
16
  end
19
17
  else
20
- self.cast_as(role)
18
+ cast_as(role)
21
19
  end
22
20
  end
23
-
24
21
  end
25
-
26
22
  end
@@ -1,8 +1,15 @@
1
1
  require 'test_helper'
2
+ require 'rspec/mocks'
2
3
 
3
- describe DCI::Context, '.characterize' do
4
-
5
- it 'responds to added methods inside the block' do
4
+ class ContextTest < Minitest::Test
5
+ test "responds to added methods" do
6
+ data = test_person
7
+ context = test_greet
8
+ assert !data.respond_to?(:greet)
9
+ assert data.as(TestPerson::Greeter).respond_to?(:greet)
10
+ end
11
+
12
+ test "responds to added methods inside the block" do
6
13
  data = test_person
7
14
  context = test_greet
8
15
  assert !data.respond_to?(:greet)
@@ -14,4 +21,26 @@ describe DCI::Context, '.characterize' do
14
21
  assert !data.respond_to?(:greet)
15
22
  end
16
23
 
24
+ test "will execute a perform directly" do
25
+ expect(TestAction).to receive(:perform)
26
+ TestAction.perform
27
+ end
28
+
29
+ test "will execute a yield on a perform" do
30
+ value = false
31
+ TestAction.perform do
32
+ value = true
33
+ end
34
+
35
+ assert value
36
+ end
37
+
38
+ test "will pass all the parameters through" do
39
+ params = nil
40
+ TestAction.perform(1, 2, 3) do |args|
41
+ params = args
42
+ end
43
+
44
+ assert_equal [1, 2, 3], params
45
+ end
17
46
  end
@@ -1,8 +1,7 @@
1
1
  require 'test_helper'
2
2
 
3
- describe DCI::Data, '.as' do
4
-
5
- it 'responds to added methods inside the block' do
3
+ class DataTest < Minitest::Test
4
+ test "responds to added methods inside the block" do
6
5
  data = test_person
7
6
  assert !data.respond_to?(:greet)
8
7
 
@@ -11,7 +10,7 @@ describe DCI::Data, '.as' do
11
10
  assert !data.respond_to?(:greet)
12
11
  end
13
12
 
14
- it 'responds to added methods without a block' do
13
+ test "responds to added methods without a block" do
15
14
  data = test_person
16
15
  assert !data.respond_to?(:greet)
17
16
 
@@ -20,7 +19,7 @@ describe DCI::Data, '.as' do
20
19
  assert data.respond_to?(:greet)
21
20
  end
22
21
 
23
- it 'returns results from added methods inside the block' do
22
+ test "returns results from added methods inside the block" do
24
23
  data = test_person
25
24
  assert_raises(NoMethodError) do
26
25
  data.greet
@@ -31,7 +30,6 @@ describe DCI::Data, '.as' do
31
30
 
32
31
  assert_raises(NoMethodError) do
33
32
  data.greet
34
- end
33
+ end
35
34
  end
36
-
37
35
  end
@@ -1,8 +1,34 @@
1
1
  require 'minitest/autorun'
2
2
  require 'conderaction'
3
+ require 'rspec/mocks'
4
+ require 'minitest/rspec_mocks'
5
+
6
+ class Minitest::Test
7
+ include Minitest::RSpecMocks
8
+
9
+ class << self
10
+ # Helper to define a test method using a String. Under the hood, it replaces
11
+ # spaces with underscores and defines the test method.
12
+ #
13
+ # test "verify something" do
14
+ # ...
15
+ # end
16
+ def test(name, &block)
17
+ test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
18
+ defined = method_defined? test_name
19
+ raise "#{test_name} is already defined in #{self}" if defined
20
+ if block_given?
21
+ define_method(test_name, &block)
22
+ else
23
+ define_method(test_name) do
24
+ flunk "No implementation provided for #{name}"
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
3
30
 
4
31
  class TestPerson
5
-
6
32
  include DCI::Data
7
33
 
8
34
  def name
@@ -10,19 +36,14 @@ class TestPerson
10
36
  end
11
37
 
12
38
  module Greeter
13
-
14
39
  def greet
15
40
  'hello'
16
41
  end
17
-
18
42
  end
19
-
20
43
  end
21
44
 
22
45
  class TestGreet
23
-
24
46
  include DCI::Context
25
-
26
47
  end
27
48
 
28
49
  def test_person
@@ -31,4 +52,12 @@ end
31
52
 
32
53
  def test_greet
33
54
  TestGreet.new
55
+ end
56
+
57
+ class TestAction
58
+ include DCI::Context
59
+
60
+ def perform(*args)
61
+ yield(args) if block_given?
62
+ end
34
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conderaction
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Palmer
@@ -9,22 +9,36 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-08-20 00:00:00.000000000 Z
12
+ date: 2017-03-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: casting
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0.7'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0.7'
28
+ - !ruby/object:Gem::Dependency
29
+ name: minitest-rspec_mocks
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
28
42
  description: Allows you to follow DCI principles in Ruby on Rails
29
43
  email:
30
44
  - nathan@nathanpalmer.com
@@ -32,15 +46,15 @@ executables: []
32
46
  extensions: []
33
47
  extra_rdoc_files: []
34
48
  files:
49
+ - LICENSE
50
+ - README.md
35
51
  - lib/conderaction.rb
52
+ - lib/conderaction/version.rb
36
53
  - lib/dci/context.rb
37
54
  - lib/dci/data.rb
38
- - lib/conderaction/version.rb
39
- - LICENSE
40
- - README.md
41
- - test/test_helper.rb
42
- - test/data_test.rb
43
55
  - test/context_test.rb
56
+ - test/data_test.rb
57
+ - test/test_helper.rb
44
58
  homepage: https://github.com/sprucemail/conderaction
45
59
  licenses:
46
60
  - MIT
@@ -51,17 +65,17 @@ require_paths:
51
65
  - lib
52
66
  required_ruby_version: !ruby/object:Gem::Requirement
53
67
  requirements:
54
- - - '>='
68
+ - - ">="
55
69
  - !ruby/object:Gem::Version
56
70
  version: '2.0'
57
71
  required_rubygems_version: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - '>='
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
75
  version: '0'
62
76
  requirements: []
63
77
  rubyforge_project:
64
- rubygems_version: 2.0.14
78
+ rubygems_version: 2.2.2
65
79
  signing_key:
66
80
  specification_version: 4
67
81
  summary: DCI for Ruby on Rails