mongoid-minitest 0.1.5 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,11 +1,11 @@
1
1
  module Mongoid
2
2
  module Matchers
3
3
  class BeStoredInMatcher < Matcher
4
- def initialize(collection_name)
4
+ def initialize collection_name
5
5
  @collection_name = collection_name.to_s
6
6
  end
7
7
 
8
- def matches?(subject)
8
+ def matches? subject
9
9
  class_of(subject).collection_name.to_s == @collection_name
10
10
  end
11
11
 
@@ -14,8 +14,8 @@ module Mongoid
14
14
  end
15
15
  end
16
16
 
17
- def be_stored_in(collection_name)
18
- BeStoredInMatcher.new(collection_name)
17
+ def be_stored_in collection_name
18
+ BeStoredInMatcher.new collection_name
19
19
  end
20
20
  end
21
21
  end
@@ -2,8 +2,8 @@ module Mongoid
2
2
  module Matchers
3
3
  module Document
4
4
  DOCUMENT = Mongoid::Document
5
- PARANOIA = Mongoid::Paranoia
6
- VERSIONING = Mongoid::Versioning
5
+ PARANOIA = Mongoid::Paranoia unless Mongoid::VERSION == '4.0.0'
6
+ VERSIONING = Mongoid::Versioning unless Mongoid::VERSION == '4.0.0'
7
7
  TIMESTAMPS = Mongoid::Timestamps
8
8
 
9
9
  class DocumentMatcher < Matcher
@@ -32,12 +32,14 @@ module Mongoid
32
32
  DocumentMatcher.new DOCUMENT
33
33
  end
34
34
 
35
- def be_paranoid
36
- DocumentMatcher.new PARANOIA
37
- end
35
+ unless Mongoid::VERSION == '4.0.0'
36
+ def be_paranoid
37
+ DocumentMatcher.new PARANOIA
38
+ end
38
39
 
39
- def be_versioned
40
- DocumentMatcher.new VERSIONING
40
+ def be_versioned
41
+ DocumentMatcher.new VERSIONING
42
+ end
41
43
  end
42
44
 
43
45
  def be_timestamped
@@ -2,34 +2,34 @@ module Mongoid
2
2
  module Matchers
3
3
  module Document
4
4
  class HaveFieldMatcher < Matcher
5
- def initialize(*fields)
5
+ def initialize *fields
6
6
  @fields = fields.collect(&:to_s)
7
7
  end
8
8
 
9
- def of_type(type)
9
+ def of_type type
10
10
  @type = type
11
11
  self
12
12
  end
13
13
 
14
- def with_default_value(default)
14
+ def with_default_value default
15
15
  @default = default
16
16
  self
17
17
  end
18
18
 
19
- def matches?(subject)
20
- @klass = class_of(subject)
19
+ def matches? subject
20
+ @klass = class_of subject
21
21
  @errors = []
22
22
 
23
23
  @fields.each do |field|
24
- if @klass.fields.include?(field)
25
- error = ""
24
+ if @klass.fields.include? field
25
+ error = ''
26
26
  result_field = @klass.fields[field]
27
27
 
28
- if check_type_with(result_field.type)
28
+ if check_type_with result_field.type
29
29
  error << " of type #{result_field.type.inspect}"
30
30
  end
31
31
 
32
- if check_default_with(result_field.default_val)
32
+ if check_default_with result_field.default_val
33
33
  error << " with default value of #{result_field.default_val.inspect}"
34
34
  end
35
35
 
@@ -61,20 +61,19 @@ module Mongoid
61
61
 
62
62
  private
63
63
 
64
- def check_type_with(type)
64
+ def check_type_with type
65
65
  @type && type != @type
66
66
  end
67
67
 
68
- def check_default_with(default)
68
+ def check_default_with default
69
69
  !@default.nil? && !default.nil? && default != @default
70
70
  end
71
71
  end
72
72
 
73
- def have_field(*fields)
73
+ def have_field *fields
74
74
  HaveFieldMatcher.new(*fields)
75
75
  end
