Skip to content

Commit

Permalink
Rename tests to match class names, add tests for web.
Browse files Browse the repository at this point in the history
  • Loading branch information
nickelser committed Jun 28, 2016
1 parent 69208d6 commit e766b52
Show file tree
Hide file tree
Showing 12 changed files with 127 additions and 49 deletions.
7 changes: 4 additions & 3 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
require "bundler/gem_tasks"
require "rake/testtask"

task default: :test
Rake::TestTask.new do |t|
Rake::TestTask.new(:test) do |t|
t.libs << "test"
t.pattern = "test/**/*_test.rb"
t.pattern = "test/**/test_*.rb"
end

task default: :test
4 changes: 4 additions & 0 deletions lib/zhong/scheduler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ def stop
@stop = true
end

def find_by_name(job_name)
@jobs[Digest::SHA256.hexdigest(job_name)]
end

private

TRAPPED_SIGNALS = %w(QUIT INT TERM).freeze
Expand Down
1 change: 0 additions & 1 deletion lib/zhong/web.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# frozen_string_literal: true
require "tilt/erubis"
require "erb"
require "sinatra/base"

Expand Down
32 changes: 32 additions & 0 deletions test/helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)

if ENV["CODECLIMATE_REPO_TOKEN"]
require "codeclimate-test-reporter"
CodeClimate::TestReporter.start
end

require "zhong"
require "minitest/autorun"
require "rack/test"

ENV["RACK_ENV"] = ENV["RAILS_ENV"] = "test"

def assert_contains(expected_substring, string, *args)
assert string.include?(expected_substring), *args
end

def test_logger
@logger ||= begin
l = Logger.new(STDOUT)
l.level = Logger::ERROR
l
end
end

def test_default_config
@default_config ||= {
redis: Redis.new(url: ENV["REDIS_URL"] || "redis://localhost/13"),
logger: test_logger,
long_running_timeout: 10.seconds
}
end
2 changes: 1 addition & 1 deletion test/at_test.rb → test/test_at.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require "test_helper"
require_relative "helper"

# Many At tests lifted from Clockwork (thanks Clockwork!)
class TestAt < Minitest::Test
Expand Down
2 changes: 1 addition & 1 deletion test/every_test.rb → test/test_every.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require "test_helper"
require_relative "helper"

class TestEvery < Minitest::Test
def time_in_day(hour, minute, day = 0, sec = 0)
Expand Down
11 changes: 0 additions & 11 deletions test/test_helper.rb

This file was deleted.

26 changes: 5 additions & 21 deletions test/job_test.rb → test/test_job.rb
Original file line number Diff line number Diff line change
@@ -1,24 +1,8 @@
require "test_helper"
require_relative "helper"

class TestJob < Minitest::Test
def default_config
@default_config ||= {
redis: Redis.new,
logger: logger,
long_running_timeout: 5.minutes
}
end

def logger
@logger ||= begin
l = Logger.new(STDOUT)
l.level = Logger::UNKNOWN
l
end
end

def test_initialize
job = Zhong::Job.new("test_initialize", {at: "12:00"}.merge(default_config))
job = Zhong::Job.new("test_initialize", {at: "12:00"}.merge(test_default_config))

assert job
assert !job.running?
Expand All @@ -28,14 +12,14 @@ def test_initialize
def test_should_run
sleep 1

job = Zhong::Job.new("test_should_run", {every: 1.second}.merge(default_config))
job = Zhong::Job.new("test_should_run", {every: 1.second}.merge(test_default_config))

assert_equal true, job.run?
end

def test_run
success_counter = Queue.new
job = Zhong::Job.new("test_run", {every: 1.second}.merge(default_config)) { success_counter << 1 }
job = Zhong::Job.new("test_run", {every: 1.second}.merge(test_default_config)) { success_counter << 1 }
now = Time.now

assert_equal 0, success_counter.size
Expand All @@ -47,7 +31,7 @@ def test_run

def test_disable
success_counter = Queue.new
job = Zhong::Job.new("test_disable", {every: 1.second}.merge(default_config)) { success_counter << 1 }
job = Zhong::Job.new("test_disable", {every: 1.second}.merge(test_default_config)) { success_counter << 1 }
now = Time.now

job.disable
Expand Down
2 changes: 1 addition & 1 deletion test/library_test.rb → test/test_library.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require "test_helper"
require_relative "helper"

class TestLibrary < Minitest::Test
def test_that_it_has_a_version_number
Expand Down
12 changes: 2 additions & 10 deletions test/scheduler_test.rb → test/test_scheduler.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,11 @@
require "test_helper"
require_relative "helper"

class TestScheduler < Minitest::Test
def logger
@logger ||= begin
l = Logger.new(STDOUT)
l.level = Logger::UNKNOWN
l
end
end

def test_scheduler
test_one_counter = 0
test_two_counter = 0

Zhong.logger = logger
Zhong.logger = test_logger

Zhong.schedule do
every(10.seconds, "test_one") { test_one_counter += 1 }
Expand Down
73 changes: 73 additions & 0 deletions test/test_web.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
require_relative "helper"
require "zhong/web"
require "tilt/erubis"

class TestWeb < Minitest::Test
include Rack::Test::Methods

def app
Zhong::Web
end

def test_index
get "/"
assert last_response.ok?
assert_contains "<title>[TEST] Zhong</title>", last_response.body
assert_contains Zhong::VERSION, last_response.body
end

def test_index_job
Zhong.logger = test_logger

Zhong.schedule do
every(10.minutes, "test_web_job") { nil }
end

get "/"
assert last_response.ok?
assert_contains "test_web_job", last_response.body
assert_contains "every 10 minutes", last_response.body
end

def test_disable_job
Zhong.logger = test_logger

Zhong.schedule do
every(30.seconds, "test_disable_web_job") { nil }
end

job = Zhong.scheduler.find_by_name("test_disable_web_job")

job.enable

assert_equal false, job.disabled?

post "/", "disable" => job.id
assert last_response.ok?
assert_contains "test_disable_web_job", last_response.body
assert_contains "every 30 seconds", last_response.body
assert_contains 'name="enable"', last_response.body
assert_equal true, job.disabled?
end

def test_enable_job
Zhong.logger = test_logger

Zhong.schedule do
every(12.hours, "test_enable_web_job") { nil }
end

job = Zhong.scheduler.find_by_name("test_enable_web_job")

job.disable

assert_equal true, job.disabled?

post "/", "enable" => job.id
assert last_response.ok?
assert_contains "test_enable_web_job", last_response.body
assert_contains "every 12 hours", last_response.body
assert_contains 'name="disable"', last_response.body
assert_equal false, job.disabled?
end
end
4 changes: 4 additions & 0 deletions zhong.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,8 @@ Gem::Specification.new do |spec|
spec.add_development_dependency "rubocop", "~> 0.30.0"
spec.add_development_dependency "minitest", "~> 5.5.0"
spec.add_development_dependency "codeclimate-test-reporter", "~> 0.4.7"
spec.add_development_dependency "sinatra", "~> 1.4", ">= 1.4.6"
spec.add_development_dependency "rack-test", "~> 0.6"
spec.add_development_dependency "tilt"
spec.add_development_dependency "erubis"
end

0 comments on commit e766b52

Please sign in to comment.