isunit 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/Gemfile +6 -0
- data/Gemfile.lock +30 -0
- data/README.markdown +2 -0
- data/Rakefile +6 -0
- data/is_unit.gemspec +23 -0
- data/lib/is_unit.rb +31 -0
- data/lib/is_unit/version.rb +3 -0
- data/lib/not_a_unit_test_error.rb +9 -0
- data/spec/dice_spec.rb +16 -0
- data/spec/game_spec.rb +56 -0
- data/spec/model/dice.rb +6 -0
- data/spec/model/game.rb +15 -0
- data/spec/model/player.rb +9 -0
- data/spec/player_spec.rb +46 -0
- data/spec/spec_helper.rb +12 -0
- metadata +69 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
isunit (0.0.1)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
diff-lcs (1.1.3)
|
10
|
+
metaclass (0.0.1)
|
11
|
+
mocha (0.10.0)
|
12
|
+
metaclass (~> 0.0.1)
|
13
|
+
rake (0.9.2.2)
|
14
|
+
rspec (2.7.0)
|
15
|
+
rspec-core (~> 2.7.0)
|
16
|
+
rspec-expectations (~> 2.7.0)
|
17
|
+
rspec-mocks (~> 2.7.0)
|
18
|
+
rspec-core (2.7.1)
|
19
|
+
rspec-expectations (2.7.0)
|
20
|
+
diff-lcs (~> 1.1.2)
|
21
|
+
rspec-mocks (2.7.0)
|
22
|
+
|
23
|
+
PLATFORMS
|
24
|
+
ruby
|
25
|
+
|
26
|
+
DEPENDENCIES
|
27
|
+
isunit!
|
28
|
+
mocha
|
29
|
+
rake
|
30
|
+
rspec
|
data/README.markdown
ADDED
data/Rakefile
ADDED
data/is_unit.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "is_unit/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "isunit"
|
7
|
+
s.version = IsUnit::VERSION
|
8
|
+
s.authors = ["Sathish"]
|
9
|
+
s.email = ["sathish316@gmail.com"]
|
10
|
+
s.homepage = "http://www.github.com/sathish316/is_unit"
|
11
|
+
s.summary = %q{IsUnit ensures your unit tests don't have external dependencies or dependencies on other classes unless explicitly stated making your code clean and easy to refactor}
|
12
|
+
s.description = %q{IsUnit ensures your unit tests don't have external dependencies or dependencies on other classes unless explicitly stated making your code clean and easy to refactor}
|
13
|
+
s.rubyforge_project = "is_unit"
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
# specify any dependencies here; for example:
|
21
|
+
# s.add_development_dependency "rspec"
|
22
|
+
# s.add_runtime_dependency "rest-client"
|
23
|
+
end
|
data/lib/is_unit.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'not_a_unit_test_error'
|
2
|
+
require 'rspec/mocks'
|
3
|
+
|
4
|
+
module IsUnit
|
5
|
+
def self.included(klass)
|
6
|
+
klass.extend ClassMethods
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def is_unit(class_under_test, all_classes, &block)
|
11
|
+
classes_to_stub = all_classes - [class_under_test]
|
12
|
+
|
13
|
+
self.before(:each) do
|
14
|
+
classes_to_stub.each do |klass|
|
15
|
+
klass.stubs(:new).returns(object=klass.new)
|
16
|
+
klass.public_instance_methods(false).each do |method_name|
|
17
|
+
object.stubs(method_name).raises(NotAUnitTestError.new(class_under_test))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
yield
|
23
|
+
|
24
|
+
self.after(:each) do
|
25
|
+
classes_to_stub.each do |klass|
|
26
|
+
klass.stubs(:new).returns(klass.new)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/spec/dice_spec.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'model/game'
|
3
|
+
require 'model/player'
|
4
|
+
require 'model/dice'
|
5
|
+
|
6
|
+
describe Dice do
|
7
|
+
it "should throw random positive number" do
|
8
|
+
dice = Dice.new
|
9
|
+
dice.throw_number.should > 0
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should throw random positive number less than 6" do
|
13
|
+
dice = Dice.new
|
14
|
+
dice.throw_number.should <= 6
|
15
|
+
end
|
16
|
+
end
|
data/spec/game_spec.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Game do
|
4
|
+
include IsUnit
|
5
|
+
|
6
|
+
describe "unit tests" do
|
7
|
+
is_unit(Game, all_classes) do
|
8
|
+
describe "by stubbing dependencies" do
|
9
|
+
it "should choose winner" do
|
10
|
+
player_1 = Player.new(Dice.new)
|
11
|
+
player_2 = Player.new(Dice.new)
|
12
|
+
game = Game.new(player_1, player_2)
|
13
|
+
|
14
|
+
player_1.expects(:play).returns(5)
|
15
|
+
player_2.expects(:play).returns(3)
|
16
|
+
|
17
|
+
game.play
|
18
|
+
|
19
|
+
game.winner.should == player_1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "with dependencies error" do
|
24
|
+
it "should play by throwing a number on dice" do
|
25
|
+
begin
|
26
|
+
player_1 = Player.new(Dice.new)
|
27
|
+
player_2 = Player.new(Dice.new)
|
28
|
+
|
29
|
+
game = Game.new(player_1, player_2)
|
30
|
+
|
31
|
+
game.play
|
32
|
+
|
33
|
+
game.winner.should_not be_nil
|
34
|
+
rescue => e
|
35
|
+
e.class.should == NotAUnitTestError
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe Game do
|
44
|
+
describe "integration tests" do
|
45
|
+
it "should play by throwing a number on dice" do
|
46
|
+
player_1 = Player.new(Dice.new)
|
47
|
+
player_2 = Player.new(Dice.new)
|
48
|
+
|
49
|
+
game = Game.new(player_1, player_2)
|
50
|
+
|
51
|
+
game.play
|
52
|
+
|
53
|
+
game.winner.should_not be_nil
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/spec/model/dice.rb
ADDED
data/spec/model/game.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
class Game
|
2
|
+
attr_reader :winner
|
3
|
+
|
4
|
+
def initialize(player_1, player_2)
|
5
|
+
@player_1 = player_1
|
6
|
+
@player_2 = player_2
|
7
|
+
end
|
8
|
+
|
9
|
+
def play
|
10
|
+
points_1 = @player_1.play
|
11
|
+
points_2 = @player_2.play
|
12
|
+
@winner = points_1 >= points_2 ? @player_1 : @player_2
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
data/spec/player_spec.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Player do
|
4
|
+
include IsUnit
|
5
|
+
|
6
|
+
is_unit(Player, all_classes) do
|
7
|
+
describe "by stubbing dependencies" do
|
8
|
+
it "should play by throwing a number on dice" do
|
9
|
+
dice = Dice.new
|
10
|
+
player = Player.new(dice)
|
11
|
+
|
12
|
+
dice.expects(:throw_number).returns(5)
|
13
|
+
|
14
|
+
player.play.should == 5
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "with dependencies error" do
|
19
|
+
it "should play by throwing a number on dice" do
|
20
|
+
begin
|
21
|
+
dice = Dice.new
|
22
|
+
player = Player.new(dice)
|
23
|
+
|
24
|
+
number = player.play
|
25
|
+
number.should > 0
|
26
|
+
number.should <= 6
|
27
|
+
rescue => e
|
28
|
+
e.class.should == NotAUnitTestError
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe Player do
|
36
|
+
describe "integration test" do
|
37
|
+
it "should play by throwing a number on dice" do
|
38
|
+
dice = Dice.new
|
39
|
+
player = Player.new(dice)
|
40
|
+
|
41
|
+
number = player.play
|
42
|
+
number.should > 0
|
43
|
+
number.should <= 6
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: isunit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Sathish
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-04 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description: IsUnit ensures your unit tests don't have external dependencies or dependencies
|
15
|
+
on other classes unless explicitly stated making your code clean and easy to refactor
|
16
|
+
email:
|
17
|
+
- sathish316@gmail.com
|
18
|
+
executables: []
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- Gemfile
|
23
|
+
- Gemfile.lock
|
24
|
+
- README.markdown
|
25
|
+
- Rakefile
|
26
|
+
- is_unit.gemspec
|
27
|
+
- lib/is_unit.rb
|
28
|
+
- lib/is_unit/version.rb
|
29
|
+
- lib/not_a_unit_test_error.rb
|
30
|
+
- spec/dice_spec.rb
|
31
|
+
- spec/game_spec.rb
|
32
|
+
- spec/model/dice.rb
|
33
|
+
- spec/model/game.rb
|
34
|
+
- spec/model/player.rb
|
35
|
+
- spec/player_spec.rb
|
36
|
+
- spec/spec_helper.rb
|
37
|
+
homepage: http://www.github.com/sathish316/is_unit
|
38
|
+
licenses: []
|
39
|
+
post_install_message:
|
40
|
+
rdoc_options: []
|
41
|
+
require_paths:
|
42
|
+
- lib
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
requirements: []
|
56
|
+
rubyforge_project: is_unit
|
57
|
+
rubygems_version: 1.8.10
|
58
|
+
signing_key:
|
59
|
+
specification_version: 3
|
60
|
+
summary: IsUnit ensures your unit tests don't have external dependencies or dependencies
|
61
|
+
on other classes unless explicitly stated making your code clean and easy to refactor
|
62
|
+
test_files:
|
63
|
+
- spec/dice_spec.rb
|
64
|
+
- spec/game_spec.rb
|
65
|
+
- spec/model/dice.rb
|
66
|
+
- spec/model/game.rb
|
67
|
+
- spec/model/player.rb
|
68
|
+
- spec/player_spec.rb
|
69
|
+
- spec/spec_helper.rb
|