datashift 0.1.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/.document +5 -5
  2. data/LICENSE.txt +26 -26
  3. data/README.markdown +305 -303
  4. data/README.rdoc +19 -19
  5. data/Rakefile +93 -93
  6. data/VERSION +1 -1
  7. data/datashift-0.1.0.gem +0 -0
  8. data/datashift.gemspec +152 -136
  9. data/lib/applications/jruby/jexcel_file.rb +408 -408
  10. data/lib/applications/jruby/word.rb +79 -79
  11. data/lib/datashift.rb +152 -152
  12. data/lib/datashift/exceptions.rb +11 -11
  13. data/lib/datashift/file_definitions.rb +353 -353
  14. data/lib/datashift/mapping_file_definitions.rb +87 -87
  15. data/lib/datashift/method_detail.rb +275 -275
  16. data/lib/datashift/method_dictionary.rb +209 -209
  17. data/lib/datashift/method_mapper.rb +90 -90
  18. data/lib/generators/csv_generator.rb +36 -36
  19. data/lib/generators/excel_generator.rb +122 -122
  20. data/lib/generators/generator_base.rb +13 -13
  21. data/lib/helpers/core_ext/to_b.rb +24 -24
  22. data/lib/helpers/spree_helper.rb +153 -155
  23. data/lib/java/poi-3.7/LICENSE +507 -507
  24. data/lib/java/poi-3.7/NOTICE +21 -21
  25. data/lib/java/poi-3.7/RELEASE_NOTES.txt +115 -115
  26. data/lib/loaders/csv_loader.rb +98 -98
  27. data/lib/loaders/excel_loader.rb +155 -155
  28. data/lib/loaders/loader_base.rb +420 -420
  29. data/lib/loaders/spreadsheet_loader.rb +136 -136
  30. data/lib/loaders/spree/image_loader.rb +63 -64
  31. data/lib/loaders/spree/product_loader.rb +248 -250
  32. data/public/spree/products/large/DEMO_001_ror_bag.jpeg +0 -0
  33. data/public/spree/products/large/DEMO_002_Powerstation.jpg +0 -0
  34. data/public/spree/products/large/DEMO_003_ror_mug.jpeg +0 -0
  35. data/public/spree/products/mini/DEMO_001_ror_bag.jpeg +0 -0
  36. data/public/spree/products/mini/DEMO_002_Powerstation.jpg +0 -0
  37. data/public/spree/products/mini/DEMO_003_ror_mug.jpeg +0 -0
  38. data/public/spree/products/original/DEMO_001_ror_bag.jpeg +0 -0
  39. data/public/spree/products/original/DEMO_002_Powerstation.jpg +0 -0
  40. data/public/spree/products/original/DEMO_003_ror_mug.jpeg +0 -0
  41. data/public/spree/products/product/DEMO_001_ror_bag.jpeg +0 -0
  42. data/public/spree/products/product/DEMO_002_Powerstation.jpg +0 -0
  43. data/public/spree/products/product/DEMO_003_ror_mug.jpeg +0 -0
  44. data/public/spree/products/small/DEMO_001_ror_bag.jpeg +0 -0
  45. data/public/spree/products/small/DEMO_002_Powerstation.jpg +0 -0
  46. data/public/spree/products/small/DEMO_003_ror_mug.jpeg +0 -0
  47. data/spec/csv_loader_spec.rb +30 -30
  48. data/spec/datashift_spec.rb +26 -26
  49. data/spec/db/migrate/20110803201325_create_test_bed.rb +85 -85
  50. data/spec/excel_exporter_spec.rb +78 -78
  51. data/spec/excel_generator_spec.rb +78 -78
  52. data/spec/excel_loader_spec.rb +223 -223
  53. data/spec/file_definitions.rb +141 -141
  54. data/spec/fixtures/ProjectsDefaults.yml +29 -29
  55. data/spec/fixtures/config/database.yml +27 -24
  56. data/spec/fixtures/datashift_Spree_db.sqlite +0 -0
  57. data/spec/fixtures/interact_models_db.sqlite +0 -0
  58. data/spec/fixtures/negative/SpreeProdMiss1Mandatory.csv +4 -4
  59. data/spec/fixtures/negative/SpreeProdMissManyMandatory.csv +4 -4
  60. data/spec/fixtures/spree/SpreeProducts.csv +4 -4
  61. data/spec/fixtures/spree/SpreeProductsMultiColumn.csv +4 -4
  62. data/spec/fixtures/spree/SpreeProductsSimple.csv +4 -4
  63. data/spec/fixtures/spree/SpreeProductsWithImages.csv +4 -0
  64. data/spec/fixtures/spree/SpreeZoneExample.csv +5 -5
  65. data/spec/fixtures/test_model_defs.rb +57 -57
  66. data/spec/loader_spec.rb +120 -120
  67. data/spec/method_dictionary_spec.rb +242 -242
  68. data/spec/method_mapper_spec.rb +41 -41
  69. data/spec/spec_helper.rb +116 -116
  70. data/spec/spree_generator_spec.rb +64 -64
  71. data/spec/spree_loader_spec.rb +324 -327
  72. data/spec/spree_method_mapping_spec.rb +214 -214
  73. data/tasks/config/seed_fu_product_template.erb +15 -15
  74. data/tasks/config/tidy_config.txt +12 -12
  75. data/tasks/db_tasks.rake +65 -65
  76. data/tasks/excel_generator.rake +78 -78
  77. data/tasks/file_tasks.rake +36 -36
  78. data/tasks/import/csv.rake +49 -49
  79. data/tasks/import/excel.rake +71 -71
  80. data/tasks/spree/image_load.rake +108 -108
  81. data/tasks/spree/product_loader.rake +43 -43
  82. data/tasks/word_to_seedfu.rake +166 -166
  83. data/test/helper.rb +18 -18
  84. data/test/test_interact.rb +7 -7
  85. metadata +22 -3
  86. data/spec/fixtures/interact_spree_db.sqlite +0 -0
