datashift 0.1.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.
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"