swissmedic-diff 0.2.0 → 0.2.1
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/Gemfile.lock +12 -11
 - data/History.txt +6 -0
 - data/lib/compatibility.rb +0 -17
 - data/lib/swissmedic-diff.rb +27 -25
 - data/lib/version.rb +1 -1
 - data/test/test_swissmedic-diff.rb +7 -17
 - metadata +2 -8
 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                swissmedic-diff (0.2. 
     | 
| 
      
 4 
     | 
    
         
            +
                swissmedic-diff (0.2.1)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  nokogiri
         
     | 
| 
       6 
6 
     | 
    
         
             
                  rubyXL (= 3.3.1)
         
     | 
| 
       7 
7 
     | 
    
         
             
                  rubyzip
         
     | 
| 
         @@ -12,14 +12,10 @@ GEM 
     | 
|
| 
       12 
12 
     | 
    
         
             
              specs:
         
     | 
| 
       13 
13 
     | 
    
         
             
                ansi (1.5.0)
         
     | 
| 
       14 
14 
     | 
    
         
             
                builder (3.2.2)
         
     | 
| 
      
 15 
     | 
    
         
            +
                byebug (4.0.5)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  columnize (= 0.9.0)
         
     | 
| 
       15 
17 
     | 
    
         
             
                coderay (1.1.0)
         
     | 
| 
       16 
18 
     | 
    
         
             
                columnize (0.9.0)
         
     | 
| 
       17 
     | 
    
         
            -
                debugger (1.6.8)
         
     | 
| 
       18 
     | 
    
         
            -
                  columnize (>= 0.3.1)
         
     | 
| 
       19 
     | 
    
         
            -
                  debugger-linecache (~> 1.2.0)
         
     | 
| 
       20 
     | 
    
         
            -
                  debugger-ruby_core_source (~> 1.3.5)
         
     | 
| 
       21 
     | 
    
         
            -
                debugger-linecache (1.2.0)
         
     | 
| 
       22 
     | 
    
         
            -
                debugger-ruby_core_source (1.3.8)
         
     | 
| 
       23 
19 
     | 
    
         
             
                hoe (3.13.1)
         
     | 
| 
       24 
20 
     | 
    
         
             
                  rake (>= 0.8, < 11.0)
         
     | 
| 
       25 
21 
     | 
    
         
             
                method_source (0.8.2)
         
     | 
| 
         @@ -36,9 +32,12 @@ GEM 
     | 
|
| 
       36 
32 
     | 
    
         
             
                  coderay (~> 1.1.0)
         
     | 
| 
       37 
33 
     | 
    
         
             
                  method_source (~> 0.8.1)
         
     | 
| 
       38 
34 
     | 
    
         
             
                  slop (~> 3.4)
         
     | 
| 
       39 
     | 
    
         
            -
                pry- 
     | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
       41 
     | 
    
         
            -
                  pry ( 
     | 
| 
      
 35 
     | 
    
         
            +
                pry-byebug (3.1.0)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  byebug (~> 4.0)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  pry (~> 0.10)
         
     | 
| 
      
 38 
     | 
    
         
            +
                pry-doc (0.8.0)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  pry (~> 0.9)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  yard (~> 0.8)
         
     | 
| 
       42 
41 
     | 
    
         
             
                rake (10.4.2)
         
     | 
| 
       43 
42 
     | 
    
         
             
                ruby-ole (1.2.11.8)
         
     | 
| 
       44 
43 
     | 
    
         
             
                ruby-progressbar (1.7.5)
         
     | 
| 
         @@ -49,6 +48,7 @@ GEM 
     | 
|
| 
       49 
48 
     | 
    
         
             
                slop (3.6.0)
         
     | 
| 
       50 
49 
     | 
    
         
             
                spreadsheet (1.0.3)
         
     | 
| 
       51 
50 
     | 
    
         
             
                  ruby-ole (>= 1.0)
         
     | 
| 
      
 51 
     | 
    
         
            +
                yard (0.8.7.6)
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
53 
     | 
    
         
             
            PLATFORMS
         
     | 
| 
       54 
54 
     | 
    
         
             
              ruby
         
     | 
| 
         @@ -57,7 +57,8 @@ DEPENDENCIES 
     | 
|
| 
       57 
57 
     | 
    
         
             
              hoe
         
     | 
| 
       58 
58 
     | 
    
         
             
              minitest
         
     | 
| 
       59 
59 
     | 
    
         
             
              minitest-reporters
         
     | 
| 
       60 
     | 
    
         
            -
              pry- 
     | 
| 
      
 60 
     | 
    
         
            +
              pry-byebug
         
     | 
| 
      
 61 
     | 
    
         
            +
              pry-doc
         
     | 
| 
       61 
62 
     | 
    
         
             
              rake
         
     | 
| 
       62 
63 
     | 
    
         
             
              swissmedic-diff!
         
     | 
| 
       63 
64 
     | 
    
         | 
    
        data/History.txt
    CHANGED
    
    | 
         @@ -1,3 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            === 0.2.1 / 06.07.2015
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * Fix problems comparing dates (using to_date.start)
         
     | 
| 
      
 4 
     | 
    
         
            +
            * Assume nothing has changed when comparing nil with an emtpy string
         
     | 
| 
      
 5 
     | 
    
         
            +
            * Revert nr of paramenters of diff method to previous version, to make oddb.org happy again
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       1 
7 
     | 
    
         
             
            === 0.2.0 / 03.07.2015
         
     | 
| 
       2 
8 
     | 
    
         | 
| 
       3 
9 
     | 
    
         
             
            * Abort if Swissmedic introduces incompatible header lines
         
     | 
    
        data/lib/compatibility.rb
    CHANGED
    
    | 
         @@ -21,23 +21,6 @@ module Spreadsheet 
     | 
|
| 
       21 
21 
     | 
    
         
             
                  end
         
     | 
| 
       22 
22 
     | 
    
         
             
                end
         
     | 
| 
       23 
23 
     | 
    
         
             
              end
         
     | 
| 
       24 
     | 
    
         
            -
              def Spreadsheet.date_cell(row, idx)
         
     | 
| 
       25 
     | 
    
         
            -
                if row.kind_of?(Spreadsheet::Excel::Row)
         
     | 
| 
       26 
     | 
    
         
            -
                  row.at(idx) && row.date(idx)
         
     | 
| 
       27 
     | 
    
         
            -
                else
         
     | 
| 
       28 
     | 
    
         
            -
                  data = row[idx]
         
     | 
| 
       29 
     | 
    
         
            -
                  if data.is_a?(RubyXL::Cell)
         
     | 
| 
       30 
     | 
    
         
            -
                    return data.value.respond_to?(:to_i) ? data.value.to_i : data.value
         
     | 
| 
       31 
     | 
    
         
            -
                    return data.value if data.value.is_a?(DateTime)
         
     | 
| 
       32 
     | 
    
         
            -
                    if data.value.class.to_s == 'DateTime'
         
     | 
| 
       33 
     | 
    
         
            -
                      puts "data is_a RubyXL::Cell and value #{data.value.class} is_a? Date #{data.value.is_a?(Date)} DateTime #{data.value.is_a?(DateTime)}"
         
     | 
| 
       34 
     | 
    
         
            -
                      return Date.new(1899,12,30)+data.to_date.value.to_i
         
     | 
| 
       35 
     | 
    
         
            -
                    else
         
     | 
| 
       36 
     | 
    
         
            -
                      return Date.new(1899,12,30)+data.value.to_i if data.is_a?(RubyXL::Cell)
         
     | 
| 
       37 
     | 
    
         
            -
                    end
         
     | 
| 
       38 
     | 
    
         
            -
                  end
         
     | 
| 
       39 
     | 
    
         
            -
                end
         
     | 
| 
       40 
     | 
    
         
            -
              end
         
     | 
| 
       41 
24 
     | 
    
         
             
            end
         
     | 
| 
       42 
25 
     | 
    
         | 
| 
       43 
26 
     | 
    
         
             
            module RubyXL
         
     | 
    
        data/lib/swissmedic-diff.rb
    CHANGED
    
    | 
         @@ -148,25 +148,25 @@ class SwissmedicDiff 
     | 
|
| 
       148 
148 
     | 
    
         
             
                  tbook = Spreadsheet.open(target)
         
     | 
| 
       149 
149 
     | 
    
         
             
                  idx, prr, prp = nil
         
     | 
| 
       150 
150 
     | 
    
         
             
                  multiples = {}
         
     | 
| 
       151 
     | 
    
         
            -
                  latest_keys = get_column_indices(Spreadsheet.open(latest)).keys
         
     | 
| 
       152 
     | 
    
         
            -
                  target_keys = get_column_indices(tbook).keys
         
     | 
| 
      
 151 
     | 
    
         
            +
                  @latest_keys = get_column_indices(Spreadsheet.open(latest)).keys
         
     | 
| 
      
 152 
     | 
    
         
            +
                  @target_keys = get_column_indices(tbook).keys
         
     | 
| 
       153 
153 
     | 
    
         
             
                  each_valid_row(tbook) { |row|
         
     | 
| 
       154 
     | 
    
         
            -
                    iksnr = cell(row, target_keys.index(:iksnr))
         
     | 
| 
       155 
     | 
    
         
            -
                    seqnr = cell(row, target_keys.index(:seqnr))
         
     | 
| 
       156 
     | 
    
         
            -
                    pacnr = cell(row, target_keys.index(:ikscd))
         
     | 
| 
      
 154 
     | 
    
         
            +
                    iksnr = cell(row, @target_keys.index(:iksnr))
         
     | 
| 
      
 155 
     | 
    
         
            +
                    seqnr = cell(row, @target_keys.index(:seqnr))
         
     | 
| 
      
 156 
     | 
    
         
            +
                    pacnr = cell(row, @target_keys.index(:ikscd))
         
     | 
| 
       157 
157 
     | 
    
         
             
                    (multiples[iksnr] ||= {})
         
     | 
| 
       158 
158 
     | 
    
         
             
                    if prr == iksnr && prp == pacnr
         
     | 
| 
       159 
159 
     | 
    
         
             
                      idx += 1
         
     | 
| 
       160 
160 
     | 
    
         
             
                    elsif previous = multiples[iksnr][pacnr]
         
     | 
| 
       161 
161 
     | 
    
         
             
                      prr = iksnr
         
     | 
| 
       162 
162 
     | 
    
         
             
                      prp = pacnr
         
     | 
| 
       163 
     | 
    
         
            -
                      idx = previous[target_keys.size].to_i + 1
         
     | 
| 
      
 163 
     | 
    
         
            +
                      idx = previous[@target_keys.size].to_i + 1
         
     | 
| 
       164 
164 
     | 
    
         
             
                    else
         
     | 
| 
       165 
165 
     | 
    
         
             
                      prr = iksnr
         
     | 
| 
       166 
166 
     | 
    
         
             
                      prp = pacnr
         
     | 
| 
       167 
167 
     | 
    
         
             
                      idx = 0
         
     | 
| 
       168 
168 
     | 
    
         
             
                    end
         
     | 
| 
       169 
     | 
    
         
            -
                    row[target_keys.size] = idx
         
     | 
| 
      
 169 
     | 
    
         
            +
                    row[@target_keys.size] = idx
         
     | 
| 
       170 
170 
     | 
    
         
             
                    (newest_rows[iksnr] ||= {})[pacnr] = row
         
     | 
| 
       171 
171 
     | 
    
         
             
                    multiples[iksnr][pacnr] = row
         
     | 
| 
       172 
172 
     | 
    
         
             
                    if(other = known_regs.delete([iksnr]))
         
     | 
| 
         @@ -176,12 +176,12 @@ class SwissmedicDiff 
     | 
|
| 
       176 
176 
     | 
    
         
             
                    end
         
     | 
| 
       177 
177 
     | 
    
         
             
                    known_seqs.delete([iksnr, seqnr])
         
     | 
| 
       178 
178 
     | 
    
         
             
                    if(other = known_pacs.delete([iksnr, pacnr, idx]))
         
     | 
| 
       179 
     | 
    
         
            -
                      flags = rows_diff(row,  
     | 
| 
      
 179 
     | 
    
         
            +
                      flags = rows_diff(row, other, ignore)
         
     | 
| 
       180 
180 
     | 
    
         
             
                      (changes[iksnr].concat flags).uniq!
         
     | 
| 
       181 
181 
     | 
    
         
             
                      updates.push row unless flags.empty?
         
     | 
| 
       182 
182 
     | 
    
         
             
                    else
         
     | 
| 
       183 
     | 
    
         
            -
                      replacements.store [ iksnr, seqnr, cell(row, target_keys.index(:size)),
         
     | 
| 
       184 
     | 
    
         
            -
                                            cell(row, target_keys.index(:unit)) ], row
         
     | 
| 
      
 183 
     | 
    
         
            +
                      replacements.store [ iksnr, seqnr, cell(row, @target_keys.index(:size)),
         
     | 
| 
      
 184 
     | 
    
         
            +
                                            cell(row, @target_keys.index(:unit)) ], row
         
     | 
| 
       185 
185 
     | 
    
         
             
                      flags = changes[iksnr]
         
     | 
| 
       186 
186 
     | 
    
         
             
                      flags.push(:sequence).uniq! unless(flags.include? :new)
         
     | 
| 
       187 
187 
     | 
    
         
             
                      news.push row
         
     | 
| 
         @@ -189,8 +189,8 @@ class SwissmedicDiff 
     | 
|
| 
       189 
189 
     | 
    
         
             
                  }
         
     | 
| 
       190 
190 
     | 
    
         
             
                  @diff.replacements = reps = {}
         
     | 
| 
       191 
191 
     | 
    
         
             
                  known_pacs.each { |(iksnr, pacnr), row|
         
     | 
| 
       192 
     | 
    
         
            -
                    key = [iksnr, '%02i' % cell(row, target_keys.index(:seqnr)).to_i,
         
     | 
| 
       193 
     | 
    
         
            -
                                  cell(row, target_keys.index(:size)), cell(row, target_keys.index(:unit))]
         
     | 
| 
      
 192 
     | 
    
         
            +
                    key = [iksnr, '%02i' % cell(row, @target_keys.index(:seqnr)).to_i,
         
     | 
| 
      
 193 
     | 
    
         
            +
                                  cell(row, @target_keys.index(:size)), cell(row, @target_keys.index(:unit))]
         
     | 
| 
       194 
194 
     | 
    
         
             
                    if(rep = replacements[key])
         
     | 
| 
       195 
195 
     | 
    
         
             
                      changes[iksnr].push :replaced_package
         
     | 
| 
       196 
196 
     | 
    
         
             
                      reps.store rep, pacnr
         
     | 
| 
         @@ -202,7 +202,7 @@ class SwissmedicDiff 
     | 
|
| 
       202 
202 
     | 
    
         
             
                    ## the keys in known_pacs don't include the sequence number (which
         
     | 
| 
       203 
203 
     | 
    
         
             
                    #  would prevent us from properly recognizing multi-sequence-Packages),
         
     | 
| 
       204 
204 
     | 
    
         
             
                    #  so we need complete the path to the package now
         
     | 
| 
       205 
     | 
    
         
            -
                    key[1,0] = '%02i' % cell(row, target_keys.index(:seqnr)).to_i
         
     | 
| 
      
 205 
     | 
    
         
            +
                    key[1,0] = '%02i' % cell(row, @target_keys.index(:seqnr)).to_i
         
     | 
| 
       206 
206 
     | 
    
         
             
                    key
         
     | 
| 
       207 
207 
     | 
    
         
             
                  }
         
     | 
| 
       208 
208 
     | 
    
         
             
                  @diff.sequence_deletions = known_seqs.keys
         
     | 
| 
         @@ -225,27 +225,27 @@ class SwissmedicDiff 
     | 
|
| 
       225 
225 
     | 
    
         
             
                end
         
     | 
| 
       226 
226 
     | 
    
         
             
                def _known_data(latest, known_regs, known_seqs, known_pacs, newest_rows)
         
     | 
| 
       227 
227 
     | 
    
         
             
                  lbook = Spreadsheet.open(latest)
         
     | 
| 
      
 228 
     | 
    
         
            +
                  @latest_keys = get_column_indices(lbook).keys
         
     | 
| 
       228 
229 
     | 
    
         
             
                  idx, prr, prp = nil
         
     | 
| 
       229 
230 
     | 
    
         
             
                  multiples = {}
         
     | 
| 
       230 
     | 
    
         
            -
                  latest_keys = get_column_indices(lbook).keys
         
     | 
| 
       231 
231 
     | 
    
         
             
                  each_valid_row(lbook) { |row|
         
     | 
| 
       232 
     | 
    
         
            -
                    iksnr = cell(row, latest_keys.index(:iksnr))
         
     | 
| 
       233 
     | 
    
         
            -
                    seqnr = cell(row, latest_keys.index(:seqnr))
         
     | 
| 
       234 
     | 
    
         
            -
                    pacnr = cell(row, latest_keys.index(:ikscd))
         
     | 
| 
      
 232 
     | 
    
         
            +
                    iksnr = cell(row, @latest_keys.index(:iksnr))
         
     | 
| 
      
 233 
     | 
    
         
            +
                    seqnr = cell(row, @latest_keys.index(:seqnr))
         
     | 
| 
      
 234 
     | 
    
         
            +
                    pacnr = cell(row, @latest_keys.index(:ikscd))
         
     | 
| 
       235 
235 
     | 
    
         
             
                    multiples[iksnr] ||= {}
         
     | 
| 
       236 
236 
     | 
    
         
             
                    if prr == iksnr && prp == pacnr
         
     | 
| 
       237 
237 
     | 
    
         
             
                      idx += 1
         
     | 
| 
       238 
238 
     | 
    
         
             
                    elsif previous = multiples[iksnr][pacnr]
         
     | 
| 
       239 
239 
     | 
    
         
             
                      prr = iksnr
         
     | 
| 
       240 
240 
     | 
    
         
             
                      prp = pacnr
         
     | 
| 
       241 
     | 
    
         
            -
                      idx = previous[latest_keys.size].to_i + 1
         
     | 
| 
      
 241 
     | 
    
         
            +
                      idx = previous[@latest_keys.size].to_i + 1
         
     | 
| 
       242 
242 
     | 
    
         
             
                    else
         
     | 
| 
       243 
243 
     | 
    
         
             
                      prr = iksnr
         
     | 
| 
       244 
244 
     | 
    
         
             
                      prp = pacnr
         
     | 
| 
       245 
245 
     | 
    
         
             
                      idx = 0
         
     | 
| 
       246 
246 
     | 
    
         
             
                    end
         
     | 
| 
       247 
247 
     | 
    
         
             
                    multiples[iksnr][pacnr] = row
         
     | 
| 
       248 
     | 
    
         
            -
                    row[latest_keys.size] = idx
         
     | 
| 
      
 248 
     | 
    
         
            +
                    row[@latest_keys.size] = idx
         
     | 
| 
       249 
249 
     | 
    
         
             
                    known_regs.store [iksnr], row
         
     | 
| 
       250 
250 
     | 
    
         
             
                    known_seqs.store [iksnr, seqnr], row
         
     | 
| 
       251 
251 
     | 
    
         
             
                    known_pacs.store [iksnr, pacnr, idx], row
         
     | 
| 
         @@ -257,15 +257,17 @@ class SwissmedicDiff 
     | 
|
| 
       257 
257 
     | 
    
         
             
                  row = rows.sort.first.last
         
     | 
| 
       258 
258 
     | 
    
         
             
                  cell(row, COLUMNS_2014.keys.index(:name_base))
         
     | 
| 
       259 
259 
     | 
    
         
             
                end
         
     | 
| 
       260 
     | 
    
         
            -
                def rows_diff(row,  
     | 
| 
      
 260 
     | 
    
         
            +
                def rows_diff(row, other, ignore = [])
         
     | 
| 
       261 
261 
     | 
    
         
             
                  flags = []
         
     | 
| 
       262 
262 
     | 
    
         
             
                  COLUMNS_OLD.each_with_index {
         
     | 
| 
       263 
263 
     | 
    
         
             
                    |key, idx|
         
     | 
| 
       264 
264 
     | 
    
         
             
                    if !ignore.include?(key)
         
     | 
| 
       265 
     | 
    
         
            -
                      left  = _comparable(key, row,    
     | 
| 
       266 
     | 
    
         
            -
                      right = _comparable(key, other,  
     | 
| 
      
 265 
     | 
    
         
            +
                      left  = _comparable(key, row,   @target_keys.index(key))
         
     | 
| 
      
 266 
     | 
    
         
            +
                      right = _comparable(key, other, @latest_keys.index(key))
         
     | 
| 
      
 267 
     | 
    
         
            +
                      next if left.is_a?(Date) and right.is_a?(Date) and left.start.eql?(right.start)
         
     | 
| 
      
 268 
     | 
    
         
            +
                      next if left.is_a?(String) and left.empty? and not right
         
     | 
| 
      
 269 
     | 
    
         
            +
                      next if right.is_a?(String) and right.empty? and not left
         
     | 
| 
       267 
270 
     | 
    
         
             
                      if left != right
         
     | 
| 
       268 
     | 
    
         
            -
                        puts "Pushing key #{key}: '#{left.inspect}' != '#{right.inspect}'" if $VERBOSE
         
     | 
| 
       269 
271 
     | 
    
         
             
                        flags.push key
         
     | 
| 
       270 
272 
     | 
    
         
             
                      end
         
     | 
| 
       271 
273 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -318,9 +320,9 @@ class SwissmedicDiff 
     | 
|
| 
       318 
320 
     | 
    
         
             
                  if cell = row[idx]
         
     | 
| 
       319 
321 
     | 
    
         
             
                    case key
         
     | 
| 
       320 
322 
     | 
    
         
             
                    when :registration_date, :expiry_date
         
     | 
| 
       321 
     | 
    
         
            -
                       
     | 
| 
      
 323 
     | 
    
         
            +
                      row[idx].value.to_date
         
     | 
| 
       322 
324 
     | 
    
         
             
                    when :seqnr
         
     | 
| 
       323 
     | 
    
         
            -
                      sprintf "%02i", cell.to_i
         
     | 
| 
      
 325 
     | 
    
         
            +
                      sprintf "%02i", cell(row, idx).to_i
         
     | 
| 
       324 
326 
     | 
    
         
             
                    else
         
     | 
| 
       325 
327 
     | 
    
         
             
                      cell(row, idx).downcase.gsub(/\s+/, "")
         
     | 
| 
       326 
328 
     | 
    
         
             
                    end
         
     | 
    
        data/lib/version.rb
    CHANGED
    
    
| 
         @@ -23,10 +23,10 @@ module ODDB 
     | 
|
| 
       23 
23 
     | 
    
         
             
                  result = @diff.diff this_month, last_month, [:atc_class, :sequence_date]
         
     | 
| 
       24 
24 
     | 
    
         
             
                  assert(result.changes.flatten.index('Zulassungs-Nummer') == nil, "Should not find Zulassungs-Nummer in changes")
         
     | 
| 
       25 
25 
     | 
    
         
             
                  assert_equal(1, result.news.size)
         
     | 
| 
       26 
     | 
    
         
            -
                  assert_equal( 
     | 
| 
       27 
     | 
    
         
            -
                  assert_equal( 
     | 
| 
      
 26 
     | 
    
         
            +
                  assert_equal(1, result.changes.size)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  assert_equal(0, result.updates.size)
         
     | 
| 
       28 
28 
     | 
    
         
             
                  assert_equal(['65838'], result.news.collect{|x| x[0] if x[0] == '65838'})
         
     | 
| 
       29 
     | 
    
         
            -
                  assert_equal({" 
     | 
| 
      
 29 
     | 
    
         
            +
                  assert_equal({"65838"=>[:new]}, result.changes)
         
     | 
| 
       30 
30 
     | 
    
         
             
                end
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
                def test_diff_wrong_header
         
     | 
| 
         @@ -37,21 +37,11 @@ module ODDB 
     | 
|
| 
       37 
37 
     | 
    
         
             
                end
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                def test_date_xlsx
         
     | 
| 
       41 
     | 
    
         
            -
                  tbook = Spreadsheet.open(@january_2014)
         
     | 
| 
       42 
     | 
    
         
            -
                  sheet = tbook.worksheet(0)
         
     | 
| 
       43 
     | 
    
         
            -
                  assert_equal(nil, sheet.row(0)[8]) # sequence_date
         
     | 
| 
       44 
     | 
    
         
            -
                  assert_equal(2010, sheet.row(4).date(8).year)
         
     | 
| 
       45 
     | 
    
         
            -
                  assert_equal(26, sheet.row(4).date(8).day)
         
     | 
| 
       46 
     | 
    
         
            -
                  assert_equal(26, Spreadsheet.date_cell(sheet.row(4), 8).day)
         
     | 
| 
       47 
     | 
    
         
            -
                  assert_equal(2010, Spreadsheet.date_cell(sheet.row(4), 8).year)
         
     | 
| 
       48 
     | 
    
         
            -
                end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
40 
     | 
    
         
             
                def test_diff_xlsx_and_xlsx
         
     | 
| 
       51 
41 
     | 
    
         
             
                  result = @diff.diff @february_2014, @january_2014, [:atc_class, :sequence_date]
         
     | 
| 
       52 
42 
     | 
    
         
             
                  assert_equal 4, result.news.size
         
     | 
| 
       53 
43 
     | 
    
         
             
                  expected = {
         
     | 
| 
       54 
     | 
    
         
            -
                      "00277"=>[:name_base 
     | 
| 
      
 44 
     | 
    
         
            +
                      "00277"=>[:name_base],
         
     | 
| 
       55 
45 
     | 
    
         
             
                      "65040"=>[:sequence, :replaced_package],
         
     | 
| 
       56 
46 
     | 
    
         
             
                      "60125"=>[:new],
         
     | 
| 
       57 
47 
     | 
    
         
             
                      "61367"=>[:new],
         
     | 
| 
         @@ -106,14 +96,14 @@ module ODDB 
     | 
|
| 
       106 
96 
     | 
    
         
             
            + 60125: Otriduo Schnupfen, Dosierspray
         
     | 
| 
       107 
97 
     | 
    
         
             
            + 61367: Hypericum-Mepha 250, Lactab
         
     | 
| 
       108 
98 
     | 
    
         
             
            - 00274: Cardio-Pulmo-Rénal Sérocytol, suppositoire
         
     | 
| 
       109 
     | 
    
         
            -
            > 00277: Coeur-Vaisseaux Sérocytol, Namensänderung; Namensänderung (Coeur-Vaisseaux Sérocytol, Namensänderung) 
     | 
| 
      
 99 
     | 
    
         
            +
            > 00277: Coeur-Vaisseaux Sérocytol, Namensänderung; Namensänderung (Coeur-Vaisseaux Sérocytol, Namensänderung)
         
     | 
| 
       110 
100 
     | 
    
         
             
            > 00278: Colon Sérocytol, suppositoire; ATC-Code (J06AA)
         
     | 
| 
       111 
101 
     | 
    
         
             
            > 00279: Conjonctif Sérocytol, suppositoire; ATC-Code (D03AX04)
         
     | 
| 
       112 
102 
     | 
    
         
             
            > 65040: Panthoben, Salbe; Packungs-Nummer (001 -> 003)
         
     | 
| 
       113 
103 
     | 
    
         
             
                  EOS
         
     | 
| 
       114 
104 
     | 
    
         
             
                  assert_equal <<-EOS.strip, @diff.to_s(:name)
         
     | 
| 
       115 
105 
     | 
    
         
             
            - 00274: Cardio-Pulmo-Rénal Sérocytol, suppositoire
         
     | 
| 
       116 
     | 
    
         
            -
            > 00277: Coeur-Vaisseaux Sérocytol, Namensänderung; Namensänderung (Coeur-Vaisseaux Sérocytol, Namensänderung) 
     | 
| 
      
 106 
     | 
    
         
            +
            > 00277: Coeur-Vaisseaux Sérocytol, Namensänderung; Namensänderung (Coeur-Vaisseaux Sérocytol, Namensänderung)
         
     | 
| 
       117 
107 
     | 
    
         
             
            > 00278: Colon Sérocytol, suppositoire; ATC-Code (J06AA)
         
     | 
| 
       118 
108 
     | 
    
         
             
            > 00279: Conjonctif Sérocytol, suppositoire; ATC-Code (D03AX04)
         
     | 
| 
       119 
109 
     | 
    
         
             
            + 61367: Hypericum-Mepha 250, Lactab
         
     | 
| 
         @@ -122,7 +112,7 @@ module ODDB 
     | 
|
| 
       122 
112 
     | 
    
         
             
                EOS
         
     | 
| 
       123 
113 
     | 
    
         
             
                  assert_equal <<-EOS.strip, @diff.to_s(:registration)
         
     | 
| 
       124 
114 
     | 
    
         
             
            - 00274: Cardio-Pulmo-Rénal Sérocytol, suppositoire
         
     | 
| 
       125 
     | 
    
         
            -
            > 00277: Coeur-Vaisseaux Sérocytol, Namensänderung; Namensänderung (Coeur-Vaisseaux Sérocytol, Namensänderung) 
     | 
| 
      
 115 
     | 
    
         
            +
            > 00277: Coeur-Vaisseaux Sérocytol, Namensänderung; Namensänderung (Coeur-Vaisseaux Sérocytol, Namensänderung)
         
     | 
| 
       126 
116 
     | 
    
         
             
            > 00278: Colon Sérocytol, suppositoire; ATC-Code (J06AA)
         
     | 
| 
       127 
117 
     | 
    
         
             
            > 00279: Conjonctif Sérocytol, suppositoire; ATC-Code (D03AX04)
         
     | 
| 
       128 
118 
     | 
    
         
             
            + 60125: Otriduo Schnupfen, Dosierspray
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: swissmedic-diff
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.1
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2015-07- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2015-07-07 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: rdoc
         
     | 
| 
         @@ -101,18 +101,12 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       101 
101 
     | 
    
         
             
              - - ! '>='
         
     | 
| 
       102 
102 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       103 
103 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       104 
     | 
    
         
            -
                  segments:
         
     | 
| 
       105 
     | 
    
         
            -
                  - 0
         
     | 
| 
       106 
     | 
    
         
            -
                  hash: -1183980882964765712
         
     | 
| 
       107 
104 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       108 
105 
     | 
    
         
             
              none: false
         
     | 
| 
       109 
106 
     | 
    
         
             
              requirements:
         
     | 
| 
       110 
107 
     | 
    
         
             
              - - ! '>='
         
     | 
| 
       111 
108 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       112 
109 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       113 
     | 
    
         
            -
                  segments:
         
     | 
| 
       114 
     | 
    
         
            -
                  - 0
         
     | 
| 
       115 
     | 
    
         
            -
                  hash: -1183980882964765712
         
     | 
| 
       116 
110 
     | 
    
         
             
            requirements: []
         
     | 
| 
       117 
111 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       118 
112 
     | 
    
         
             
            rubygems_version: 1.8.23.2
         
     |