76
76
  alias :have_fields :have_field
77
-
78
77
  end
79
78
  end
80
79
  end
@@ -1,12 +1,12 @@
1
1
  module Mongoid
2
2
  module Matchers
3
3
  class HaveIndexMatcher < Matcher
4
- def initialize(*fields)
4
+ def initialize *fields
5
5
  @fields = fields.map(&:to_sym)
6
6
  end
7
7
 
8
- def matches?(subject)
9
- @klass = class_of(subject)
8
+ def matches? subject
9
+ @klass = class_of subject
10
10
  @klass.index_options.any? do |index, options|
11
11
  index.keys == @fields
12
12
  end
@@ -29,7 +29,7 @@ module Mongoid
29
29
  end
30
30
  end
31
31
 
32
- def have_index_for(*fields)
32
+ def have_index_for *fields
33
33
  HaveIndexMatcher.new(*fields)
34
34
  end
35
35
  end
@@ -1,9 +1,7 @@
1
- require_relative 'helpers'
2
-
3
1
  module Mongoid
4
2
  module Matchers
5
3
  class Matcher
6
- include Helpers
4
+ include MiniTest::Matchers::ActiveModel::Helpers
7
5
 
8
6
  def failure_message
9
7
  "Expected #{inspect} to #{description}".squeeze ' '
@@ -1,29 +1,16 @@
1
1
  gem 'minitest'
2
- require 'mongoid'
3
- require 'minitest/spec'
4
- require 'minitest/matchers'
5
-
2
+ require 'minitest-activemodel'
6
3
  require 'matchers/matcher'
7
4
  require 'matchers/document/document'
8
5
  require 'matchers/document/have_field'
9
6
  require 'matchers/document/be_stored_in'
10
7
  require 'matchers/document/have_index'
11
- require 'matchers/validations/validations'
12
- require 'matchers/validations/presence'
13
- require 'matchers/validations/uniqueness'
14
- require 'matchers/validations/length'
15
- require 'matchers/validations/format'
16
- require 'matchers/validations/inclusion'
17
- require 'matchers/validations/exclusion'
18
- require 'matchers/validations/confirmation'
19
- require 'matchers/validations/acceptance'
20
- require 'matchers/validations/associated'
21
8
  require 'matchers/associations/associations'
22
9
 
23
10
  module Mongoid
24
11
  module Matchers
25
12
  include Document
26
- include Validations
27
13
  include Associations
14
+ include MiniTest::Matchers::ActiveModel
28
15
  end
