simpex 0.1.0 → 0.1.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 +1 -1
- data/lib/simpex/impex_result.rb +10 -7
- data/lib/simpex/type.rb +1 -1
- data/lib/simpex/version.rb +1 -1
- data/test/test_result.rb +9 -8
- metadata +1 -1
data/Gemfile.lock
CHANGED
data/lib/simpex/impex_result.rb
CHANGED
@@ -3,7 +3,8 @@ class ImpexResult
|
|
3
3
|
attr_writer :memory_safe, :max_type_entries_in_tree
|
4
4
|
|
5
5
|
def initialize(dest_folder)
|
6
|
-
raise "Given dest folder #{dest_folder} is either nil or does not exist!" if dest_folder.nil? ||
|
6
|
+
raise "Given dest folder #{dest_folder} is either nil or does not exist!" if dest_folder.nil? ||
|
7
|
+
!Dir.exist?(dest_folder)
|
7
8
|
@dest_folder = dest_folder
|
8
9
|
@types = []
|
9
10
|
@max_type_entries_in_tree = 2000
|
@@ -49,7 +50,6 @@ class ImpexResult
|
|
49
50
|
|
50
51
|
private
|
51
52
|
def validate_macros
|
52
|
-
|
53
53
|
#collect all macros from all types
|
54
54
|
@macros = @types.inject([]) do |result, type|
|
55
55
|
type.macros.each do |macro|
|
@@ -57,11 +57,13 @@ class ImpexResult
|
|
57
57
|
end
|
58
58
|
result
|
59
59
|
end
|
60
|
-
|
61
60
|
#make sure each macro is used in at least one type
|
62
61
|
@macros.each do |macro|
|
63
|
-
|
64
|
-
|
62
|
+
macro_key = macro.split("=").first
|
63
|
+
not_used_in_types = @types.none? {|type| type.attributes.include?(macro_key)}
|
64
|
+
not_used_in_macros = @macros.none? {|m| !m.eql?(macro) && m.include?(macro_key)}
|
65
|
+
if not_used_in_types && not_used_in_macros
|
66
|
+
raise ArgumentError.new "the macro #{macro} is never used in all declared types and macros"
|
65
67
|
end
|
66
68
|
end
|
67
69
|
end
|
@@ -75,7 +77,7 @@ class ImpexResult
|
|
75
77
|
end
|
76
78
|
puts "writing complete result to the file #{file_name}"
|
77
79
|
result_file_name = File.basename(result_file_name)
|
78
|
-
raise "You
|
80
|
+
raise "You directory '#{result_file_name}' instead of a single file" if File.directory?(result_file_name)
|
79
81
|
File.open(file_name, "w") do |f|
|
80
82
|
all_macros = []
|
81
83
|
@types.each do |type|
|
@@ -118,7 +120,8 @@ class ImpexResult
|
|
118
120
|
def check_for_impexify
|
119
121
|
if @memory_safe
|
120
122
|
if @global_enties_number > @max_type_entries_in_tree
|
121
|
-
puts "impexifying all entries since global entries #{@global_enties_number} is bigger
|
123
|
+
puts "impexifying all entries since global entries #{@global_enties_number} is bigger
|
124
|
+
then max #{@max_type_entries_in_tree}"
|
122
125
|
self.impexify
|
123
126
|
end
|
124
127
|
end
|
data/lib/simpex/type.rb
CHANGED
@@ -27,7 +27,7 @@ class Type
|
|
27
27
|
raise ArgumentError.new "In the type '#{name}', you are using a macro but no macros are given at all, pass the macros as an array to the type constructor."
|
28
28
|
end
|
29
29
|
if @macros.none?{|m| m.split("=").first == attribute.split("[").first}
|
30
|
-
raise ArgumentError.new "In the type #{name}, you are using
|
30
|
+
raise ArgumentError.new "In the type '#{name}', you are using the macro '#{attribute}' that is not defined, defined macros are #{@macros.inspect}"
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
data/lib/simpex/version.rb
CHANGED
data/test/test_result.rb
CHANGED
@@ -28,20 +28,17 @@ class TestResult < Test::Unit::TestCase
|
|
28
28
|
|
29
29
|
def test_should_recognize_not_used_macros
|
30
30
|
macros = []
|
31
|
-
macros << "$
|
32
|
-
macros << "$
|
31
|
+
macros << "$variableUsedByMacros=someThing()"
|
32
|
+
macros << "$firstmacro=catalogversion[unique=true,default=$variableUsedByMacros:Staged]"
|
33
|
+
macros << "$secondmacro=something"
|
33
34
|
|
34
35
|
@category_type = Type.new("Category", %w{code[unique=true] name[lang=de]}, macros)
|
35
36
|
@product_type = Type.new("Product", %w{code[unique=true] name[lang=en]}, macros)
|
36
|
-
|
37
37
|
result = ImpexResult.new(@impex_dest_dir)
|
38
38
|
result << @category_type
|
39
39
|
result << @product_type
|
40
|
-
|
41
|
-
|
42
40
|
entry = TypeEntry.new(@product_type, %w{555 myproduct555})
|
43
41
|
entry = TypeEntry.new(@category_type, %w{555 mycategory})
|
44
|
-
|
45
42
|
assert_raises ArgumentError do
|
46
43
|
result.impexify("result.csv", false)
|
47
44
|
end
|
@@ -55,12 +52,15 @@ class TestResult < Test::Unit::TestCase
|
|
55
52
|
result.impexify("result.csv", false)
|
56
53
|
end
|
57
54
|
|
55
|
+
macros << "$neverUsed=someThing()"
|
58
56
|
@product_type = Type.new("Product", %w{code[unique=true] name[lang=en] $firstmacro}, macros)
|
59
57
|
@category_type = Type.new("Category", %w{code[unique=true] name[lang=de] $secondmacro}, macros)
|
60
58
|
result = ImpexResult.new(@impex_dest_dir)
|
61
59
|
result << @category_type
|
62
60
|
result << @product_type
|
63
|
-
|
61
|
+
assert_raises ArgumentError do
|
62
|
+
result.impexify("result.csv", false)
|
63
|
+
end
|
64
64
|
end
|
65
65
|
|
66
66
|
def test_should_write_the_impex_resupt_to_the_given_folder
|
@@ -96,7 +96,8 @@ class TestResult < Test::Unit::TestCase
|
|
96
96
|
catalog_type = Type.new("Catalog", %w{id[unique=true] name[lang=de] name[lang=en] defaultCatalog})
|
97
97
|
catalog = TypeEntry.new(catalog_type, %w{simpex_catalog SimpexCatalog SimpexCatalog true})
|
98
98
|
|
99
|
-
catalog_version_type = Type.new("CatalogVersion", %w{catalog(id)[unique=true] version[unique=true]
|
99
|
+
catalog_version_type = Type.new("CatalogVersion", %w{catalog(id)[unique=true] version[unique=true]
|
100
|
+
active defaultCurrency(isocode)})
|
100
101
|
TypeEntry.new(catalog_version_type, [catalog.id, "online", "true", "EUR"])
|
101
102
|
|
102
103
|
result = ImpexResult.new(impex_dest_dir)
|