conderaction 0.0.1 → 0.0.2

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