29
16
  end
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.name = 'mongoid-minitest'
5
+ gem.version = '1.0.0'
6
+
7
+ gem.authors = ['Francesco Rodriguez', 'Sascha Wessel', 'Godfrey Chan', 'Ryan McGeary']
8
+ gem.email = ['lrodriguezsanc@gmail.com', 'ryan@mcgeary.org']
9
+ gem.description = %q{MiniTest matchers for Mongoid}
10
+ gem.summary = gem.description
11
+ gem.homepage = 'https://github.com/frodsan/mongoid-minitest'
12
+ gem.licenses = ['MIT']
13
+
14
+ gem.files = `git ls-files`.split "\n"
15
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename f }
16
+ gem.test_files = `git ls-files -- test/*`.split "\n"
17
+ gem.extra_rdoc_files = ['CHANGELOG.md', 'LICENSE.md', 'README.md']
18
+ gem.rdoc_options = ['--charset=UTF-8']
19
+ gem.require_paths = ['lib']
20
+
21
+ gem.required_ruby_version = '>= 1.9.3'
22
+
23
+ gem.add_dependency 'minitest', '~> 4.1'
24
+ gem.add_dependency 'minitest-matchers', '~> 1.2'
25
+ gem.add_dependency 'mongoid' , '>= 3'
26
+ gem.add_dependency 'minitest-activemodel', '~> 1.0'
27
+ gem.add_development_dependency 'rake'
28
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ describe "Associations" do
4
+ describe Person do
5
+ subject { Person }
6
+
7
+ it { must have_many(:pets).of_type(Pet).as_inverse_of(:owner) }
8
+ it { must have_one(:account).of_type(Account) }
9
+ it { must have_and_belong_to_many(:friends).of_type(Person) }
10
+
11
+ it { must embed_one(:profile) }
12
+ it { must embed_many(:sites) }
13
+ end
14
+
15
+ describe Pet do
16
+ subject { Pet }
17
+
18
+ it { must belong_to(:owner).of_type(Person) }
19
+ end
20
+
21
+ describe Account do
22
+ subject { Account }
23
+
24
+ it { must belong_to(:person).of_type(Person) }
25
+ end
26
+
27
+ describe Site do
28
+ subject { Site }
29
+
30
+ it { must embedded_in(:person) }
31
+ end
32
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+
3
+ describe 'Document' do
4
+ describe Person do
5
+ subject { Person }
6
+
7
+ it { must be_document }
8
+ it { must be_timestamped }
9
+ unless Mongoid::VERSION == '4.0.0'
10
+ it { must be_paranoid }
11
+ it { must be_versioned }
12
+ end
13
+
14
+ it { must be_stored_in(:people) }
15
+
16
+ it { must have_field(:name).of_type(String).with_default_value('me') }
17
+ it { must have_fields(:name, :login).of_type(String).with_default_value('me') }
18
+
19
+ it { must have_index_for(:name) }
20
+ it { must have_index_for(:email, :login) }
21
+ end
22
+
23
+ describe Pet do
24
+ subject { Pet }
25
+
26
+ it { must have_index_for(:owner_id) }
27
+ end
28
+ end
@@ -0,0 +1,48 @@
1
+ class Person
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+ unless Mongoid::VERSION == '4.0.0'
5
+ include Mongoid::Paranoia
6
+ include Mongoid::Versioning
7
+ end
8
+
9
+ field :login, type: String, default: 'me'
10
+ field :password, type: String
11
+ field :name, type: String, default: 'me'
12
+ field :age, type: Integer
13
+ field :email, type: String
14
+ field :role, type: String
15
+ field :site, type: String
16
+
17
+ index({ name: 1 }, { name: 'name' })
18
+ index({ email: 1, login: 1 })
19
+
20
+ has_one :account
21
+ has_many :pets, inverse_of: :owner
22
+ has_and_belongs_to_many :friends, class_name: 'Person'
23
+
24
+ embeds_one :profile
25
+ embeds_many :sites
26
+ end
27
+
28
+ class Pet
29
+ include Mongoid::Document
30
+
31
+ belongs_to :owner, class_name: 'Person', index: :true
32
+ end
33
+
34
+ class Account
35
+ include Mongoid::Document
36
+
37
+ belongs_to :person
38
+ end
39
+
40
+ class Profile
41
+ include Mongoid::Document
42
+ end
43
+
44
+ class Site
45
+ include Mongoid::Document
46
+
47
+ embedded_in :person
48
+ end
@@ -0,0 +1,15 @@
1
+ require 'bundler/setup'
2
+ gem 'minitest'
3
+ require 'minitest/autorun'
4
+ require 'mongoid'
5
+ require 'mongoid-minitest'
6
+
7
+ Dir["#{File.dirname(__FILE__)}/models/*.rb"].each { |f| require f }
8
+
9
+ Mongoid.configure do |config|
10
+ config.connect_to 'mongoid-minitest-test'
11
+ end
12
+
13
+ class MiniTest::Spec
14
+ include Mongoid::Matchers
15
+ end
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-minitest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francesco Rodriguez
8
8
  - Sascha Wessel
9
9
  - Godfrey Chan
10
+ - Ryan McGeary
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2013-02-26 00:00:00.000000000 Z
14
+ date: 2013-02-27 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: minitest
@@ -42,18 +43,32 @@ dependencies:
42
43
  version: '1.2'
43
44
  - !ruby/object:Gem::Dependency
44
45
  name: mongoid
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '3'
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '3'
58
+ - !ruby/object:Gem::Dependency
59
+ name: minitest-activemodel
45
60
  requirement: !ruby/object:Gem::Requirement
