aboutsummaryrefslogtreecommitdiffstats
path: root/spec/lib/health_checks/health_checkable_spec.rb
blob: abfeb5c2167231f6f27946bde584dd6b26bfef30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')

describe HealthChecks::HealthCheckable do

    before(:each) do
        class MockCheck
            include HealthChecks::HealthCheckable
        end
        @subject = MockCheck.new
    end

    describe :initialize do

        it 'allows a custom failure message to be set' do
            @subject = MockCheck.new(:failure_message => 'F')
            expect(@subject.failure_message).to eq('F')
        end

        it 'allows a custom success message to be set' do
            @subject = MockCheck.new(:success_message => 'S')
            expect(@subject.success_message).to eq('S')
        end

    end

    describe :name do

        it 'returns the name of the check' do
            expect(@subject.name).to eq('MockCheck')
        end

    end

    describe :check do

        it 'is intended to be overridden by the includer' do
            expect{ @subject.check }.to raise_error(NotImplementedError)
        end

    end

    describe :ok? do

        it 'returns true if the check was successful' do
            @subject.stub(:check => true)
            expect(@subject.ok?).to be_true
        end

        it 'returns false if the check failed' do
            @subject.stub(:check => false)
            expect(@subject.ok?).to be_false
        end

    end

    describe :failure_message do

        it 'returns a default message if one has not been set' do
            expect(@subject.failure_message).to eq('Failed')
        end

    end

    describe :failure_message= do

        it 'allows a custom failure message to be set' do
            @subject.failure_message = 'F'
            expect(@subject.failure_message).to eq('F')
        end

    end

    describe :success_message do

        it 'returns a default message if one has not been set' do
            expect(@subject.success_message).to eq('Success')
        end

    end

    describe :success_message= do

        it 'allows a custom success message to be set' do
            @subject.success_message = 'S'
            expect(@subject.success_message).to eq('S')
        end

    end

    describe :message do

        context 'if the check succeeds' do

            before(:each) do
                @subject.stub(:check => true)
            end

            it 'returns the default success message' do
                expect(@subject.message).to eq('Success')
            end

            it 'returns a custom success message if one has been set' do
                @subject.success_message = 'Custom Success'
                expect(@subject.message).to eq('Custom Success')
            end

        end

        context 'if the check fails' do

            before(:each) do
                @subject.stub(:check => false)
            end

            it 'returns the default failure message' do
                expect(@subject.message).to eq('Failed')
            end

            it 'returns a custom failure message if one has been set' do
                @subject.failure_message = 'Custom Failed'
                expect(@subject.message).to eq('Custom Failed')
            end

        end

    end

end