virtus-matchers 0.0.3 → 0.0.4

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.
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+
3
+ module Virtus
4
+ module Matchers
5
+ class BeAValueObjectMatcher
6
+ def matches?(klass)
7
+ @klass = klass
8
+ @klass.included_modules.include?(Virtus::ValueObject)
9
+ end
10
+
11
+ def failure_message
12
+ "expected #{@klass} to include module Virtus::ValueObject"
13
+ end
14
+ end
15
+
16
+ def be_value_object
17
+ BeAValueObjectMatcher.new
18
+ end
19
+ alias_method :be_a_value_object, :be_value_object
20
+ end
21
+ end
@@ -10,7 +10,7 @@ module Virtus
10
10
 
11
11
  def matches?(klass)
12
12
  @klass = klass
13
- attribute = @klass.attribute_set.find { |attr| attr.name == @name }
13
+ attribute = @klass.attribute_set[@name]
14
14
  attribute and attribute.options[:primitive] == @type
15
15
  end
16
16
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Virtus
4
4
  module Matchers
5
- VERSION = '0.0.3'.freeze
5
+ VERSION = '0.0.4'.freeze
6
6
  end
7
7
  end
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'virtus/matchers/version'
4
+ require 'virtus/matchers/be_value_object_matcher'
4
5
  require 'virtus/matchers/have_attribute_matcher'
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+
3
+ describe Virtus::Matchers::BeAValueObjectMatcher do
4
+ class Example
5
+ end
6
+
7
+ class ExampleValueObject
8
+ include Virtus::ValueObject
9
+ end
10
+
11
+ let(:matcher) { described_class.new }
12
+
13
+ context 'when Virtus::ValueObject is included' do
14
+ it 'should match' do
15
+ matcher.matches?(ExampleValueObject).should be_true
16
+ end
17
+ end
18
+
19
+ context 'when Virtus::ValueObject is not included' do
20
+ it 'should not match' do
21
+ matcher.matches?(Example).should be_false
22
+ end
23
+
24
+ it 'should have a failure message that indicates the missing module' do
25
+ matcher.matches?(Example)
26
+ matcher.failure_message.should == "expected #{Example} to include module Virtus::ValueObject"
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: virtus-matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -113,12 +113,14 @@ executables: []
113
113
  extensions: []
114
114
  extra_rdoc_files: []
115
115
  files:
116
+ - lib/virtus/matchers/be_value_object_matcher.rb
116
117
  - lib/virtus/matchers/have_attribute_matcher.rb
117
118
  - lib/virtus/matchers/version.rb
118
119
  - lib/virtus/matchers.rb
119
120
  - lib/virtus-matchers.rb
120
121
  - spec/spec_helper.rb
121
- - spec/virtus_attribute_spec.rb
122
+ - spec/virtus/matchers/be_value_object_matcher_spec.rb
123
+ - spec/virtus/matchers/have_attribute_matcher_spec.rb
122
124
  homepage: https://github.com/tmattia/virtus-matchers
123
125
  licenses: []
124
126
  post_install_message:
@@ -133,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
133
135
  version: '0'
134
136
  segments:
135
137
  - 0
136
- hash: 3571745744909800015
138
+ hash: -3335781311402418033
137
139
  required_rubygems_version: !ruby/object:Gem::Requirement
138
140
  none: false
139
141
  requirements:
@@ -142,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
144
  version: '0'
143
145
  segments:
144
146
  - 0
145
- hash: 3571745744909800015
147
+ hash: -3335781311402418033
146
148
  requirements: []
147
149
  rubyforge_project:
148
150
  rubygems_version: 1.8.24
@@ -151,4 +153,5 @@ specification_version: 3
151
153
  summary: RSpec matchers for Virtus
152
154
  test_files:
153
155
  - spec/spec_helper.rb
154
- - spec/virtus_attribute_spec.rb
156
+ - spec/virtus/matchers/be_value_object_matcher_spec.rb
157
+ - spec/virtus/matchers/have_attribute_matcher_spec.rb