@@ -1,141 +1,141 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
3
-
4
- $:.unshift File.join(File.dirname(__FILE__),'..','lib')
5
- $:.unshift File.join(File.dirname(__FILE__),'..','lib', 'engine')
6
-
7
- require 'test/unit'
8
- require 'file_definitions'
9
-
10
- class File_definitions < Test::Unit::TestCase
11
-
12
- def setup
13
- end
14
-
15
- def test_fields_string
16
- klass = Object.const_set('B', Class.new)
17
-
18
- klass.module_eval do
19
- include FileDefinitions
20
- create_field_definition 'a_string'
21
-
22
- create_field_attr_accessors
23
- end
24
-
25
- x = B.new '33'
26
- assert_equal '33', x.a_string
27
-
28
- end
29
-
30
-
31
- def test_fields_symbols
32
- klass = Object.const_set('SymClass', Class.new)
33
- klass.module_eval do
34
- include FileDefinitions
35
- create_field_definition [:a_symbol, :b_symbol]
36
-
37
- create_field_attr_accessors
38
- end
39
-
40
- assert SymClass.new.respond_to? :a_symbol
41
- assert SymClass.new.respond_to? :b_symbol
42
- end
43
-
44
- def test_fields_strings
45
- klass = Object.const_set('A', Class.new)
46
- klass.module_eval do
47
- include FileDefinitions
48
- create_field_definition %w{abc def ghi jkl}
49
-
50
- create_field_attr_accessors
51
- end
52
-
53
- x = A.new
54
-
55
- assert_equal ["abc", "def", "ghi", "jkl"], A.field_definition.sort
56
-
57
- A::add_field( "xyz" )
58
-
59
- line = '1,2,3,4, 5'
60
- x = A.new(line)
61
-
62
- assert x.respond_to? 'abc'
63
- assert x.respond_to? 'abc='
64
- assert x.respond_to? :jkl
65
- assert_equal x.current_line, line
66
- assert_equal '1', x.abc
67
- assert_equal 1.0, x.abc.to_f
68
- assert_equal 1, x.abc.to_i
69
- assert_equal '4', x.jkl
70
- assert_equal ' 5', x.xyz
71
-
72
- end
73
-
74
- def test_fixed_strings
75
-
76
- klass = Object.const_set('AFixed', Class.new)
77
-
78
- klass.module_eval do
79
- include FileDefinitions
80
-
81
- create_fixed_definition( 'value' => (0..7), 'date' => (8..15), :ccy => (16..18) )
82
-
83
- create_field_attr_accessors
84
- end
85
-
86
- assert AFixed.respond_to?('fixed_definition')
87
- assert AFixed.respond_to?('field_definition')
88
- assert AFixed.respond_to?('add_field')
89
- assert AFixed.respond_to?('file_set_field_by_map')
90
- assert AFixed.respond_to?('split_on')
91
- assert AFixed.respond_to?('split_on_write')
92
-
93
- x = AFixed.new('0123456719990113EUR')
94
-
95
- assert x.respond_to?('value')
96
- assert x.respond_to?(:date)
97
- assert x.respond_to?('ccy')
98
-
99
- assert AFixed.field_definition.include?('ccy')
100
-
101
- assert_equal 3, AFixed.field_definition.size
102
- assert_equal 3, AFixed.fixed_definition.keys.size
103
-
104
- assert_equal ["ccy", "date", "value"], AFixed.field_definition.sort
105
-
106
- assert_equal AFixed.field_definition.sort, AFixed.fixed_definition.keys.sort
107
-
108
- assert_instance_of Range, AFixed.fixed_definition.values[0]
109
-
110
- assert_equal x.current_line, '0123456719990113EUR'
111
- assert_equal x.value, '01234567'
112
- assert_equal x.date, '19990113'
113
- assert_equal x.ccy, 'EUR'
114
-
115
- assert x.respond_to?(:parse)
116
-
117
- x.parse('9876543220100630USD')
118
-
119
- assert_equal x.current_line, '9876543220100630USD'
120
- assert_equal x.value, '98765432'
121
- assert_equal x.date, '20100630'
122
- assert_equal x.ccy, 'USD'
123
-
124
- end
125
-
126
- def test_bad_setup
127
- klass = Object.const_set('ABadClass', Class.new)
128
- begin
129
- klass.module_eval do
130
- include FileDefinitions
131
-
132
- create_fixed_definition( 'abc' )
133
-
134
- create_field_attr_accessors
135
- end
136
- flunk # We should never get here
137
- rescue => e
138
- assert e
139
- end
140
- end
141
- end
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+
4
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
5
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib', 'engine')
6
+
7
+ require 'test/unit'
8
+ require 'file_definitions'
9
+
10
+ class File_definitions < Test::Unit::TestCase
11
+
12
+ def setup
13
+ end
14
+
15
+ def test_fields_string
16
+ klass = Object.const_set('B', Class.new)
17
+
18
+ klass.module_eval do
19
+ include FileDefinitions
20
+ create_field_definition 'a_string'
21
+
22
+ create_field_attr_accessors
23
+ end
24
+
25
+ x = B.new '33'
26
+ assert_equal '33', x.a_string
27
+
28
+ end
29
+
30
+
31
+ def test_fields_symbols
32
+ klass = Object.const_set('SymClass', Class.new)
33
+ klass.module_eval do
34
+ include FileDefinitions
35
+ create_field_definition [:a_symbol, :b_symbol]
36
+
37
+ create_field_attr_accessors
38
+ end
39
+
40
+ assert SymClass.new.respond_to? :a_symbol
41
+ assert SymClass.new.respond_to? :b_symbol
42
+ end
43
+
44
+ def test_fields_strings
45
+ klass = Object.const_set('A', Class.new)
46
+ klass.module_eval do
47
+ include FileDefinitions
48
+ create_field_definition %w{abc def ghi jkl}
49
+
50
+ create_field_attr_accessors
51
+ end
52
+
53
+ x = A.new
54
+
55
+ assert_equal ["abc", "def", "ghi", "jkl"], A.field_definition.sort
56
+
57
+ A::add_field( "xyz" )
58
+
59
+ line = '1,2,3,4, 5'
60
+ x = A.new(line)
61
+
62
+ assert x.respond_to? 'abc'
63
+ assert x.respond_to? 'abc='
64
+ assert x.respond_to? :jkl
65
+ assert_equal x.current_line, line
66
+ assert_equal '1', x.abc
67
+ assert_equal 1.0, x.abc.to_f
68
+ assert_equal 1, x.abc.to_i
69
+ assert_equal '4', x.jkl
70
+ assert_equal ' 5', x.xyz
71
+
72
+ end
73
+
74
+ def test_fixed_strings
75
+
76
+ klass = Object.const_set('AFixed', Class.new)
77
+
78
+ klass.module_eval do
79
+ include FileDefinitions
80
+
81
+ create_fixed_definition( 'value' => (0..7), 'date' => (8..15), :ccy => (16..18) )
82
+
83
+ create_field_attr_accessors
84
+ end
85
+
86
+ assert AFixed.respond_to?('fixed_definition')
87
+ assert AFixed.respond_to?('field_definition')
88
+ assert AFixed.respond_to?('add_field')
89
+ assert AFixed.respond_to?('file_set_field_by_map')
90
+ assert AFixed.respond_to?('split_on')
91
+ assert AFixed.respond_to?('split_on_write')
92
+
93
+ x = AFixed.new('0123456719990113EUR')
94
+
95
+ assert x.respond_to?('value')
96
+ assert x.respond_to?(:date)
97
+ assert x.respond_to?('ccy')
98
+
99
+ assert AFixed.field_definition.include?('ccy')
100
+
101
+ assert_equal 3, AFixed.field_definition.size
102
+ assert_equal 3, AFixed.fixed_definition.keys.size
103
+
104
+ assert_equal ["ccy", "date", "value"], AFixed.field_definition.sort
105
+
106
+ assert_equal AFixed.field_definition.sort, AFixed.fixed_definition.keys.sort
107
+
108
+ assert_instance_of Range, AFixed.fixed_definition.values[0]
109
+
110
+ assert_equal x.current_line, '0123456719990113EUR'
111
+ assert_equal x.value, '01234567'
112
+ assert_equal x.date, '19990113'
113
+ assert_equal x.ccy, 'EUR'
114
+
115
+ assert x.respond_to?(:parse)
116
+
117
+ x.parse('9876543220100630USD')
118
+
119
+ assert_equal x.current_line, '9876543220100630USD'
120
+ assert_equal x.value, '98765432'
121
+ assert_equal x.date, '20100630'
122
+ assert_equal x.ccy, 'USD'
123
+
124
+ end
125
+
126
+ def test_bad_setup
127
+ klass = Object.const_set('ABadClass', Class.new)
128
+ begin
129
+ klass.module_eval do
130
+ include FileDefinitions
131
+
132
+ create_fixed_definition( 'abc' )
133
+
134
+ create_field_attr_accessors
135
+ end
136
+ flunk # We should never get here
137
+ rescue => e
138
+ assert e
139
+ end
140
+ end
141
+ end
@@ -1,29 +1,29 @@
1
- ## YAML Template.
2
-
3
- # Format is :
4
- # --- !ruby/object:ActiveRecordModel
5
- # :datashift_defaults
6
- # :key value
7
- #
8
-
9
- Project:
10
- datashift_defaults:
11
- value_as_string: "Default Project Value"
12
- category: reference:category_002
13
-
14
- datashift_overrides:
15
- value_as_double: 99.23546
16
-
17
- --- !ruby/object:Project
18
- attributes:
19
- id:
20
- title:
21
- value_as_string: ""
22
- value_as_text: "object has value text"
23
- value_as_boolean:
24
- value_as_datetime:
25
- value_as_integer: 23
26
- value_as_double: 45.82
27
- created_at:
28
- updated_at:
29
-
1
+ ## YAML Template.
2
+
3
+ # Format is :
4
+ # --- !ruby/object:ActiveRecordModel
5
+ # :datashift_defaults
6
+ # :key value
7
+ #
8
+
9
+ Project:
10
+ datashift_defaults:
11
+ value_as_string: "Default Project Value"
12
+ category: reference:category_002
13
+
14
+ datashift_overrides:
15
+ value_as_double: 99.23546
16
+
17
+ --- !ruby/object:Project
18
+ attributes:
19
+ id:
20
+ title:
21
+ value_as_string: ""
22
+ value_as_text: "object has value text"
23
+ value_as_boolean:
24
+ value_as_datetime:
25
+ value_as_integer: 23
26
+ value_as_double: 45.82
27
+ created_at:
28
+ updated_at:
29
+
@@ -1,25 +1,28 @@
1
- <% adapter = 'sqlite3' %>
2
- <% adapter = 'jdbcsqlite3' if(Guards::jruby? ) %>
3
-
4
- test_mysql:
5
- adapter: jdbcmysql
6
- database: interact_test_db
7
- username: test
8
- password: test
9
- host: localhost
10
-
11
- test_memory:
12
- adapter: <%= adapter %>
13
- database: :memory
14
-
15
- test_file:
16
- adapter: <%= adapter %>
17
- database: <%= File.join($DataShiftFixturePath, 'interact_models_db.sqlite') %>
18
- encoding: utf8
19
- host: localhost
20
-
21
- test_spree_standalone:
22
- adapter: <%= adapter %>
23
- database: <%= File.join($DataShiftFixturePath, 'interact_spree_db.sqlite') %>
24
- encoding: utf8
1
+ # Used by spec helper to build test databases
2
+ # These entires can be used in call to db_connect ( see spec_helper )
3
+
4
+ <% adapter = 'sqlite3' %>
5
+ <% adapter = 'jdbcsqlite3' if(Guards::jruby? ) %>
6
+
7
+ test_mysql:
8
+ adapter: jdbcmysql
9
+ database: datashift_test_models_db
10
+ username: test
11
+ password: test
12
+ host: localhost
13
+
14
+ test_memory:
15
+ adapter: <%= adapter %>
16
+ database: :memory
17
+
18
+ test_file:
19
+ adapter: <%= adapter %>
20
+ database: <%= File.join($DataShiftFixturePath, 'datashift_test_models_db.sqlite') %>
21
+ encoding: utf8
22
+ host: localhost
23
+
24
+ test_spree_standalone:
25
+ adapter: <%= adapter %>
26
+ database: <%= File.join($DataShiftFixturePath, 'datashift_Spree_db.sqlite') %>
27
+ encoding: utf8
25
28
  host: localhost
