minitest-ar-assertions 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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.