simple_assertions 0.0.1
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 +4 -0
- data/Gemfile +4 -0
- data/README.rdoc +23 -0
- data/Rakefile +1 -0
- data/lib/simple_assertions/assert_errors_on.rb +53 -0
- data/lib/simple_assertions/testunit.rb +3 -0
- data/lib/simple_assertions/version.rb +3 -0
- data/lib/simple_assertions.rb +5 -0
- data/simple_assertions.gemspec +22 -0
- metadata +74 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
= Assertions for test/unit
|
2
|
+
|
3
|
+
Useful assertions for test/unit
|
4
|
+
|
5
|
+
== Usage
|
6
|
+
|
7
|
+
To include all assertions for test/unit do:
|
8
|
+
|
9
|
+
require 'simple_assertions/testunit'
|
10
|
+
|
11
|
+
|
12
|
+
Or with more control what to include:
|
13
|
+
|
14
|
+
require 'simple_assertions'
|
15
|
+
|
16
|
+
class Test::Unit::TestCase
|
17
|
+
include SimpleAssertions::AssertErrorsOn
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
== Assertions
|
22
|
+
|
23
|
+
* assert_errors_on
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module SimpleAssertions
|
2
|
+
module AssertErrorsOn
|
3
|
+
# http://gist.github.com/49013
|
4
|
+
#
|
5
|
+
# Assert errors on given parameters.
|
6
|
+
# It call #valid? on +object+ unless called with a block.
|
7
|
+
#
|
8
|
+
# assert_errors_on record, :email
|
9
|
+
# assert_errors_on record, :email => 2
|
10
|
+
# assert_errors_on record, :email => "is blank"
|
11
|
+
# assert_errors_on record, :email => /blank/
|
12
|
+
# assert_errors_on record, :email => ["is blank", "is invalid"]
|
13
|
+
# assert_errors_on record, :email, :plz => 2
|
14
|
+
# assert_errors_on record, [:username, :email] => "is blank"
|
15
|
+
#
|
16
|
+
# assert_errors_on record, :email => 1 do
|
17
|
+
# assert record.save
|
18
|
+
# end
|
19
|
+
def assert_errors_on(object, *attributes_or_hash)
|
20
|
+
if block_given?
|
21
|
+
yield
|
22
|
+
else
|
23
|
+
assert !object.valid?, "#{object.inspect} should be invalid."
|
24
|
+
end
|
25
|
+
|
26
|
+
hash = attributes_or_hash[-1].is_a?(Hash) ? attributes_or_hash.pop : {}
|
27
|
+
attributes_or_hash.each { |field| hash[field] = 1 }
|
28
|
+
|
29
|
+
hash.each do |fields, pattern|
|
30
|
+
Array.wrap(fields).each do |field|
|
31
|
+
errors = Array.wrap(object.errors[field])
|
32
|
+
|
33
|
+
case pattern
|
34
|
+
when Fixnum
|
35
|
+
assert_equal pattern, errors.size,
|
36
|
+
"#{pattern} error(s) expected for #{object.class}.#{field} but got #{errors.inspect}."
|
37
|
+
when Regexp
|
38
|
+
assert errors.all? { |message| pattern.match(message) },
|
39
|
+
"expected to match #{pattern} for #{object.class}.#{field} but got #{errors.inspect}."
|
40
|
+
when String
|
41
|
+
assert_equal [ pattern ], errors,
|
42
|
+
"#{pattern.inspect} error(s) expected for #{object.class}.#{field} but got #{errors.inspect}."
|
43
|
+
when Array
|
44
|
+
assert_equal pattern.sort, errors.sort,
|
45
|
+
"#{pattern.inspect} error(s) expected for #{object.class}.#{field} but got #{errors.inspect}."
|
46
|
+
else
|
47
|
+
fail "unknown type #{pattern.inspect}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "simple_assertions"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "simple_assertions"
|
7
|
+
s.version = SimpleAssertions::VERSION
|
8
|
+
s.authors = ["Peter Suschlik"]
|
9
|
+
s.email = ["ps@neopoly.de"]
|
10
|
+
s.homepage = "https://github.com/neopoly/test-unit-assertions"
|
11
|
+
s.summary = %q{Useful assertions for test/unit}
|
12
|
+
s.description = %q{}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
# specify any dependencies here; for example:
|
20
|
+
# s.add_development_dependency "rspec"
|
21
|
+
# s.add_runtime_dependency "test-unit"
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple_assertions
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Peter Suschlik
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-10-26 00:00:00 Z
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: ""
|
22
|
+
email:
|
23
|
+
- ps@neopoly.de
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
extensions: []
|
27
|
+
|
28
|
+
extra_rdoc_files: []
|
29
|
+
|
30
|
+
files:
|
31
|
+
- .gitignore
|
32
|
+
- Gemfile
|
33
|
+
- README.rdoc
|
34
|
+
- Rakefile
|
35
|
+
- lib/simple_assertions.rb
|
36
|
+
- lib/simple_assertions/assert_errors_on.rb
|
37
|
+
- lib/simple_assertions/testunit.rb
|
38
|
+
- lib/simple_assertions/version.rb
|
39
|
+
- simple_assertions.gemspec
|
40
|
+
homepage: https://github.com/neopoly/test-unit-assertions
|
41
|
+
licenses: []
|
42
|
+
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options: []
|
45
|
+
|
46
|
+
require_paths:
|
47
|
+
- lib
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
hash: 3
|
54
|
+
segments:
|
55
|
+
- 0
|
56
|
+
version: "0"
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
hash: 3
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
version: "0"
|
66
|
+
requirements: []
|
67
|
+
|
68
|
+
rubyforge_project:
|
69
|
+
rubygems_version: 1.8.10
|
70
|
+
signing_key:
|
71
|
+
specification_version: 3
|
72
|
+
summary: Useful assertions for test/unit
|
73
|
+
test_files: []
|
74
|
+
|