assert_difference 0.1.0 → 0.3.0

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/.gitignore CHANGED
@@ -16,15 +16,14 @@ tmtags
16
16
  ## RubyMine
17
17
  .idea
18
18
 
19
- ## PROJECT::GENERAL
20
- coverage
21
- rdoc
22
- pkg
23
-
24
- ## PROJECT::SPECIFIC
25
- *.gemspec
26
-
27
19
  ## Yard
28
20
  .yardoc
29
21
  doc
30
22
 
23
+ ## PROJECT::GENERAL
24
+ coverage
25
+ rdoc
26
+ pkg
27
+ .bundle
28
+ tmp
29
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # Copyright © 2011, José Pablo Fernández
3
+
4
+ source "http://rubygems.org"
5
+
6
+ # Install the dependencies defined on assert_difference.gemspec
7
+ gemspec
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 José Pablo Fernández
1
+ Copyright © 2009, 2010, 2011, José Pablo Fernández
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md ADDED
@@ -0,0 +1,54 @@
1
+ assert_difference
2
+ =================
3
+
4
+ A nice assert_difference method similar to the one provided by Rails but with
5
+ some improvements. For example:
6
+
7
+ assert_difference "Company.count" => +1, "User.count" => +5, "Slot.count" => -1 do
8
+ post :something
9
+ end
10
+
11
+ will assert that a company and 5 users were create (the plus sign is only for
12
+ the visual aid) and a slot was removed.
13
+
14
+ [Rails' assert_difference](http://api.rubyonrails.org/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_difference)
15
+ would require a more verbose syntax:
16
+
17
+ assert_difference "Company.count" do
18
+ assert_difference "User.count", +5 do
19
+ assert_difference "Article.count", -1 do
20
+ post :something
21
+ end
22
+ end
23
+ end
24
+
25
+ To use it with Test::Unit add this code (untested, please
26
+ [let me know](mailto:pupeno@pupeno.com) if it works):
27
+
28
+ class Test::Unit::TestCase
29
+ include Factory::Syntax::Methods
30
+ end
31
+
32
+ and to use it with RSpec:
33
+
34
+ RSpec.configure do |config|
35
+ config.include Factory::Syntax::Methods
36
+ end
37
+
38
+ For more information read http://pupeno.com/blog/better-assert-difference
39
+
40
+ Note on Patches/Pull Requests
41
+ -----------------------------
42
+
43
+ * Fork the project.
44
+ * Make your feature addition or bug fix.
45
+ * Add tests for it. This is important so I don't break it in a
46
+ future version unintentionally.
47
+ * Commit, do not mess with rakefile, version, or history.
48
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
49
+ * Send me a pull request. Bonus points for topic branches.
50
+
51
+ Copyright
52
+ ---------
53
+
54
+ Copyright (c) 2010, 2011, José Pablo Fernández. See LICENSE for details.
data/Rakefile CHANGED
@@ -1,24 +1,10 @@
1
- # Copyright © 2010, José Pablo Fernández
1
+ # -*- encoding: utf-8 -*-
2
+ # Copyright © 2011, José Pablo Fernández
2
3
 
3
- require "rubygems"
4
- require "rake"
4
+ task :default => :test
5
5
 
6
- begin
7
- require "jeweler"
8
- Jeweler::Tasks.new do |gem|
9
- gem.name = "assert_difference"
10
- gem.summary = %Q{Better assert_difference than Rails}
11
- gem.description = %Q{Better assert_difference than Rails by providing a more compact and readable syntax through hashes. For some more information read http://pupeno.com/blog/better-assert-difference}
12
- gem.email = "pupeno@pupeno.com"
13
- gem.homepage = "http://github.com/pupeno/assert_difference"
14
- gem.authors = ["J. Pablo Fernández"]
15
- gem.add_development_dependency "yard", ">= 0"
16
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
- end
18
- Jeweler::GemcutterTasks.new
19
- rescue LoadError
20
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
21
- end
6
+ require "bundler"
7
+ Bundler::GemHelper.install_tasks
22
8
 
23
9
  require "rake/testtask"
24
10
  Rake::TestTask.new(:test) do |test|
@@ -27,53 +13,17 @@ Rake::TestTask.new(:test) do |test|
27
13
  test.verbose = true
28
14
  end
29
15
 
30
- begin
31
- require "rcov/rcovtask"
32
- Rcov::RcovTask.new do |test|
33
- test.libs << "test"
34
- test.pattern = "test/**/test_*.rb"
35
- test.verbose = true
36
- end
37
- rescue LoadError
38
- task :rcov do
39
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
40
- end
41
- end
42
-
43
- task :test => :check_dependencies
44
-
45
- begin
46
- require "reek/adapters/rake_task"
47
- Reek::RakeTask.new do |t|
48
- t.fail_on_error = true
49
- t.verbose = false
50
- t.source_files = "lib/**/*.rb"
51
- end
52
- rescue LoadError
53
- task :reek do
54
- abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
55
- end
56
- end
57
-
58
- begin
59
- require "roodi"
60
- require "roodi_task"
61
- RoodiTask.new do |t|
62
- t.verbose = false
63
- end
64
- rescue LoadError
65
- task :roodi do
66
- abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi"
67
- end
16
+ require "rcov/rcovtask"
17
+ Rcov::RcovTask.new do |test|
18
+ test.libs << "test"
19
+ test.pattern = "test/**/test_*.rb"
20
+ test.verbose = true
68
21
  end
69
22
 
70
- task :default => :test
71
-
72
- begin
73
- require "yard"
74
- YARD::Rake::YardocTask.new
75
- rescue LoadError
76
- task :yardoc do
77
- abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
78
- end
23
+ require "yard"
24
+ YARD::Rake::YardocTask.new do |yard|
25
+ # Use Markdown for documentation.
26
+ yard.options << "--markup" << "markdown"
27
+ # Extra file(s).
28
+ yard.options << "-" << "LICENSE"
79
29
  end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # Copyright © 2011, José Pablo Fernández
3
+
4
+ $:.unshift File.expand_path("../lib", __FILE__)
5
+ require "assert_difference"
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "assert_difference"
9
+ s.version = AssertDifference::VERSION
10
+ s.platform = Gem::Platform::RUBY
11
+ s.authors = ["J. Pablo Fernández"]
12
+ s.email = ["pupeno@pupeno.com"]
13
+ s.homepage = "http://github.com/pupeno/assert_difference"
14
+ s.summary = "An improved assert_difference"
15
+ s.description = "Better assert_difference than Rails by providing a more compact and readable syntax through hashes. For some more information read http://pupeno.com/blog/better-assert-difference."
16
+
17
+ s.required_rubygems_version = ">= 1.3.6"
18
+ s.rubyforge_project = "assert_difference"
19
+
20
+ s.add_development_dependency "yard"
21
+
22
+ s.files = `git ls-files`.split("\n")
23
+ s.test_files = `git ls-files -- {test}/*`.split("\n")
24
+ end
@@ -1,52 +1,60 @@
1
- # Copyright © 2010, José Pablo Fernández
1
+ # -*- encoding: utf-8 -*-
2
+ # Copyright © 2010, 2011, José Pablo Fernández
3
+
4
+ module AssertDifference
5
+ VERSION = "0.3.0" unless defined?(::AssertDifference::VERSION)
2
6
 
3
- class ActiveSupport::TestCase
4
7
  # Test numeric difference between the return value of an expression as a result of what is evaluated
5
8
  # in the yielded block.
6
9
  #
7
- # assert_difference "Article.count" do
8
- # post :create, :article => {...}
9
- # end
10
+ # assert_difference "Article.count" do
11
+ # post :create, :article => {...}
12
+ # end
10
13
  #
11
14
  # An arbitrary expression is passed in and evaluated.
12
15
  #
13
- # assert_difference "assigns(:article).comments(:reload).size" do
14
- # post :create, :comment => {...}
15
- # end
16
+ # assert_difference "assigns(:article).comments(:reload).size" do
17
+ # post :create, :comment => {...}
18
+ # end
16
19
  #
17
20
  # An arbitrary positive or negative difference can be specified. The default is +1.
18
21
  #
19
- # assert_difference "Article.count", -1 do
20
- # post :delete, :id => ...
21
- # end
22
+ # assert_difference "Article.count", -1 do
23
+ # post :delete, :id => ...
24
+ # end
22
25
  #
23
26
  # An array of expressions can also be passed in and evaluated.
24
27
  #
25
- # assert_difference [ "Article.count", "Post.count" ], +2 do
26
- # post :create, :article => {...}
27
- # end
28
+ # assert_difference [ "Article.count", "Post.count" ], +2 do
29
+ # post :create, :article => {...}
30
+ # end
28
31
  #
29
32
  # A error message can be specified.
30
33
  #
31
- # assert_difference "Article.count", -1, "An Article should be destroyed" do
32
- # post :delete, :id => ...
33
- # end
34
+ # assert_difference "Article.count", -1, "An Article should be destroyed" do
35
+ # post :delete, :id => ...
36
+ # end
34
37
  #
35
38
  # Various assertions can be combined into one, instead of writing:
36
39
  #
37
- # assert_difference "Article.count" do
38
- # assert_difference "assigns(:article).comments(:reload).size" do
39
- # assert_difference "Article.count", -1 do
40
- # post :something
40
+ # assert_difference "Company.count" do
41
+ # assert_difference "User.count", +5 do
42
+ # assert_difference "Article.count", -1 do
43
+ # post :something
44
+ # end
41
45
  # end
42
46
  # end
43
- # end
44
47
  #
45
48
  # you can *now* write:
46
49
  #
47
- # assert_difference "Article.count" => 1, "assigns(:article).comments(:reload).size" => 1, "Article.count" => -1 do
48
- # post :something
49
- # end
50
+ # assert_difference "Article.count" => 1, "assigns(:article).comments(:reload).size" => 1, "Article.count" => -1 do
51
+ # post :something
52
+ # end
53
+ #
54
+ # @param [Array, Hash] expressions array of expressions to evaluate or hash
55
+ # table of expressions and expected difference.
56
+ # @param [Integer] difference expected difference when using an array or single expression.
57
+ # @param [String, nil] message error message to display. One would be constructed if nil.
50
58
  def assert_difference(expressions, difference = 1, message = nil, &block)
51
59
  b = block.send(:binding)
52
60
  if !expressions.is_a? Hash
metadata CHANGED
@@ -1,90 +1,66 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: assert_difference
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
13
- - "J. Pablo Fern\xC3\xA1ndez"
7
+ authors:
8
+ - J. Pablo Fernández
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2010-10-02 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2011-08-24 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: yard
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70137295197880 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :development
34
- version_requirements: *id001
35
- description: Better assert_difference than Rails by providing a more compact and readable syntax through hashes. For some more information read http://pupeno.com/blog/better-assert-difference
36
- email: pupeno@pupeno.com
23
+ prerelease: false
24
+ version_requirements: *70137295197880
25
+ description: Better assert_difference than Rails by providing a more compact and readable
26
+ syntax through hashes. For some more information read http://pupeno.com/blog/better-assert-difference.
27
+ email:
28
+ - pupeno@pupeno.com
37
29
  executables: []
38
-
39
30
  extensions: []
40
-
41
- extra_rdoc_files:
42
- - LICENSE
43
- - README.rdoc
44
- files:
45
- - .document
31
+ extra_rdoc_files: []
32
+ files:
46
33
  - .gitignore
34
+ - Gemfile
47
35
  - LICENSE
48
- - README.rdoc
36
+ - README.md
49
37
  - Rakefile
50
- - VERSION
38
+ - assert_difference.gemspec
51
39
  - lib/assert_difference.rb
52
40
  - test/helper.rb
53
41
  - test/test_assert_difference.rb
54
- has_rdoc: true
55
42
  homepage: http://github.com/pupeno/assert_difference
56
43
  licenses: []
57
-
58
44
  post_install_message:
59
- rdoc_options:
60
- - --charset=UTF-8
61
- require_paths:
45
+ rdoc_options: []
46
+ require_paths:
62
47
  - lib
63
- required_ruby_version: !ruby/object:Gem::Requirement
48
+ required_ruby_version: !ruby/object:Gem::Requirement
64
49
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- hash: 3
69
- segments:
70
- - 0
71
- version: "0"
72
- required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
55
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 3
78
- segments:
79
- - 0
80
- version: "0"
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: 1.3.6
81
60
  requirements: []
82
-
83
- rubyforge_project:
84
- rubygems_version: 1.3.7
61
+ rubyforge_project: assert_difference
62
+ rubygems_version: 1.8.6
85
63
  signing_key:
86
64
  specification_version: 3
87
- summary: Better assert_difference than Rails
88
- test_files:
89
- - test/helper.rb
90
- - test/test_assert_difference.rb
65
+ summary: An improved assert_difference
66
+ test_files: []
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/README.rdoc DELETED
@@ -1,34 +0,0 @@
1
- = assert_difference
2
-
3
- Better assert_difference than Rails by providing a more compact and readable
4
- syntax through hashes. Instead of writing:
5
-
6
- assert_difference "Article.count" do
7
- assert_difference "assigns(:article).comments(:reload).size" do
8
- assert_difference "Article.count", -1 do
9
- post :something
10
- end
11
- end
12
- end
13
-
14
- you can *now* write:
15
-
16
- assert_difference "Article.count" => 1, "assigns(:article).comments(:reload).size" => 1, "Article.count" => -1 do
17
- post :something
18
- end
19
-
20
- For some more information read http://pupeno.com/blog/better-assert-difference
21
-
22
- == Note on Patches/Pull Requests
23
-
24
- * Fork the project.
25
- * Make your feature addition or bug fix.
26
- * Add tests for it. This is important so I don't break it in a
27
- future version unintentionally.
28
- * Commit, do not mess with rakefile, version, or history.
29
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
30
- * Send me a pull request. Bonus points for topic branches.
31
-
32
- == Copyright
33
-
34
- Copyright (c) 2010 José Pablo Fernández. See LICENSE for details.
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.0