elibri_xml_versions 0.1.1 → 0.1.2

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/.travis.yml CHANGED
@@ -1,6 +1,9 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - ree
4
+ - 1.8.7
5
+ - jruby-18mode
6
+ - rbx-18mode
4
7
  notifications:
5
8
  email:
6
9
  - p.szmielew@ava.waw.pl
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem created for comparing eLibri xml objects.
4
4
 
5
- Currently working and tested only on REE.
5
+ Currently working and tested on 1.8 version of Ruby (REE, jRuby 1.8, Ruby 1.8.7).
6
6
 
7
7
  Basic usage:
8
8
  ``Elibri::XmlVersions.new(product_ver1, product_ver2).diff``
@@ -19,6 +19,8 @@ It will return hash:
19
19
  ```
20
20
 
21
21
  under changes key, will be array of symbol and/or hashes.
22
+ If there is change deeper in structure it will be represented like this:
23
+ `:changes => [{:contributors => [{2167055520 => :key_names}]`
22
24
  Symbols represents attributes that in product_ver2 are different then in product_ver1. If there is hash in changes key, it represents some changes in object that is in one <-> one relation with product_ver2.
23
25
 
24
26
  Added and deleted contains array of hashes. Every hash has symbol as a key, that is used to access array of elements where changes occures. As a value it contains array of elements that has been added/deleted from product_ver2, in comparision to product_ver1.
@@ -1,3 +1,3 @@
1
1
  module ElibriXmlVersions
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -118,6 +118,9 @@ module Elibri
118
118
  #obsługa różnych elementów w arrayu
119
119
  a.each_with_index do |element, i|
120
120
  ret = check_tree(element, b[i])
121
+ [:changes, :added, :deleted].each do |key|
122
+ ret[key] = ret[key].map { |x| {element.id => x}}
123
+ end
121
124
  changes += ret[:changes]
122
125
  added += ret[:added]
123
126
  deleted += ret[:deleted]
@@ -128,18 +131,19 @@ module Elibri
128
131
  attrib = attrib.to_s.gsub("@", "").to_sym
129
132
  if a.send(attrib).is_a? Array
130
133
  ret = check_tree(a.send(attrib), b.send(attrib))
131
- changes << {attrib, ret[:changes]} if !ret[:changes].blank?
132
- added << {attrib, ret[:added]} if !ret[:added].blank?
133
- deleted << {attrib, ret[:deleted]} if !ret[:deleted].blank?
134
+ #TODO: otestować to
135
+ changes << {attrib => ret[:changes]} if !ret[:changes].blank?
136
+ added << {attrib => ret[:added]} if !ret[:added].blank?
137
+ deleted << {attrib => ret[:deleted]} if !ret[:deleted].blank?
134
138
  else
135
139
  if (a.send(attrib).is_a?(String) || a.send(attrib).is_a?(Numeric) || a.send(attrib).is_a?(NilClass) || b.send(attrib).is_a?(NilClass))
136
140
  changes << attrib if a.send(attrib) != b.send(attrib)
137
141
  else
138
142
  #klasa zlozona
139
143
  ret = check_tree(a.send(attrib), b.send(attrib))
140
- changes << {attrib, ret[:changes]} if !ret[:changes].blank?
141
- added << {attrib, ret[:added]} if !ret[:added].blank?
142
- deleted << {attrib, ret[:deleted]} if !ret[:deleted].blank?
144
+ changes << {attrib => ret[:changes]} if !ret[:changes].blank?
145
+ added << {attrib => ret[:added]} if !ret[:added].blank?
146
+ deleted << {attrib => ret[:deleted]} if !ret[:deleted].blank?
143
147
  end
144
148
  end
145
149
  end
@@ -35,6 +35,18 @@ describe Elibri::XmlVersions do
35
35
  @elibri_xml_versions = Elibri::XmlVersions.new(generated_product.products.first, generated_product_2.products.first)
36
36
  @elibri_xml_versions.diff.should eq({:deleted => [], :added => [], :changes => [:record_reference]})
37
37
  end
38
+
39
+ it "should return change in author on same basic elibri objects" do
40
+ author = Elibri::XmlMocks::Examples.contributor_mock(:id => 2167055520)
41
+ author_2 = Elibri::XmlMocks::Examples.contributor_mock(:last_name => 'Waza', :id => 2167055520)
42
+ generated_product = onix_from_mock(:basic_product, :record_reference => 'fdb8fa072be774d97a97', :contributors => [author])
43
+ generated_product_2 = onix_from_mock(:basic_product, :record_reference => 'fdb8fa072be774d97a97', :contributors => [author_2])
44
+ @elibri_xml_versions = Elibri::XmlVersions.new(generated_product.products.first, generated_product_2.products.first)
45
+ diff = @elibri_xml_versions.diff
46
+ diff[:deleted].should eq([])
47
+ diff[:added].should eq([])
48
+ diff[:changes].should eq( [ {:contributors => [{2167055520 => :key_names}] } ] )
49
+ end
38
50
 
39
51
  it "should return no changes for same book elibri objects" do
40
52
  generated_product = onix_from_mock(:book_example)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elibri_xml_versions
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Piotr Szmielew
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-04-05 00:00:00 Z
18
+ date: 2012-05-07 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rspec
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  requirements: []
140
140
 
141
141
  rubyforge_project: elibri_xml_versions
142
- rubygems_version: 1.8.17
142
+ rubygems_version: 1.8.21
143
143
  signing_key:
144
144
  specification_version: 3
145
145
  summary: Gem created for comparing eLibri xml objects.