elibri_xml_versions 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,5 +2,7 @@ source "http://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in elibri_xml_versions.gemspec
4
4
  gemspec
5
+ gem 'pry'
5
6
 
6
- #gem 'elibri_onix_mocks', :git => 'git://github.com/elibri/elibri_onix_mocks.git'
7
+ #gem 'elibri_onix_mocks', :git => 'git://github.com/elibri/elibri_onix_mocks.git'
8
+ gem 'elibri_onix', :git => 'git://github.com/elibri/elibri_onix.git'
@@ -1,3 +1,3 @@
1
1
  module ElibriXmlVersions
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -126,9 +126,15 @@ module Elibri
126
126
  deleted += ret[:deleted]
127
127
  end
128
128
  else
129
- a.instance_variables.each do |attrib|
129
+ vars = []
130
+ if a.class.to_s.include? "Elibri::ONIX"
131
+ vars += a.class::ATTRIBUTES
132
+ vars += a.class::RELATIONS
133
+ end
134
+ vars = a.instance_variables if vars.blank?
135
+ vars.each do |attrib|
130
136
  next if SKIPPED_ATTRIBS.include? attrib
131
- attrib = attrib.to_s.gsub("@", "").to_sym
137
+ attrib = attrib.to_s.gsub("@", "").to_sym if attrib.is_a?(String)
132
138
  if a.send(attrib).is_a? Array
133
139
  ret = check_tree(a.send(attrib), b.send(attrib))
134
140
  #TODO: otestować to
@@ -136,7 +142,8 @@ module Elibri
136
142
  added << {attrib => ret[:added]} if !ret[:added].blank?
137
143
  deleted << {attrib => ret[:deleted]} if !ret[:deleted].blank?
138
144
  else
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))
145
+ 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) ||
146
+ a.send(attrib).is_a?(TrueClass) || a.send(attrib).is_a?(FalseClass) || b.send(attrib).is_a?(TrueClass) || b.send(attrib).is_a?(FalseClass))
140
147
  changes << attrib if a.send(attrib) != b.send(attrib)
141
148
  else
142
149
  #klasa zlozona
@@ -156,10 +163,16 @@ module Elibri
156
163
  if object.is_a? Array
157
164
  object.each { |x| result << calculate_hash(x) }
158
165
  else
159
- object.instance_variables.each do |attrib|
166
+ vars = []
167
+ if object.class.to_s.include? "Elibri::ONIX"
168
+ vars += object.class::ATTRIBUTES
169
+ vars += object.class::RELATIONS
170
+ end
171
+ vars = object.instance_variables if vars.blank?
172
+ vars.each do |attrib|
160
173
  next if SKIPPED_ATTRIBS.include? attrib
161
174
  next if SKIPPED_2.include? attrib
162
- attrib = attrib.to_s.gsub("@", "").to_sym
175
+ attrib = attrib.to_s.gsub("@", "").to_sym if attrib.is_a?(String)
163
176
  if object.send(attrib).is_a? Array
164
177
  result << calculate_hash(object.send(attrib))
165
178
  elsif object.send(attrib).is_a?(String) || object.send(attrib).is_a?(Numeric) || object.send(attrib).is_a?(Fixnum) || object.send(attrib).is_a?(Symbol)
@@ -15,7 +15,6 @@ describe Elibri::XmlVersions do
15
15
  :product_attachments => [],
16
16
  :product_availabilities => []
17
17
  }
18
-
19
18
  it "should return no changes for same basic elibri object" do
20
19
  generated_product = onix_from_mock(:basic_product)
21
20
  @elibri_xml_versions = Elibri::XmlVersions.new(generated_product.products.first, generated_product.products.first)
@@ -95,7 +94,6 @@ describe Elibri::XmlVersions do
95
94
  @elibri_xml_versions = Elibri::XmlVersions.new(generated_product.products.first, generated_product_2.products.first)
96
95
  @elibri_xml_versions.diff.should eq({:deleted => [], :added => [], :changes => []})
97
96
  end
98
-
99
97
  SPLITTING_SYMBOLS = [
100
98
  :publisher_name
101
99
  ]
@@ -113,16 +111,36 @@ describe Elibri::XmlVersions do
113
111
  :ean => :ean,
114
112
  :deletion_text => :deletion_text,
115
113
  :trade_title => :trade_title,
116
- :pkwiu => :pkwiu_from_3_0_1,
114
+ :pkwiu => :pkwiu,
117
115
  :title => :title,
118
116
  :subtitle => :subtitle,
119
117
  :edition_statement => :edition_statement,
120
118
  :audience_age_from => :reading_age_from,
121
119
  :audience_age_to => :reading_age_to,
122
- :price_amount => :cover_price_from_3_0_1,
123
- :vat => :vat_from_3_0_1
120
+ :price_amount => :cover_price,
121
+ :vat => :vat,
122
+ :preview_exists? => :preview_exists,
123
+ :elibri_product_category1_id => :elibri_product_category1_id,
124
+ :elibri_product_category2_id => :elibri_product_category2_id
124
125
  }
125
126
 