46
61
  requirements:
47
62
  - - ~>
48
63
  - !ruby/object:Gem::Version
49
- version: '3.0'
64
+ version: '1.0'
50
65
  type: :runtime
51
66
  prerelease: false
52
67
  version_requirements: !ruby/object:Gem::Requirement
53
68
  requirements:
54
69
  - - ~>
55
70
  - !ruby/object:Gem::Version
56
- version: '3.0'
71
+ version: '1.0'
57
72
  - !ruby/object:Gem::Dependency
58
73
  name: rake
59
74
  requirement: !ruby/object:Gem::Requirement
@@ -68,47 +83,51 @@ dependencies:
68
83
  - - '>='
69
84
  - !ruby/object:Gem::Version
70
85
  version: '0'
71
- description: Minitest matchers for Mongoid
86
+ description: MiniTest matchers for Mongoid
72
87
  email:
73
88
  - lrodriguezsanc@gmail.com
89
+ - ryan@mcgeary.org
74
90
  executables: []
75
91
  extensions: []
76
- extra_rdoc_files: []
92
+ extra_rdoc_files:
93
+ - CHANGELOG.md
94
+ - LICENSE.md
95
+ - README.md
77
96
  files:
97
+ - .gitignore
98
+ - .travis.yml
99
+ - CHANGELOG.md
100
+ - Gemfile
101
+ - Gemfile.edge
102
+ - LICENSE.md
103
+ - README.md
104
+ - Rakefile
78
105
  - lib/matchers/associations/associations.rb
79
106
  - lib/matchers/document/be_stored_in.rb
80
107
  - lib/matchers/document/document.rb
81
108
  - lib/matchers/document/have_field.rb
82
109
  - lib/matchers/document/have_index.rb
83
- - lib/matchers/helpers.rb
84
110
  - lib/matchers/matcher.rb
85
- - lib/matchers/validations/acceptance.rb
86
- - lib/matchers/validations/associated.rb
87
- - lib/matchers/validations/confirmation.rb
88
- - lib/matchers/validations/exclusion.rb
89
- - lib/matchers/validations/format.rb
90
- - lib/matchers/validations/inclusion.rb
91
- - lib/matchers/validations/length.rb
92
- - lib/matchers/validations/presence.rb
93
- - lib/matchers/validations/uniqueness.rb
94
- - lib/matchers/validations/validations.rb
95
- - lib/mongoid-minitest/version.rb
96
111
  - lib/mongoid-minitest.rb
97
- - LICENSE
98
- - README.md
99
- - CHANGELOG.md
112
+ - mongoid-minitest.gemspec
113
+ - test/matchers/associations_test.rb
114
+ - test/matchers/document_test.rb
115
+ - test/models/models.rb
116
+ - test/test_helper.rb
100
117
  homepage: https://github.com/frodsan/mongoid-minitest
101
- licenses: []
118
+ licenses:
119
+ - MIT
102
120
  metadata: {}
103
121
  post_install_message:
104
- rdoc_options: []
122
+ rdoc_options:
123
+ - --charset=UTF-8
105
124
  require_paths:
106
125
  - lib
107
126
  required_ruby_version: !ruby/object:Gem::Requirement
108
127
  requirements:
109
128
  - - '>='
110
129
  - !ruby/object:Gem::Version
111
- version: '0'
130
+ version: 1.9.3
112
131
  required_rubygems_version: !ruby/object:Gem::Requirement
113
132
  requirements:
114
133
  - - '>='
@@ -119,5 +138,9 @@ rubyforge_project:
119
138
  rubygems_version: 2.0.0
120
139
  signing_key:
121
140
  specification_version: 4
122
- summary: Minitest matchers for Mongoid
123
- test_files: []
141
+ summary: MiniTest matchers for Mongoid
142
+ test_files:
143
+ - test/matchers/associations_test.rb
144
+ - test/matchers/document_test.rb
145
+ - test/models/models.rb
146
+ - test/test_helper.rb