Skip to content
This repository was archived by the owner on Apr 10, 2018. It is now read-only.

Commit 1238fb0

Browse files
committed
Add unit tests
1 parent 4775f52 commit 1238fb0

File tree

7 files changed

+135
-1
lines changed

7 files changed

+135
-1
lines changed

Gemfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ source "https://rubygems.org"
33
gem "sinatra"
44
gem "sinatra-contrib"
55

6+
gem "rake"
7+
68
gem "thin"
79

810
gem "redis"
@@ -12,6 +14,8 @@ gem "haml"
1214

1315
gem "httparty"
1416

15-
group :development do
17+
group :development, :test do
18+
gem "minitest"
1619
gem "pry"
20+
gem "simplecov", require: false
1721
end

Gemfile.lock

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ GEM
1111
multi_json (~> 1.0)
1212
multi_xml (>= 0.5.2)
1313
method_source (0.8.2)
14+
minitest (5.0.8)
1415
multi_json (1.8.0)
1516
multi_xml (0.5.5)
1617
pry (0.9.12.2)
@@ -22,9 +23,14 @@ GEM
2223
rack
2324
rack-test (0.6.2)
2425
rack (>= 1.0)
26+
rake (0.9.6)
2527
redis (3.0.4)
2628
redis-namespace (1.3.1)
2729
redis (~> 3.0.0)
30+
simplecov (0.7.1)
31+
multi_json (~> 1.0)
32+
simplecov-html (~> 0.7.1)
33+
simplecov-html (0.7.1)
2834
sinatra (1.4.3)
2935
rack (~> 1.4)
3036
rack-protection (~> 1.4)
@@ -49,9 +55,12 @@ PLATFORMS
4955
DEPENDENCIES
5056
haml
5157
httparty
58+
minitest
5259
pry
60+
rake
5361
redis
5462
redis-namespace
63+
simplecov
5564
sinatra
5665
sinatra-contrib
5766
thin

Rakefile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
require 'rake/testtask'
2+
3+
Rake::TestTask.new do |t|
4+
t.libs.push("lib", "test")
5+
t.test_files = FileList['test/**/*_test.rb']
6+
end
7+
8+
task :default => :test
9+

lib/raphl/models/entry.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def self.all(raffle)
2727
def self.key(subkey = nil)
2828
key = "entries"
2929
key << ":#{ subkey }" if subkey
30+
key
3031
end
3132

3233
def self.redis

test/minitest_helper.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
require "bundler"
2+
require "simplecov"
3+
SimpleCov.start do
4+
add_filter "/test/"
5+
add_filter "/vendor/"
6+
end
7+
8+
Bundler.require
9+
10+
require "minitest"
11+
require "minitest/autorun"
12+
require "minitest/mock"
13+
require "minitest/spec"
14+
15+
require "raphl"
16+
17+
$redis.flushdb
18+

test/raphl/models/entry_test.rb

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
require "minitest_helper"
2+
3+
describe Raphl::Entry do
4+
5+
describe "the Raphl::Entry class" do
6+
it "should instantiate" do
7+
Raphl::Entry.new.must_be_instance_of Raphl::Entry
8+
end
9+
10+
it "should have a base key" do
11+
Raphl::Entry.key.must_equal "entries"
12+
end
13+
14+
it "should allow a subkey" do
15+
Raphl::Entry.key("subkey").must_equal "entries:subkey"
16+
end
17+
18+
it "should grab all entries for a raffle" do
19+
$redis.sadd("entries:entry_test", "entry1")
20+
$redis.sadd("entries:entry_test", "entry2")
21+
22+
entries = Raphl::Entry.all("entry_test")
23+
entries.must_include("entry1")
24+
entries.must_include("entry2")
25+
end
26+
27+
it "should select an entry at random" do
28+
$redis.sadd("entries:entry_test", "entry1")
29+
$redis.sadd("entries:entry_test", "entry2")
30+
31+
entries = Raphl::Entry.all("entry_test")
32+
Raphl::TrueRandom.stub :select, entries.first do
33+
Raphl::Entry.select(entries).must_equal entries.first
34+
end
35+
end
36+
end
37+
38+
describe "a Raphl::Entry instance" do
39+
before do
40+
@entry = Raphl::Entry.new({
41+
42+
raffle: "entry_test",
43+
terms: true
44+
})
45+
end
46+
47+
it "should have a key for the raffle" do
48+
@entry.key.must_equal("entries:entry_test")
49+
end
50+
51+
it "should be valid" do
52+
@entry.valid?.must_equal true
53+
end
54+
55+
it "should save to redis" do
56+
@entry.save
57+
Raphl::Entry.all(@entry.raffle).must_include(@entry.email)
58+
end
59+
end
60+
61+
end

test/raphl/true_random_test.rb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
require "minitest_helper"
2+
3+
describe Raphl::TrueRandom do
4+
5+
before do
6+
$redis.sadd("entries:true_random_test", "[email protected]")
7+
$redis.sadd("entries:true_random_test", "[email protected]")
8+
$redis.sadd("entries:true_random_test", "[email protected]")
9+
$redis.sadd("entries:true_random_test", "[email protected]")
10+
11+
@entries = Raphl::Entry.all("entry_test")
12+
end
13+
14+
it "should select an item from a collection at random" do
15+
HTTParty.stub :get, "1" do
16+
Raphl::TrueRandom.select(@entries).must_equal(@entries[1])
17+
end
18+
end
19+
20+
it "should have a fallback method in case random.org is down or the request fails" do
21+
module HTTParty
22+
def self.get(*args)
23+
raise SocketError
24+
end
25+
end
26+
27+
Random.stub :rand, 2 do
28+
Raphl::TrueRandom.select(@entries).must_equal(@entries[2])
29+
end
30+
end
31+
end
32+

0 commit comments

Comments
 (0)