wicoris-postman 0.10.0 → 0.11.0
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/features/step_definitions/copy_steps.rb +1 -2
- data/features/step_definitions/fax_steps.rb +1 -2
- data/lib/wicoris/postman/copier.rb +0 -6
- data/lib/wicoris/postman/fax_machine.rb +0 -5
- data/lib/wicoris/postman/job.rb +35 -20
- data/lib/wicoris/postman/version.rb +1 -1
- data/spec/wicoris/postman/job_spec.rb +46 -28
- metadata +31 -31
@@ -13,12 +13,6 @@ module Wicoris
|
|
13
13
|
# Copy letter to destination.
|
14
14
|
def run
|
15
15
|
FileUtils.cp(source, destination, :noop => (@opts[:noop] == true))
|
16
|
-
if @logger
|
17
|
-
msg = @job.to_hash
|
18
|
-
msg[:destination] = destination
|
19
|
-
msg[:message] = 'Letter delivered :-)'
|
20
|
-
@logger.info(msg)
|
21
|
-
end
|
22
16
|
end
|
23
17
|
|
24
18
|
private
|
@@ -17,11 +17,6 @@ module Wicoris
|
|
17
17
|
# Actually fax the letter.
|
18
18
|
def run
|
19
19
|
system(command) unless @opts[:noop]
|
20
|
-
if @logger
|
21
|
-
msg = @job.to_hash
|
22
|
-
msg[:message] = 'Letter delivered :-)'
|
23
|
-
@logger.info(msg)
|
24
|
-
end
|
25
20
|
end
|
26
21
|
|
27
22
|
# @returns [String] Validated phone number.
|
data/lib/wicoris/postman/job.rb
CHANGED
@@ -12,10 +12,7 @@ module Wicoris
|
|
12
12
|
# @returns [String] Path to actual letter
|
13
13
|
def letter
|
14
14
|
if not File.exists?(file)
|
15
|
-
|
16
|
-
msg[:message] = 'Letter does not exist'
|
17
|
-
@opts[:logger].error(msg) if @opts[:logger]
|
18
|
-
raise "Letter does not exist: #{file}" # TODO: DRY!
|
15
|
+
fail "Letter does not exist: #{file}"
|
19
16
|
else
|
20
17
|
file
|
21
18
|
end
|
@@ -23,17 +20,16 @@ module Wicoris
|
|
23
20
|
|
24
21
|
# Process the job
|
25
22
|
def process
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
delivery_method.new(self, @opts).run
|
23
|
+
deliver
|
24
|
+
logger.info :message => 'Letter delivered :-D',
|
25
|
+
:patient => patient,
|
26
|
+
:job => @json_file
|
27
|
+
rescue => e
|
28
|
+
logger.error :message => 'Letter not delivered ;-(',
|
29
|
+
:patient => patient,
|
30
|
+
:reason => e.message,
|
31
|
+
:job => @json_file
|
32
|
+
logger.debug e
|
37
33
|
end
|
38
34
|
|
39
35
|
# Remove the JSON file.
|
@@ -44,16 +40,35 @@ module Wicoris
|
|
44
40
|
:json_file => @json_file
|
45
41
|
end
|
46
42
|
|
47
|
-
# @returns [
|
48
|
-
def
|
49
|
-
|
50
|
-
|
43
|
+
# @returns [String] Patient's display name.
|
44
|
+
def patient
|
45
|
+
format('%s, %s (%s)',
|
46
|
+
patient_last_name,
|
47
|
+
patient_first_name,
|
48
|
+
patient_date_of_birth)
|
51
49
|
rescue
|
52
|
-
|
50
|
+
'Unknown'
|
53
51
|
end
|
54
52
|
|
55
53
|
private
|
56
54
|
|
55
|
+
def deliver
|
56
|
+
delivery_machine.new(self, @opts).run
|
57
|
+
end
|
58
|
+
|
59
|
+
# How we gonna deliver the letter?
|
60
|
+
def delivery_machine
|
61
|
+
# NOTE: `Object#type` is an existing method in Ruby 1.8.7, therefore we
|
62
|
+
# have to fetch the attribute from the JSON hash.
|
63
|
+
case json['type']
|
64
|
+
when 'fax' then FaxMachine
|
65
|
+
when 'copy' then Copier
|
66
|
+
# TODO: Handle unknown case!
|
67
|
+
#else
|
68
|
+
# ...
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
57
72
|
# Parse and return the JSON.
|
58
73
|
# @returns [Hash] Cached JSON.
|
59
74
|
def json
|
@@ -66,6 +66,39 @@ module Wicoris::Postman
|
|
66
66
|
end
|
67
67
|
|
68
68
|
describe '#process' do
|
69
|
+
let(:logger) { double('logger') }
|
70
|
+
let(:patient) { 'Norris, Chuck (1940-03-10)' }
|
71
|
+
|
72
|
+
before do
|
73
|
+
job.stub(:logger).and_return(logger)
|
74
|
+
job.stub(:patient).and_return(patient)
|
75
|
+
logger.stub(:info) #todo: remove
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'without errors' do
|
79
|
+
it 'logs a successful delivery' do
|
80
|
+
job.stub(:deliver)
|
81
|
+
logger.should_receive(:info).
|
82
|
+
with :message => 'Letter delivered :-D',
|
83
|
+
:patient => patient,
|
84
|
+
:job => 'example.json'
|
85
|
+
job.process
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'with errors' do
|
90
|
+
it 'logs a failed delivery' do
|
91
|
+
job.stub(:deliver).and_return { fail 'BOOOM!' }
|
92
|
+
logger.should_receive(:error).
|
93
|
+
with :message => 'Letter not delivered ;-(',
|
94
|
+
:patient => patient,
|
95
|
+
:reason => 'BOOOM!',
|
96
|
+
:job => 'example.json'
|
97
|
+
logger.should_receive(:debug)
|
98
|
+
job.process
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
69
102
|
context 'when fax' do
|
70
103
|
it 'faxes the letter' do
|
71
104
|
job.should_receive(:json).and_return('type' => 'fax')
|
@@ -87,6 +120,19 @@ module Wicoris::Postman
|
|
87
120
|
end
|
88
121
|
end
|
89
122
|
|
123
|
+
describe '#patient' do
|
124
|
+
it 'returns the patient display name' do
|
125
|
+
job.stub(:patient_first_name).and_return('Chuck')
|
126
|
+
job.stub(:patient_last_name).and_return('Norris')
|
127
|
+
job.stub(:patient_date_of_birth).and_return('1940-03-10')
|
128
|
+
expect(job.patient).to eq 'Norris, Chuck (1940-03-10)'
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'returns unknown when patient infos are missing' do
|
132
|
+
expect(job.patient).to eq 'Unknown'
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
90
136
|
describe '#patient_first_name' do
|
91
137
|
it 'returns the patients first name' do
|
92
138
|
job.stub(:json).and_return('patient_first_name' => 'Chuck')
|
@@ -150,33 +196,5 @@ module Wicoris::Postman
|
|
150
196
|
end
|
151
197
|
end
|
152
198
|
end
|
153
|
-
|
154
|
-
describe '#to_hash' do
|
155
|
-
let(:job) { Job.new('example.json') }
|
156
|
-
|
157
|
-
context 'with parsable JSON' do
|
158
|
-
before do
|
159
|
-
job.stub(:json).and_return({'chunky' => 'bacon'})
|
160
|
-
end
|
161
|
-
|
162
|
-
it 'includes all JSON attributes' do
|
163
|
-
expect(job.to_hash['chunky']).to eq 'bacon'
|
164
|
-
end
|
165
|
-
|
166
|
-
it 'includes the JSON filename' do
|
167
|
-
expect(job.to_hash['json_file']).to eq 'example.json'
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
context 'with unparsable JSON' do
|
172
|
-
before do
|
173
|
-
job.stub(:json).and_return { raise JSON::ParserError, 'Shitty JSON' }
|
174
|
-
end
|
175
|
-
|
176
|
-
it 'includes only the JSON filename' do
|
177
|
-
expect(job.to_hash).to eq({'json_file' => 'example.json'})
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
181
199
|
end
|
182
200
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wicoris-postman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 51
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 11
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.11.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Bjo\xCC\x88rn Albers"
|
@@ -19,7 +19,7 @@ date: 2014-03-06 00:00:00 +01:00
|
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
23
|
none: false
|
24
24
|
requirements:
|
25
25
|
- - ~>
|
@@ -29,12 +29,12 @@ dependencies:
|
|
29
29
|
- 1
|
30
30
|
- 8
|
31
31
|
version: "1.8"
|
32
|
+
prerelease: false
|
33
|
+
requirement: *id001
|
32
34
|
type: :runtime
|
33
35
|
name: json_pure
|
34
|
-
version_requirements: *id001
|
35
|
-
prerelease: false
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
|
37
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
38
38
|
none: false
|
39
39
|
requirements:
|
40
40
|
- - ~>
|
@@ -44,12 +44,12 @@ dependencies:
|
|
44
44
|
- 0
|
45
45
|
- 6
|
46
46
|
version: "0.6"
|
47
|
+
prerelease: false
|
48
|
+
requirement: *id002
|
47
49
|
type: :runtime
|
48
50
|
name: cabin
|
49
|
-
version_requirements: *id002
|
50
|
-
prerelease: false
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
|
-
|
52
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ~>
|
@@ -59,12 +59,12 @@ dependencies:
|
|
59
59
|
- 1
|
60
60
|
- 4
|
61
61
|
version: "1.4"
|
62
|
+
prerelease: false
|
63
|
+
requirement: *id003
|
62
64
|
type: :runtime
|
63
65
|
name: mixlib-cli
|
64
|
-
version_requirements: *id003
|
65
|
-
prerelease: false
|
66
66
|
- !ruby/object:Gem::Dependency
|
67
|
-
|
67
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
68
68
|
none: false
|
69
69
|
requirements:
|
70
70
|
- - ~>
|
@@ -74,12 +74,12 @@ dependencies:
|
|
74
74
|
- 2
|
75
75
|
- 1
|
76
76
|
version: "2.1"
|
77
|
+
prerelease: false
|
78
|
+
requirement: *id004
|
77
79
|
type: :runtime
|
78
80
|
name: mixlib-config
|
79
|
-
version_requirements: *id004
|
80
|
-
prerelease: false
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
|
-
|
82
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -89,12 +89,12 @@ dependencies:
|
|
89
89
|
- 0
|
90
90
|
- 3
|
91
91
|
version: "0.3"
|
92
|
+
prerelease: false
|
93
|
+
requirement: *id005
|
92
94
|
type: :runtime
|
93
95
|
name: jlo
|
94
|
-
version_requirements: *id005
|
95
|
-
prerelease: false
|
96
96
|
- !ruby/object:Gem::Dependency
|
97
|
-
|
97
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
98
98
|
none: false
|
99
99
|
requirements:
|
100
100
|
- - ~>
|
@@ -104,12 +104,12 @@ dependencies:
|
|
104
104
|
- 1
|
105
105
|
- 3
|
106
106
|
version: "1.3"
|
107
|
+
prerelease: false
|
108
|
+
requirement: *id006
|
107
109
|
type: :development
|
108
110
|
name: bundler
|
109
|
-
version_requirements: *id006
|
110
|
-
prerelease: false
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
|
112
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
113
113
|
none: false
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -118,12 +118,12 @@ dependencies:
|
|
118
118
|
segments:
|
119
119
|
- 0
|
120
120
|
version: "0"
|
121
|
+
prerelease: false
|
122
|
+
requirement: *id007
|
121
123
|
type: :development
|
122
124
|
name: rake
|
123
|
-
version_requirements: *id007
|
124
|
-
prerelease: false
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
|
126
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -133,12 +133,12 @@ dependencies:
|
|
133
133
|
- 0
|
134
134
|
- 5
|
135
135
|
version: "0.5"
|
136
|
+
prerelease: false
|
137
|
+
requirement: *id008
|
136
138
|
type: :development
|
137
139
|
name: aruba
|
138
|
-
version_requirements: *id008
|
139
|
-
prerelease: false
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
|
-
|
141
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
142
142
|
none: false
|
143
143
|
requirements:
|
144
144
|
- - ~>
|
@@ -148,10 +148,10 @@ dependencies:
|
|
148
148
|
- 1
|
149
149
|
- 2
|
150
150
|
version: "1.2"
|
151
|
+
prerelease: false
|
152
|
+
requirement: *id009
|
151
153
|
type: :development
|
152
154
|
name: aruba-doubles
|
153
|
-
version_requirements: *id009
|
154
|
-
prerelease: false
|
155
155
|
description: Deliver letters from WiCoRIS
|
156
156
|
email:
|
157
157
|
- bjoernalbers@googlemail.com
|
@@ -223,7 +223,7 @@ rubyforge_project:
|
|
223
223
|
rubygems_version: 1.6.2
|
224
224
|
signing_key:
|
225
225
|
specification_version: 3
|
226
|
-
summary: wicoris-postman-0.
|
226
|
+
summary: wicoris-postman-0.11.0
|
227
227
|
test_files:
|
228
228
|
- features/copy.feature
|
229
229
|
- features/fax.feature
|