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
         |