minitest-ar-assertions 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.
data/Gemfile CHANGED
@@ -6,6 +6,7 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
+ gem 'minitest', "~>2.6.0", :require => "minitest/autorun"
9
10
  # gem "shoulda", ">= 0"
10
11
  gem "rdoc", "~> 3.12"
11
12
  gem "bundler", "~> 1.0.0"
data/Gemfile.lock CHANGED
@@ -22,6 +22,7 @@ GEM
22
22
  rake
23
23
  rdoc
24
24
  json (1.7.3)
25
+ minitest (2.6.2)
25
26
  multi_json (1.3.6)
26
27
  rake (0.9.2.2)
27
28
  rdoc (3.12)
@@ -35,4 +36,5 @@ DEPENDENCIES
35
36
  activerecord
36
37
  bundler (~> 1.0.0)
37
38
  jeweler (~> 1.8.3)
39
+ minitest (~> 2.6.0)
38
40
  rdoc (~> 3.12)
data/README.rdoc CHANGED
@@ -2,16 +2,28 @@
2
2
 
3
3
  A (small) collection of assertions for testing ActiveRecord associations and validations with MiniTest.
4
4
 
5
- Associations:
6
- -------------
7
- assert_association Comment, :has_many, :likes, :as => :likeable
8
- assert_association Post, :has_many, :likes => :as => :likeable
9
- assert_association Like :belongs_to, :likeable
10
-
11
- Validations:
12
- ------------
13
- assert_validates_presence_of User, :email
14
- assert_validates_uniqueness_of, User, :username, :email
5
+ == Install:
6
+ In your Gemfile:
7
+ gem 'minitest-ar-assertions', :require => 'minitest_activerecord_assertions'
8
+
9
+ then in test_helper.rb (or test_config.rb if like me, you love Padrino)
10
+ include MiniTest::Assertions::ActiveRecord
11
+
12
+ Now you are ready to do your thing...
13
+
14
+ == Associations:
15
+ assert_association Comment, :has_many, :likes, :as => :likeable
16
+
17
+ assert_association Post, :has_many, :likes => :as => :likeable
18
+
19
+ assert_association Like :belongs_to, :likeable
20
+
21
+
22
+ == Validations:
23
+ assert_validates_presence_of User, :email
24
+
25
+ assert_validates_uniqueness_of User, :username, :email
26
+
15
27
 
16
28
  == Contributing to minitest-ar-assertions
17
29
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "minitest-ar-assertions"
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Steve Laing"]
data/test/helper.rb CHANGED
@@ -7,12 +7,13 @@ rescue Bundler::BundlerError => e
7
7
  $stderr.puts "Run `bundle install` to install missing gems"
8
8
  exit e.status_code
9
9
  end
10
- require 'test/unit'
11
- require 'shoulda'
12
10
 
13
11
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
12
  $LOAD_PATH.unshift(File.dirname(__FILE__))
15
- require 'minitest-ar-assertions'
13
+ require "minitest/autorun"
14
+ require 'minitest_activerecord_assertions'
15
+ require "active_record"
16
16
 
17
- class Test::Unit::TestCase
17
+ class MiniTest::Unit::TestCase
18
+ include MiniTest::Assertions::ActiveRecord
18
19
  end
@@ -1,7 +1,77 @@
1
1
  require 'helper'
2
+ require 'active_support/core_ext/module/delegation'
2
3
 
3
- class TestMinitestActiveRecordAssertions < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
4
+ class UnvalidatedThing
5
+ include ActiveRecord::Reflection
6
+ include ActiveRecord::Validations
7
+
8
+ end
9
+
10
+ class UnassociatedThing
11
+ include ActiveRecord::Reflection
12
+ include ActiveRecord::Validations
13
+ end
14
+
15
+ class User < ActiveRecord::Base
16
+ include ActiveRecord::Reflection
17
+ include ActiveRecord::Validations
18
+
19
+ has_many :likes, :as => :likeable
20
+ validates_presence_of :email
21
+ validates_uniqueness_of :username, :email
22
+ end
23
+
24
+ class Like < ActiveRecord::Base
25
+ include ActiveRecord::Reflection
26
+ include ActiveRecord::Validations
27
+
28
+ belongs_to :likeable, :polymorphic => true
29
+ belongs_to :user
30
+ validates_presence_of :email
31
+ validates_uniqueness_of :username, :email
32
+ end
33
+
34
+ describe "assert_association assertion" do
35
+ it "should fail for models with no associations" do
36
+ assert_raises MiniTest::Assertion do
37
+ assert_association UnvalidatedThing, :belongs_to, :user
38
+ end
39
+ end
40
+
41
+ it "should pass for models with has_many associations" do
42
+ assert assert_association(User, :has_many, :likes)
43
+ end
44
+
45
+ it "should pass for models with belongs_to associations" do
46
+ assert assert_association(Like, :belongs_to, :user)
47
+ end
48
+
49
+ it "should pass for models with polymorphic belongs_to associations" do
50
+ assert assert_association(Like, :belongs_to, :likeable, :polymorphic => true)
51
+ end
52
+ end
53
+
54
+ describe "assert_validates_presence_of assertion" do
55
+ it "should fail for models with no validations" do
56
+ assert_raises MiniTest::Assertion do
57
+ assert_validates_presence_of UnvalidatedThing, :email
58
+ end
59
+ end
60
+
61
+ it "should pass for models with validates_presence_of validations" do
62
+ assert assert_validates_presence_of(User, :email)
6
63
  end
7
64
  end
65
+
66
+ describe "assert_validates_uniqueness_of assertion" do
67
+ it "should fail for models with no validations" do
68
+ assert_raises MiniTest::Assertion do
69
+ assert_validates_uniqueness_of UnvalidatedThing, :username, :email
70
+ end
71
+ end
72
+
73
+ it "should pass for models with validates_uniqueness_of validations" do
74
+ assert assert_validates_uniqueness_of(User, :username, :email)
75
+ end
76
+ end
77
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-ar-assertions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-05-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
16
- requirement: &74639980 !ruby/object:Gem::Requirement
16
+ requirement: &78785000 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.12'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *74639980
24
+ version_requirements: *78785000
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &74639360 !ruby/object:Gem::Requirement
27
+ requirement: &78784400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *74639360
35
+ version_requirements: *78784400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &74638830 !ruby/object:Gem::Requirement
38
+ requirement: &78783860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.8.3
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *74638830
46
+ version_requirements: *78783860
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activerecord
49
- requirement: &74638130 !ruby/object:Gem::Requirement
49
+ requirement: &78783060 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *74638130
57
+ version_requirements: *78783060
58
58
  description: A collection of assertions for use with minitest and activerecord. Simplifies
59
59
  testing associations and validations by introspecting associations and validations
60
60
  for you models.