127
+ it "should find the difference in categories" do
128
+ generated_product = onix_from_mock(:onix_subjects_example)
129
+ generated_product_2 = onix_from_mock(:onix_subjects_example)
130
+ @elibri_xml_versions = Elibri::XmlVersions.new(generated_product.products.first, generated_product_2.products.first)
131
+ @elibri_xml_versions.diff.should eq({:deleted => [], :added => [], :changes => []})
132
+
133
+ generated_product = onix_from_mock(:onix_subjects_example, :elibri_product_category1_id => 440, :elibri_product_category2_id => nil)
134
+ generated_product_2 = onix_from_mock(:onix_subjects_example, :elibri_product_category1_id => 550, :elibri_product_category2_id => nil)
135
+ @elibri_xml_versions = Elibri::XmlVersions.new(generated_product.products.first, generated_product_2.products.first)
136
+ @elibri_xml_versions.diff[:changes].should include(:elibri_product_category1_id)
137
+
138
+ generated_product = onix_from_mock(:onix_subjects_example, :elibri_product_category1_id => 440, :elibri_product_category2_id => 441)
139
+ generated_product_2 = onix_from_mock(:onix_subjects_example, :elibri_product_category1_id => 550, :elibri_product_category2_id => 551)
140
+ @elibri_xml_versions = Elibri::XmlVersions.new(generated_product.products.first, generated_product_2.products.first)
141
+ @elibri_xml_versions.diff[:changes].should include(:elibri_product_category1_id, :elibri_product_category2_id)
142
+ end
143
+
126
144
  #strings
127
145
  [
128
146
  :publisher_name, :record_reference,
@@ -174,6 +192,21 @@ describe Elibri::XmlVersions do
174
192
  #end strings
175
193
  end
176
194
 
195
+ #bools
196
+ [
197
+ :preview_exists?
198
+ ].each do |symbol|
199
+
200
+ it "should see the change in #{symbol} attribute" do
201
+ generated_product = onix_from_mock(:basic_product, symbol => true)
202
+ generated_product_2 = onix_from_mock(:basic_product, symbol => false)
203
+ @elibri_xml_versions = Elibri::XmlVersions.new(generated_product.products.first, generated_product_2.products.first)
204
+ @elibri_xml_versions.diff[:changes].should include(TRAVERSE_VECTOR[symbol])
205
+ end
206
+
207
+ #end bools
208
+ end
209
+
177
210
 
178
211
  #integers
179
212
  [
@@ -240,5 +273,4 @@ describe Elibri::XmlVersions do
240
273
  @elibri_xml_versions = Elibri::XmlVersions.new(generated_product.products.first, generated_product_2.products.first)
241
274
  @elibri_xml_versions.diff[:changes].should include({:imprint => [:name]})
242
275
  end
243
-
244
- end
276
+ end
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: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Piotr Szmielew
@@ -15,12 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-05-07 00:00:00 Z
18
+ date: 2012-05-10 00:00:00 +02:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
22
+ type: :development
21
23
  name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
25
  none: false
25
26
  requirements:
26
27
  - - ">="
@@ -29,12 +30,12 @@ dependencies:
29
30
  segments:
30
31
  - 0
31
32
  version: "0"
32
- type: :development
33
- version_requirements: *id001
33
+ prerelease: false
34
+ requirement: *id001
34
35
  - !ruby/object:Gem::Dependency
36
+ type: :development
35
37
  name: rake
36
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
38
39
  none: false
39
40
  requirements:
40
41
  - - ">="
@@ -43,12 +44,12 @@ dependencies:
43
44
  segments:
44
45
  - 0
45
46
  version: "0"
46
- type: :development
47
- version_requirements: *id002
47
+ prerelease: false
48
+ requirement: *id002
48
49
  - !ruby/object:Gem::Dependency
50
+ type: :development
49
51
  name: elibri_onix_mocks
50
- prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
+ version_requirements: &id003 !ruby/object:Gem::Requirement
52
53
  none: false
53
54
  requirements:
54
55
  - - ">="
@@ -57,12 +58,12 @@ dependencies:
57
58
  segments:
58
59
  - 0
59
60
  version: "0"
60
- type: :development
61
- version_requirements: *id003
61
+ prerelease: false
62
+ requirement: *id003
62
63
  - !ruby/object:Gem::Dependency
64
+ type: :runtime
63
65
  name: elibri_api_client
64
- prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
66
+ version_requirements: &id004 !ruby/object:Gem::Requirement
66
67
  none: false
67
68
  requirements:
68
69
  - - ">="
@@ -71,12 +72,12 @@ dependencies:
71
72
  segments:
72
73
  - 0
73
74
  version: "0"
74
- type: :runtime
75
- version_requirements: *id004
75
+ prerelease: false
76
+ requirement: *id004
76
77
  - !ruby/object:Gem::Dependency
78
+ type: :runtime
77
79
  name: elibri_onix_dict
78
- prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
80
+ version_requirements: &id005 !ruby/object:Gem::Requirement
80
81
  none: false
81
82
  requirements:
82
83
  - - ">="
@@ -85,8 +86,8 @@ dependencies:
85
86
  segments:
86
87
  - 0
87
88
  version: "0"
88
- type: :runtime
89
- version_requirements: *id005
89
+ prerelease: false
90
+ requirement: *id005
90
91
  description: |-
91
92
  Gem created for comparing eLibri xml objects. More info coming soon. Currently working and tested only on REE.
92
93
  Basic usage: Elibri::XmlVersions.new(product_ver1, product_ver2).diff
@@ -110,6 +111,7 @@ files:
110
111
  - lib/elibri_xml_versions/version.rb
111
112
  - spec/elibri_xml_versions_spec.rb
112
113
  - spec/spec_helper.rb
114
+ has_rdoc: true
113
115
  homepage: ""
114
116
  licenses: []
115
117
 
@@ -139,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
141
  requirements: []
140
142
 
141
143
  rubyforge_project: elibri_xml_versions
142
- rubygems_version: 1.8.21
144
+ rubygems_version: 1.5.2
143
145
  signing_key:
144
146
  specification_version: 3
145
147
  summary: Gem created for comparing eLibri xml objects.