@@ -1,4 +1,4 @@
1
- "Name","Description","Available On"," Price","CostPrice","product_properties","count_on_hand","Taxons","Option Types"
2
- "Demo Product for AR Loader","blah blah","2011-02-14",400.00,320.00,"name:test_pp_001",12,"Paintings","mime_type:jpeg, PDF,PNG"
3
- "Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"name:test_pp_001",5,"Paintings","mime_type:jpeg, PDF,PNG"
4
- "Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"name:test_pp_002,test_pp_003",23,"Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour"
1
+ "Name","Description","Available On"," Price","CostPrice","product_properties","count_on_hand","Taxons","Option Types"
2
+ "Demo Product for AR Loader","blah blah","2011-02-14",400.00,320.00,"name:test_pp_001",12,"Paintings","mime_type:jpeg, PDF,PNG"
3
+ "Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"name:test_pp_001",5,"Paintings","mime_type:jpeg, PDF,PNG"
4
+ "Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"name:test_pp_002,test_pp_003",23,"Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour"
@@ -1,4 +1,4 @@
1
- "SKU","Description","Available On","CostPrice","product_properties","count_on_hand","Taxons","Option Types"
2
- "DEMO_001","blah blah","2011-02-14",320.00,"name:test_pp_001",12,"Paintings","mime_type:jpeg, PDF,PNG"
3
- "DEMO_002","less blah","2011-05-14",30.00,"name:test_pp_001",5,"Paintings","mime_type:jpeg, PDF,PNG"
4
- "DEMO_003","more blah blah","2012-07-01",23.34,"name:test_pp_002,test_pp_003",23,"Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour"
1
+ "SKU","Description","Available On","CostPrice","product_properties","count_on_hand","Taxons","Option Types"
2
+ "DEMO_001","blah blah","2011-02-14",320.00,"name:test_pp_001",12,"Paintings","mime_type:jpeg, PDF,PNG"
3
+ "DEMO_002","less blah","2011-05-14",30.00,"name:test_pp_001",5,"Paintings","mime_type:jpeg, PDF,PNG"
4
+ "DEMO_003","more blah blah","2012-07-01",23.34,"name:test_pp_002,test_pp_003",23,"Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour"
@@ -1,4 +1,4 @@
1
- "SKU","Name","Description","Available On"," Price","CostPrice","product_properties","Taxons","Variants","count_on_hand"
2
- "DEMO_001","Demo Product for AR Loader","blah blah","2011-02-14",399.99,320.00,"test_pp_001","Paintings|WaterColour","mime_type:jpeg,PDF,PNG","12|6|7"
3
- "DEMO_002","Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"test_pp_003","Paintings|Landscape|Oils","mime_type:jpeg, PDF,PNG","5|4|2"
4
- "DEMO_003","Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"test_pp_002|test_pp_003:Example free value|yet_another_property","Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour","12|4|7|12|18"
1
+ "SKU","Name","Description","Available On"," Price","CostPrice","product_properties","Taxons","Variants","count_on_hand"
2
+ "DEMO_001","Demo Product for AR Loader","blah blah","2011-02-14",399.99,320.00,"test_pp_001","Paintings|WaterColour","mime_type:jpeg,PDF,PNG","12|6|7"
3
+ "DEMO_002","Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"test_pp_003","Paintings|Landscape|Oils","mime_type:jpeg, PDF,PNG","5|4|2"
4
+ "DEMO_003","Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"test_pp_002|test_pp_003:Example free value|yet_another_property","Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour","12|4|7|12|18"
@@ -1,4 +1,4 @@
1
- "SKU","Name","Description","Available On"," Price","CostPrice","product_properties","product_properties","product_properties","Taxons","Taxons","Taxons","Option Types","Option Types","Variants","Variants","Variants","count_on_hand"
2
- "DEMO_001","Demo Product for AR Loader","blah blah","2011-02-14",399.99,320.00,"test_pp_001",,,"Paintings","WaterColour",,"mime_type:jpeg","mime_type:PDF","mime_type:PNG",,,"12|6|7"
3
- "DEMO_002","Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"test_pp_003",,,"Paintings","Landscape","Oils","mime_type:jpeg","mime_type:PDF","mime_type:PNG",,,"5|4|2"
4
- "DEMO_003","Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"test_pp_002","test_pp_003:Example free value","yet_another_property","Drawings",,,"mime_type:jpeg","mime_type:PDF","mime_type:PNG","print_type:black_white","print_type:colour","12|4|7|12|18"
1
+ "SKU","Name","Description","Available On"," Price","CostPrice","product_properties","product_properties","product_properties","Taxons","Taxons","Taxons","Option Types","Option Types","Variants","Variants","Variants","count_on_hand"
2
+ "DEMO_001","Demo Product for AR Loader","blah blah","2011-02-14",399.99,320.00,"test_pp_001",,,"Paintings","WaterColour",,"mime_type:jpeg","mime_type:PDF","mime_type:PNG",,,"12|6|7"
3
+ "DEMO_002","Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"test_pp_003",,,"Paintings","Landscape","Oils","mime_type:jpeg","mime_type:PDF","mime_type:PNG",,,"5|4|2"
4
+ "DEMO_003","Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"test_pp_002","test_pp_003:Example free value","yet_another_property","Drawings",,,"mime_type:jpeg","mime_type:PDF","mime_type:PNG","print_type:black_white","print_type:colour","12|4|7|12|18"
@@ -1,4 +1,4 @@
1
- "SKU","Name","Description","Available On"," Price","CostPrice","count_on_hand","Option Types"
2
- "SIMPLE_001","Simple Product for AR Loader","blah blah","2011-02-14",345.78,320.00,12,"mime_type"
3
- "SIMPLE_002","Simple Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,5,"mime_type"
4
- "SIMPLE_003","Simple third row avail in future","more blah blah","2012-07-01",50.34,23.34,23,"mime_type|print_type"
1
+ "SKU","Name","Description","Available On"," Price","CostPrice","count_on_hand","Option Types"
2
+ "SIMPLE_001","Simple Product for AR Loader","blah blah","2011-02-14",345.78,320.00,12,"mime_type"
3
+ "SIMPLE_002","Simple Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,5,"mime_type"
4
+ "SIMPLE_003","Simple third row avail in future","more blah blah","2012-07-01",50.34,23.34,23,"mime_type|print_type"