aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/initializers/health_checks.rb24
-rw-r--r--lib/health_checks/checks/days_ago_check.rb28
-rw-r--r--lib/health_checks/checks/incoming_message_check.rb12
-rw-r--r--lib/health_checks/checks/outgoing_message_check.rb12
-rw-r--r--lib/health_checks/checks/user_signup_check.rb12
-rw-r--r--spec/lib/health_checks/checks/days_ago_check_spec.rb66
-rw-r--r--spec/lib/health_checks/checks/incoming_message_check_spec.rb26
-rw-r--r--spec/lib/health_checks/checks/outgoing_message_check_spec.rb32
-rw-r--r--spec/lib/health_checks/checks/user_signup_check_spec.rb26
9 files changed, 115 insertions, 123 deletions
diff --git a/config/initializers/health_checks.rb b/config/initializers/health_checks.rb
index e9f8ced9f..7fd1d3dda 100644
--- a/config/initializers/health_checks.rb
+++ b/config/initializers/health_checks.rb
@@ -1,5 +1,23 @@
Rails.application.config.after_initialize do
- HealthChecks.add HealthChecks::Checks::IncomingMessageCheck.new
- HealthChecks.add HealthChecks::Checks::OutgoingMessageCheck.new
- HealthChecks.add HealthChecks::Checks::UserSignupCheck.new
+ user_last_created = HealthChecks::Checks::DaysAgoCheck.new(
+ :failure_message => _('The last user was created over a day ago'),
+ :success_message => _('The last user was created in the last day')) do
+ User.last.created_at
+ end
+
+ incoming_message_last_created = HealthChecks::Checks::DaysAgoCheck.new(
+ :failure_message => _('The last incoming message was created over a day ago'),
+ :success_message => _('The last incoming message was created in the last day')) do
+ IncomingMessage.last.created_at
+ end
+
+ outgoing_message_last_created = HealthChecks::Checks::DaysAgoCheck.new(
+ :failure_message => _('The last outgoing message was created over a day ago'),
+ :success_message => _('The last outgoing message was created in the last day')) do
+ OutgoingMessage.last.created_at
+ end
+
+ HealthChecks.add user_last_created
+ HealthChecks.add incoming_message_last_created
+ HealthChecks.add outgoing_message_last_created
end
diff --git a/lib/health_checks/checks/days_ago_check.rb b/lib/health_checks/checks/days_ago_check.rb
new file mode 100644
index 000000000..793fff586
--- /dev/null
+++ b/lib/health_checks/checks/days_ago_check.rb
@@ -0,0 +1,28 @@
+module HealthChecks
+ module Checks
+ class DaysAgoCheck
+ include HealthChecks::HealthCheckable
+
+ attr_reader :days, :subject
+
+ def initialize(args = {}, &block)
+ @days = args.fetch(:days) { 1 }
+ @subject = block
+ super(args)
+ end
+
+ def failure_message
+ "#{ super }: #{ subject.call }"
+ end
+
+ def success_message
+ "#{ super }: #{ subject.call }"
+ end
+
+ def check
+ subject.call >= days.days.ago
+ end
+
+ end
+ end
+end
diff --git a/lib/health_checks/checks/incoming_message_check.rb b/lib/health_checks/checks/incoming_message_check.rb
deleted file mode 100644
index fb6d36e25..000000000
--- a/lib/health_checks/checks/incoming_message_check.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-module HealthChecks
- module Checks
- class IncomingMessageCheck
- include HealthChecks::HealthCheckable
-
- def check
- IncomingMessage.last.created_at >= 1.day.ago
- end
-
- end
- end
-end
diff --git a/lib/health_checks/checks/outgoing_message_check.rb b/lib/health_checks/checks/outgoing_message_check.rb
deleted file mode 100644
index 26feb538b..000000000
--- a/lib/health_checks/checks/outgoing_message_check.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-module HealthChecks
- module Checks
- class OutgoingMessageCheck
- include HealthChecks::HealthCheckable
-
- def check
- OutgoingMessage.last.created_at >= 1.day.ago
- end
-
- end
- end
-end
diff --git a/lib/health_checks/checks/user_signup_check.rb b/lib/health_checks/checks/user_signup_check.rb
deleted file mode 100644
index 0c775332c..000000000
--- a/lib/health_checks/checks/user_signup_check.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-module HealthChecks
- module Checks
- class UserSignupCheck
- include HealthChecks::HealthCheckable
-
- def check
- User.last.created_at >= 1.day.ago
- end
-
- end
- end
-end
diff --git a/spec/lib/health_checks/checks/days_ago_check_spec.rb b/spec/lib/health_checks/checks/days_ago_check_spec.rb
new file mode 100644
index 000000000..33b4642cd
--- /dev/null
+++ b/spec/lib/health_checks/checks/days_ago_check_spec.rb
@@ -0,0 +1,66 @@
+require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
+
+describe HealthChecks::Checks::DaysAgoCheck do
+ include HealthChecks::Checks
+
+ it { should be_kind_of(HealthChecks::HealthCheckable) }
+
+ it 'defaults to comparing to one day ago' do
+ check = HealthChecks::Checks::DaysAgoCheck.new
+ expect(check.days).to eq(1)
+ end
+
+ it 'accepts a custom number of days' do
+ check = HealthChecks::Checks::DaysAgoCheck.new(:days => 4)
+ expect(check.days).to eq(4)
+ end
+
+ describe :check do
+
+ it 'is successful if the subject is in the last day' do
+ check = HealthChecks::Checks::DaysAgoCheck.new { Time.now }
+ expect(check.check).to be_true
+ end
+
+ it 'fails if the subject is over a day ago' do
+ check = HealthChecks::Checks::DaysAgoCheck.new { 2.days.ago }
+ expect(check.check).to be_false
+ end
+
+ end
+
+ describe :failure_message do
+
+ it 'includes the check subject in the default message' do
+ subject = 2.days.ago
+ check = HealthChecks::Checks::DaysAgoCheck.new { subject }
+ expect(check.failure_message).to include(subject.to_s)
+ end
+
+ it 'includes the check subject in a custom message' do
+ params = { :failure_message => 'This check failed' }
+ subject = 2.days.ago
+ check = HealthChecks::Checks::DaysAgoCheck.new(params) { subject }
+ expect(check.failure_message).to include(subject.to_s)
+ end
+
+ end
+
+ describe :success_message do
+
+ it 'includes the check subject in the default message' do
+ subject = Time.now
+ check = HealthChecks::Checks::DaysAgoCheck.new { subject }
+ expect(check.failure_message).to include(subject.to_s)
+ end
+
+ it 'includes the check subject in a custom message' do
+ params = { :success_message => 'This check succeeded' }
+ subject = Time.now
+ check = HealthChecks::Checks::DaysAgoCheck.new(params) { subject }
+ expect(check.success_message).to include(subject.to_s)
+ end
+
+ end
+
+end
diff --git a/spec/lib/health_checks/checks/incoming_message_check_spec.rb b/spec/lib/health_checks/checks/incoming_message_check_spec.rb
deleted file mode 100644
index 8d6105925..000000000
--- a/spec/lib/health_checks/checks/incoming_message_check_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
-
-describe HealthChecks::Checks::IncomingMessageCheck do
- include HealthChecks::Checks
-
- it { should be_kind_of(HealthChecks::HealthCheckable) }
-
- before(:each) do
- @check = HealthChecks::Checks::IncomingMessageCheck.new
- end
-
- describe :check do
-
- it 'is successful if the last incoming message was created in the last day' do
- FactoryGirl.create(:incoming_message)
- expect(@check.check).to be_true
- end
-
- it 'fails if the last incoming message was created over a day ago' do
- FactoryGirl.create(:incoming_message, :created_at => 28.days.ago)
- expect(@check.check).to be_false
- end
-
- end
-
-end \ No newline at end of file
diff --git a/spec/lib/health_checks/checks/outgoing_message_check_spec.rb b/spec/lib/health_checks/checks/outgoing_message_check_spec.rb
deleted file mode 100644
index 74c0f30b9..000000000
--- a/spec/lib/health_checks/checks/outgoing_message_check_spec.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
-
-describe HealthChecks::Checks::OutgoingMessageCheck do
- include HealthChecks::Checks
-
- it { should be_kind_of(HealthChecks::HealthCheckable) }
-
- before(:each) do
- @check = HealthChecks::Checks::OutgoingMessageCheck.new
- end
-
- describe :check do
-
- it 'is successful if the last incoming message was created in the last day' do
- FactoryGirl.create(:info_request)
- expect(@check.check).to be_true
- end
-
- it 'fails if the last incoming message was created over a day ago' do
- params = { :status => 'ready',
- :message_type => 'followup',
- :body => 'I want a review',
- :what_doing => 'internal_review',
- :info_request => FactoryGirl.create(:info_request),
- :created_at => 30.days.ago }
- FactoryGirl.create(:outgoing_message, params)
- expect(@check.check).to be_false
- end
-
- end
-
-end \ No newline at end of file
diff --git a/spec/lib/health_checks/checks/user_signup_check_spec.rb b/spec/lib/health_checks/checks/user_signup_check_spec.rb
deleted file mode 100644
index b18684454..000000000
--- a/spec/lib/health_checks/checks/user_signup_check_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
-
-describe HealthChecks::Checks::UserSignupCheck do
- include HealthChecks::Checks
-
- it { should be_kind_of(HealthChecks::HealthCheckable) }
-
- before(:each) do
- @check = HealthChecks::Checks::UserSignupCheck.new
- end
-
- describe :check do
-
- it 'is successful if the last user was created in the last day' do
- FactoryGirl.create(:user)
- expect(@check.check).to be_true
- end
-
- it 'fails if the last user was created over a day ago' do
- FactoryGirl.create(:user, :created_at => 28.days.ago)
- expect(@check.check).to be_false
- end
-
- end
-
-end \ No newline at end of file