datashift 0.16.0 → 0.40.0
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.
- checksums.yaml +4 -4
- data/{LICENSE.txt → LICENSE} +0 -0
- data/Rakefile +1 -20
- data/datashift.thor +125 -0
- data/lib/applications/apache_poi_extensions.rb +21 -52
- data/lib/applications/excel.rb +64 -57
- data/lib/applications/hssf_row_extensions.rb +66 -0
- data/lib/applications/jexcel_file.rb +99 -95
- data/lib/applications/jexcel_file_extensions.rb +76 -83
- data/lib/applications/jruby/word.rb +36 -36
- data/lib/applications/ruby_poi_translations.rb +34 -32
- data/lib/applications/spreadsheet_extensions.rb +21 -19
- data/lib/datashift.rb +49 -59
- data/lib/datashift/binder.rb +217 -0
- data/lib/datashift/column_packer.rb +21 -72
- data/lib/datashift/configuration.rb +317 -0
- data/lib/datashift/context_factory.rb +88 -0
- data/lib/datashift/core_ext/array.rb +15 -0
- data/lib/datashift/core_ext/csv_ext.rb +46 -0
- data/lib/datashift/core_ext/string.rb +49 -0
- data/lib/datashift/core_ext/to_b.rb +11 -0
- data/lib/datashift/delimiters.rb +55 -61
- data/lib/datashift/doc_context.rb +137 -0
- data/lib/datashift/excel_base.rb +93 -81
- data/lib/datashift/exceptions.rb +30 -28
- data/lib/datashift/file_definitions.rb +44 -39
- data/lib/datashift/guards.rb +5 -5
- data/lib/datashift/header.rb +25 -0
- data/lib/datashift/headers.rb +94 -0
- data/lib/datashift/inbound_data/column.rb +44 -0
- data/lib/datashift/inbound_data/lookup_support.rb +33 -0
- data/lib/datashift/inbound_data/method_binding.rb +139 -0
- data/lib/datashift/load_object.rb +37 -12
- data/lib/datashift/logging.rb +54 -27
- data/lib/datashift/mandatory.rb +39 -0
- data/lib/datashift/mapping/data_flow_schema.rb +198 -0
- data/lib/datashift/{model_mapper.rb → mapping/mapper_utils.rb} +30 -10
- data/lib/datashift/model_methods/catalogue.rb +183 -0
- data/lib/datashift/model_methods/collection.rb +140 -0
- data/lib/datashift/model_methods/model_method.rb +162 -0
- data/lib/datashift/model_methods/model_methods_manager.rb +76 -0
- data/lib/datashift/model_methods/operator.rb +62 -0
- data/lib/datashift/node_collection.rb +26 -0
- data/lib/datashift/node_context.rb +68 -0
- data/lib/datashift/populator.rb +308 -282
- data/lib/datashift/progress_monitor.rb +91 -0
- data/lib/datashift/querying.rb +110 -52
- data/lib/datashift/templates/import_export_config.erb +55 -0
- data/lib/datashift/transformation/factory.rb +219 -0
- data/lib/datashift/transformation/remove.rb +44 -0
- data/lib/datashift/version.rb +3 -0
- data/lib/exporters/configuration.rb +84 -0
- data/lib/exporters/csv_exporter.rb +54 -52
- data/lib/exporters/excel_exporter.rb +80 -61
- data/lib/exporters/exporter_base.rb +8 -8
- data/lib/generators/config_generator.rb +218 -0
- data/lib/generators/csv_generator.rb +13 -70
- data/lib/generators/excel_generator.rb +23 -111
- data/lib/generators/generator_base.rb +15 -70
- data/lib/loaders/configuration.rb +90 -0
- data/lib/loaders/csv_loader.rb +63 -101
- data/lib/loaders/excel_loader.rb +71 -156
- data/lib/loaders/failure_data.rb +40 -0
- data/lib/loaders/file_loader.rb +16 -0
- data/lib/loaders/loader_base.rb +82 -410
- data/lib/loaders/loader_factory.rb +42 -0
- data/lib/loaders/paperclip/attachment_loader.rb +157 -140
- data/lib/loaders/paperclip/datashift_paperclip.rb +18 -35
- data/lib/loaders/paperclip/image_loading.rb +40 -35
- data/lib/loaders/reporters/basic_stdout_reporter.rb +40 -0
- data/lib/loaders/reporters/reporter.rb +26 -0
- data/lib/tasks/config.thor +65 -0
- data/{tasks → lib/tasks}/config/seed_fu_product_template.erb +0 -0
- data/{tasks → lib/tasks}/config/tidy_config.txt +0 -0
- data/lib/tasks/export.thor +192 -0
- data/lib/tasks/generate.thor +190 -0
- data/lib/tasks/import.thor +142 -0
- data/lib/{thor → tasks}/paperclip.thor +69 -69
- data/{tasks → lib/tasks/to_convert_to_thor}/db_tasks.rake +20 -20
- data/lib/tasks/tools.thor +109 -0
- data/spec/MissingAttachmentRecords/DEMO_001_ror_bag.jpeg +0 -0
- data/spec/MissingAttachmentRecords/DEMO_002_Powerstation.jpeg +0 -0
- data/spec/MissingAttachmentRecords/DEMO_003_ror_mug.jpeg +0 -0
- data/spec/MissingAttachmentRecords/DEMO_004_ror_ringer.jpeg +0 -0
- data/spec/datashift/binder_spec.rb +266 -0
- data/spec/datashift/config_generator_spec.rb +186 -0
- data/spec/datashift/configuration.rb +66 -0
- data/spec/datashift/context_factory_spec.rb +63 -0
- data/spec/datashift/data_flow_schema_spec.rb +150 -0
- data/spec/datashift/datashift_spec.rb +52 -0
- data/spec/datashift/excel_base_spec.rb +57 -0
- data/spec/datashift/excel_spec.rb +188 -0
- data/spec/datashift/failure_data_spec.rb +27 -0
- data/spec/{file_definitions.rb → datashift/file_definitions.rb} +9 -10
- data/spec/datashift/headers_spec.rb +56 -0
- data/spec/datashift/inbound_data_spec.rb +47 -0
- data/spec/datashift/mapper_utils_spec.rb +38 -0
- data/spec/datashift/method_binding_spec.rb +60 -0
- data/spec/datashift/model_method_spec.rb +109 -0
- data/spec/datashift/model_methods_catalogue.rb +111 -0
- data/spec/datashift/model_methods_collection_spec.rb +138 -0
- data/spec/datashift/model_methods_manager_spec.rb +329 -0
- data/spec/datashift/populator_spec.rb +117 -0
- data/spec/datashift/thor_spec.rb +314 -0
- data/spec/datashift/transformation/factory_spec.rb +195 -0
- data/spec/datashift/transformation/transformer_remove_spec.rb +43 -0
- data/spec/dummy/Gemfile +53 -0
- data/spec/dummy/Gemfile.lock +197 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +16 -0
- data/spec/dummy/app/assets/javascripts/categories.js +2 -0
- data/spec/dummy/app/assets/javascripts/digitals.js +2 -0
- data/spec/dummy/app/assets/javascripts/empties.js +2 -0
- data/spec/dummy/app/assets/javascripts/loader_releases.js +2 -0
- data/spec/dummy/app/assets/javascripts/long_and_complex_table_linked_to_versions.js +2 -0
- data/spec/dummy/app/assets/javascripts/milestones.js +2 -0
- data/spec/dummy/app/assets/javascripts/owners.js +2 -0
- data/spec/dummy/app/assets/javascripts/projects.js +2 -0
- data/spec/dummy/app/assets/javascripts/users.js +2 -0
- data/spec/dummy/app/assets/javascripts/versions.js +2 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/assets/stylesheets/categories.css +4 -0
- data/spec/dummy/app/assets/stylesheets/digitals.css +4 -0
- data/spec/dummy/app/assets/stylesheets/empties.css +4 -0
- data/spec/dummy/app/assets/stylesheets/loader_releases.css +4 -0
- data/spec/dummy/app/assets/stylesheets/long_and_complex_table_linked_to_versions.css +4 -0
- data/spec/dummy/app/assets/stylesheets/milestones.css +4 -0
- data/spec/dummy/app/assets/stylesheets/owners.css +4 -0
- data/spec/dummy/app/assets/stylesheets/projects.css +4 -0
- data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
- data/spec/dummy/app/assets/stylesheets/users.css +4 -0
- data/spec/dummy/app/assets/stylesheets/versions.css +4 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/controllers/categories_controller.rb +58 -0
- data/spec/dummy/app/controllers/digitals_controller.rb +58 -0
- data/spec/dummy/app/controllers/empties_controller.rb +58 -0
- data/spec/dummy/app/controllers/loader_releases_controller.rb +58 -0
- data/spec/dummy/app/controllers/long_and_complex_table_linked_to_versions_controller.rb +58 -0
- data/spec/dummy/app/controllers/milestones_controller.rb +58 -0
- data/spec/dummy/app/controllers/owners_controller.rb +58 -0
- data/spec/dummy/app/controllers/projects_controller.rb +58 -0
- data/spec/dummy/app/controllers/users_controller.rb +58 -0
- data/spec/dummy/app/controllers/versions_controller.rb +58 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/helpers/categories_helper.rb +2 -0
- data/spec/dummy/app/helpers/digitals_helper.rb +2 -0
- data/spec/dummy/app/helpers/empties_helper.rb +2 -0
- data/spec/dummy/app/helpers/loader_releases_helper.rb +2 -0
- data/spec/dummy/app/helpers/long_and_complex_table_linked_to_versions_helper.rb +2 -0
- data/spec/dummy/app/helpers/milestones_helper.rb +2 -0
- data/spec/dummy/app/helpers/owners_helper.rb +2 -0
- data/spec/dummy/app/helpers/projects_helper.rb +2 -0
- data/spec/dummy/app/helpers/users_helper.rb +2 -0
- data/spec/dummy/app/helpers/versions_helper.rb +2 -0
- data/spec/dummy/app/models/category.rb +6 -0
- data/spec/dummy/app/models/digital.rb +22 -0
- data/spec/dummy/app/models/empty.rb +2 -0
- data/spec/dummy/app/models/loader_release.rb +10 -0
- data/spec/dummy/app/models/long_and_complex_table_linked_to_version.rb +6 -0
- data/spec/dummy/app/models/milestone.rb +15 -0
- data/spec/dummy/app/models/owner.rb +13 -0
- data/spec/dummy/app/models/project.rb +53 -0
- data/spec/dummy/app/models/user.rb +5 -0
- data/spec/dummy/app/models/version.rb +7 -0
- data/spec/dummy/app/views/categories/_form.html.erb +17 -0
- data/spec/dummy/app/views/categories/edit.html.erb +6 -0
- data/spec/dummy/app/views/categories/index.html.erb +25 -0
- data/spec/dummy/app/views/categories/new.html.erb +5 -0
- data/spec/dummy/app/views/categories/show.html.erb +4 -0
- data/spec/dummy/app/views/digitals/_form.html.erb +17 -0
- data/spec/dummy/app/views/digitals/edit.html.erb +6 -0
- data/spec/dummy/app/views/digitals/index.html.erb +25 -0
- data/spec/dummy/app/views/digitals/new.html.erb +5 -0
- data/spec/dummy/app/views/digitals/show.html.erb +4 -0
- data/spec/dummy/app/views/empties/_form.html.erb +17 -0
- data/spec/dummy/app/views/empties/edit.html.erb +6 -0
- data/spec/dummy/app/views/empties/index.html.erb +25 -0
- data/spec/dummy/app/views/empties/new.html.erb +5 -0
- data/spec/dummy/app/views/empties/show.html.erb +4 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/app/views/loader_releases/_form.html.erb +17 -0
- data/spec/dummy/app/views/loader_releases/edit.html.erb +6 -0
- data/spec/dummy/app/views/loader_releases/index.html.erb +25 -0
- data/spec/dummy/app/views/loader_releases/new.html.erb +5 -0
- data/spec/dummy/app/views/loader_releases/show.html.erb +4 -0
- data/spec/dummy/app/views/long_and_complex_table_linked_to_versions/_form.html.erb +17 -0
- data/spec/dummy/app/views/long_and_complex_table_linked_to_versions/edit.html.erb +6 -0
- data/spec/dummy/app/views/long_and_complex_table_linked_to_versions/index.html.erb +25 -0
- data/spec/dummy/app/views/long_and_complex_table_linked_to_versions/new.html.erb +5 -0
- data/spec/dummy/app/views/long_and_complex_table_linked_to_versions/show.html.erb +4 -0
- data/spec/dummy/app/views/milestones/_form.html.erb +17 -0
- data/spec/dummy/app/views/milestones/edit.html.erb +6 -0
- data/spec/dummy/app/views/milestones/index.html.erb +25 -0
- data/spec/dummy/app/views/milestones/new.html.erb +5 -0
- data/spec/dummy/app/views/milestones/show.html.erb +4 -0
- data/spec/dummy/app/views/owners/_form.html.erb +17 -0
- data/spec/dummy/app/views/owners/edit.html.erb +6 -0
- data/spec/dummy/app/views/owners/index.html.erb +25 -0
- data/spec/dummy/app/views/owners/new.html.erb +5 -0
- data/spec/dummy/app/views/owners/show.html.erb +4 -0
- data/spec/dummy/app/views/projects/_form.html.erb +17 -0
- data/spec/dummy/app/views/projects/edit.html.erb +6 -0
- data/spec/dummy/app/views/projects/index.html.erb +25 -0
- data/spec/dummy/app/views/projects/new.html.erb +5 -0
- data/spec/dummy/app/views/projects/show.html.erb +4 -0
- data/spec/dummy/app/views/users/_form.html.erb +17 -0
- data/spec/dummy/app/views/users/edit.html.erb +6 -0
- data/spec/dummy/app/views/users/index.html.erb +25 -0
- data/spec/dummy/app/views/users/new.html.erb +5 -0
- data/spec/dummy/app/views/users/show.html.erb +4 -0
- data/spec/dummy/app/views/versions/_form.html.erb +17 -0
- data/spec/dummy/app/views/versions/edit.html.erb +6 -0
- data/spec/dummy/app/views/versions/index.html.erb +25 -0
- data/spec/dummy/app/views/versions/new.html.erb +5 -0
- data/spec/dummy/app/views/versions/show.html.erb +4 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +9 -0
- data/spec/dummy/bin/rake +9 -0
- data/spec/dummy/bin/setup +29 -0
- data/spec/dummy/bin/spring +16 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +26 -0
- data/spec/dummy/config/boot.rb +3 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +41 -0
- data/spec/dummy/config/environments/production.rb +79 -0
- data/spec/dummy/config/environments/test.rb +42 -0
- data/spec/dummy/config/initializers/assets.rb +11 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +76 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20110803201325_create_test_bed.rb +98 -0
- data/spec/dummy/db/migrate/20121009161700_add_digitals.rb +24 -0
- data/spec/dummy/db/migrate/20161005123106_create_digitals.rb +8 -0
- data/spec/dummy/db/migrate/20161005123106_create_long_and_complex_table_linked_to_versions.rb +8 -0
- data/spec/dummy/db/migrate/20161005123107_create_loader_releases.rb +8 -0
- data/spec/dummy/db/migrate/20161005123108_create_owners.rb +8 -0
- data/spec/dummy/db/migrate/20161005123109_create_empties.rb +8 -0
- data/spec/dummy/db/migrate/20161005123110_create_projects.rb +8 -0
- data/spec/dummy/db/migrate/20161005123111_create_users.rb +8 -0
- data/spec/dummy/db/migrate/20161005123111_create_versions.rb +8 -0
- data/spec/dummy/db/migrate/20161005123112_create_milestones.rb +8 -0
- data/spec/dummy/db/migrate/20161005123113_create_categories.rb +8 -0
- data/spec/dummy/db/schema.rb +93 -0
- data/spec/dummy/db/seeds.rb +9 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +69 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/robots.txt +5 -0
- data/spec/dummy/sandbox_example.thor +4 -0
- data/spec/dummy/test/controllers/categories_controller_test.rb +49 -0
- data/spec/dummy/test/controllers/digitals_controller_test.rb +49 -0
- data/spec/dummy/test/controllers/empties_controller_test.rb +49 -0
- data/spec/dummy/test/controllers/loader_releases_controller_test.rb +49 -0
- data/spec/dummy/test/controllers/long_and_complex_table_linked_to_versions_controller_test.rb +49 -0
- data/spec/dummy/test/controllers/milestones_controller_test.rb +49 -0
- data/spec/dummy/test/controllers/owners_controller_test.rb +49 -0
- data/spec/dummy/test/controllers/projects_controller_test.rb +49 -0
- data/spec/dummy/test/controllers/users_controller_test.rb +49 -0
- data/spec/dummy/test/controllers/versions_controller_test.rb +49 -0
- data/spec/dummy/test/factories/categories.rb +5 -0
- data/spec/dummy/test/factories/digitals.rb +5 -0
- data/spec/dummy/test/factories/empties.rb +5 -0
- data/spec/dummy/test/factories/loader_releases.rb +5 -0
- data/spec/dummy/test/factories/long_and_complex_table_linked_to_versions.rb +5 -0
- data/spec/dummy/test/factories/milestones.rb +5 -0
- data/spec/dummy/test/factories/owners.rb +5 -0
- data/spec/dummy/test/factories/projects.rb +5 -0
- data/spec/dummy/test/factories/users.rb +5 -0
- data/spec/dummy/test/factories/versions.rb +5 -0
- data/spec/dummy/test/models/category_test.rb +7 -0
- data/spec/dummy/test/models/digital_test.rb +7 -0
- data/spec/dummy/test/models/empty_test.rb +7 -0
- data/spec/dummy/test/models/loader_release_test.rb +7 -0
- data/spec/dummy/test/models/long_and_complex_table_linked_to_version_test.rb +7 -0
- data/spec/dummy/test/models/milestone_test.rb +7 -0
- data/spec/dummy/test/models/owner_test.rb +7 -0
- data/spec/dummy/test/models/project_test.rb +7 -0
- data/spec/dummy/test/models/user_test.rb +7 -0
- data/spec/dummy/test/models/version_test.rb +7 -0
- data/spec/dummy/test/test_helper.rb +10 -0
- data/spec/exporters/csv_exporter_spec.rb +240 -0
- data/spec/exporters/csv_generator_spec.rb +139 -0
- data/spec/exporters/excel_exporter_spec.rb +193 -0
- data/spec/exporters/excel_generator_spec.rb +181 -0
- data/spec/exporters/generator_base_spec.rb +45 -0
- data/spec/factories/categories.rb +7 -0
- data/spec/factories/factories.rb +18 -0
- data/spec/factories/milestone.rb +16 -0
- data/spec/factories/projects.rb +41 -0
- data/spec/fixtures/BadAssociationName.xls +0 -0
- data/spec/fixtures/DemoNegativeTesting.xls +0 -0
- data/spec/fixtures/ProjectConfiguration.yml +18 -0
- data/spec/fixtures/ProjectsMultiCategories.xls +0 -0
- data/spec/fixtures/ProjectsMultiCategoriesHeaderLookup.xls +0 -0
- data/spec/fixtures/ProjectsSingleCategories.xls +0 -0
- data/spec/fixtures/ProjectsSingleCategories.xlsx +0 -0
- data/spec/fixtures/SimpleProjects.xls +0 -0
- data/spec/fixtures/config/database.yml +28 -0
- data/spec/fixtures/csv/BadAssociationName.csv +6 -0
- data/spec/fixtures/csv/DemoNegativeTesting.csv +6 -0
- data/spec/fixtures/csv/ProjectsMultiCategories.csv +5 -0
- data/spec/fixtures/csv/ProjectsMultiCategoriesHeaderLookup.csv +5 -0
- data/spec/fixtures/csv/ProjectsSingleCategories.csv +5 -0
- data/spec/fixtures/csv/SimpleProjects.csv +4 -0
- data/spec/fixtures/db/migrate/20110803201325_create_test_bed.rb +98 -0
- data/spec/fixtures/db/migrate/20121009161700_add_digitals.rb +24 -0
- data/spec/fixtures/db/seeds.rb +9 -0
- data/spec/fixtures/images/DEMO_001_ror_bag.jpeg +0 -0
- data/spec/fixtures/images/DEMO_002_Powerstation.jpeg +0 -0
- data/spec/fixtures/images/DEMO_003_ror_mug.jpeg +0 -0
- data/spec/fixtures/images/DEMO_004_ror_ringer.jpeg +0 -0
- data/spec/fixtures/load_datashift.thor +3 -0
- data/spec/fixtures/models/category.rb +6 -0
- data/spec/fixtures/models/digital.rb +22 -0
- data/spec/fixtures/models/empty.rb +2 -0
- data/spec/fixtures/models/loader_release.rb +10 -0
- data/spec/fixtures/models/long_and_complex_table_linked_to_version.rb +6 -0
- data/spec/fixtures/models/milestone.rb +15 -0
- data/spec/fixtures/models/owner.rb +13 -0
- data/spec/fixtures/models/project.rb +53 -0
- data/spec/fixtures/models/user.rb +5 -0
- data/spec/fixtures/models/version.rb +7 -0
- data/spec/fixtures/results/exp_project_assoc_headers.xls +0 -0
- data/spec/fixtures/results/exp_project_collection_spec.csv +2 -0
- data/spec/fixtures/results/exp_project_export.xls +0 -0
- data/spec/fixtures/results/exp_project_first_export.xls +0 -0
- data/spec/fixtures/results/exp_project_plus_assoc.xls +0 -0
- data/spec/fixtures/results/exp_project_plus_assoc_export_spec.csv +9 -0
- data/spec/fixtures/results/gen_project_plus_assoc_template.xls +0 -0
- data/spec/fixtures/results/gen_project_plus_some_assoc_template.xls +0 -0
- data/spec/fixtures/results/gen_project_template.xls +0 -0
- data/spec/fixtures/results/project_and_assoc_in_hash_export.xls +0 -0
- data/spec/fixtures/results/project_and_assoc_in_json_export.csv +9 -0
- data/spec/fixtures/results/project_and_assoc_in_json_export.xls +0 -0
- data/spec/fixtures/results/project_export_spec_with_custom_delim_,.csv +2 -0
- data/spec/fixtures/results/project_export_spec_with_custom_delim_/302/243.csv +2 -0
- data/spec/fixtures/results/project_export_spec_with_custom_delim_/302/247.csv +2 -0
- data/spec/fixtures/results/project_plus_assoc_template.csv +1 -0
- data/spec/fixtures/results/project_plus_some_assoc_template.csv +1 -0
- data/spec/fixtures/results/project_remove_export_spec.csv +2 -0
- data/spec/fixtures/results/project_template.csv +1 -0
- data/spec/fixtures/results/project_with_methods_export_spec.csv +2 -0
- data/spec/fixtures/results/thor_spec_gen_project.csv +1 -0
- data/spec/fixtures/sandbox_example.thor +4 -0
- data/spec/fixtures/simple_export_spec.xls +0 -0
- data/spec/fixtures/simple_template_spec.xls +0 -0
- data/spec/fixtures/test_model_defs.rb +7 -0
- data/spec/loaders/csv_loader_spec.rb +206 -0
- data/spec/loaders/data_flow_excel_loader_spec.rb +290 -0
- data/spec/loaders/excel_loader_failures_spec.rb +67 -0
- data/spec/loaders/excel_loader_spec.rb +294 -0
- data/spec/loaders/loader_base_spec.rb +29 -0
- data/spec/loaders/paperclip_loader_spec.rb +106 -0
- data/spec/log/datashift.log +14930 -0
- data/spec/private/digitals/1/DEMO_003_ror_mug.jpeg +0 -0
- data/spec/private/digitals/2/DEMO_002_Powerstation.jpeg +0 -0
- data/spec/private/digitals/3/DEMO_004_ror_ringer.jpeg +0 -0
- data/spec/private/digitals/4/DEMO_001_ror_bag.jpeg +0 -0
- data/spec/spec_helper.rb +26 -230
- data/spec/support/clear_and_manage_contexts.rb +25 -0
- data/spec/support/database_cleaner.rb +32 -0
- data/spec/support/datashift_test_helpers.rb +153 -0
- data/spec/support/files_paths_helper.rb +13 -0
- data/spec/support/fixtures/results/mapping_template.yaml +15 -0
- data/spec/support/sandbox.rb +136 -0
- metadata +804 -85
- data/README.markdown +0 -274
- data/README.rdoc +0 -19
- data/VERSION +0 -1
- data/datashift.gemspec +0 -48
- data/lib/applications/jruby/old_pre_proxy_jexcel_file.rb +0 -437
- data/lib/datashift/data_transforms.rb +0 -83
- data/lib/datashift/mapping_file_definitions.rb +0 -88
- data/lib/datashift/mapping_service.rb +0 -91
- data/lib/datashift/method_detail.rb +0 -165
- data/lib/datashift/method_details_manager.rb +0 -95
- data/lib/datashift/method_dictionary.rb +0 -281
- data/lib/datashift/method_mapper.rb +0 -174
- data/lib/datashift/thor_base.rb +0 -38
- data/lib/generators/mapping_generator.rb +0 -112
- data/lib/helpers/core_ext/csv_file.rb +0 -33
- data/lib/helpers/core_ext/to_b.rb +0 -24
- data/lib/loaders/reporter.rb +0 -58
- data/lib/thor/export.thor +0 -175
- data/lib/thor/generate.thor +0 -191
- data/lib/thor/import.thor +0 -110
- data/lib/thor/mapping.thor +0 -65
- data/lib/thor/tools.thor +0 -84
- data/spec/Gemfile +0 -31
- data/spec/Gemfile.lock +0 -134
- data/spec/csv_exporter_spec.rb +0 -144
- data/spec/csv_generator_spec.rb +0 -159
- data/spec/csv_loader_spec.rb +0 -212
- data/spec/datashift_spec.rb +0 -55
- data/spec/excel_exporter_spec.rb +0 -199
- data/spec/excel_generator_spec.rb +0 -203
- data/spec/excel_loader_spec.rb +0 -237
- data/spec/excel_spec.rb +0 -203
- data/spec/loader_base_spec.rb +0 -166
- data/spec/mapping_spec.rb +0 -117
- data/spec/method_dictionary_spec.rb +0 -300
- data/spec/method_mapper_spec.rb +0 -100
- data/spec/model_mapper_spec.rb +0 -41
- data/spec/paperclip_loader_spec.rb +0 -92
- data/spec/populator_spec.rb +0 -128
- data/spec/thor_spec.rb +0 -90
- data/tasks/file_tasks.rake +0 -37
- data/tasks/word_to_seedfu.rake +0 -167
data/spec/method_mapper_spec.rb
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
# Copyright:: (c) Autotelik Media Ltd 2011
|
|
2
|
-
# Author :: Tom Statter
|
|
3
|
-
# Date :: Aug 2011
|
|
4
|
-
# License:: MIT
|
|
5
|
-
#
|
|
6
|
-
# Details:: Specs for MethodMapper aspect of Active Record Loader
|
|
7
|
-
# MethodMapper provides the bridge between 'strings' e.g column headings
|
|
8
|
-
# and a classes different types of assignment operators
|
|
9
|
-
#
|
|
10
|
-
require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
11
|
-
|
|
12
|
-
require 'method_mapper'
|
|
13
|
-
|
|
14
|
-
describe 'Method Mapper' do
|
|
15
|
-
|
|
16
|
-
before(:each) do
|
|
17
|
-
DataShift::MethodDictionary.clear
|
|
18
|
-
|
|
19
|
-
@method_mapper = DataShift::MethodMapper.new
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "should find a set of methods based on a list of column symbols" do
|
|
23
|
-
|
|
24
|
-
headers = [:value_as_string, :owner, :value_as_boolean, :value_as_double]
|
|
25
|
-
|
|
26
|
-
method_details = @method_mapper.map_inbound_headers_to_methods( Project, headers )
|
|
27
|
-
|
|
28
|
-
expect(method_details.size).to eq 4
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "should leave nil in set of methods when no such operator" do
|
|
32
|
-
|
|
33
|
-
headers = [:value_as_string, :owner, :bad_no_such_column, :value_as_boolean, :value_as_double, :more_rubbish_as_nil]
|
|
34
|
-
|
|
35
|
-
method_details = @method_mapper.map_inbound_headers_to_methods( Project, headers )
|
|
36
|
-
|
|
37
|
-
expect(method_details.size).to eq 6
|
|
38
|
-
|
|
39
|
-
method_details[2].should be_nil
|
|
40
|
-
method_details[5].should be_nil
|
|
41
|
-
|
|
42
|
-
method_details[0].should be_a DataShift::MethodDetail
|
|
43
|
-
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "should map a list of column names to a set of method details" do
|
|
47
|
-
|
|
48
|
-
headers = %w{ value_as_double value_as_string bad_no_such_column value_as_boolean }
|
|
49
|
-
|
|
50
|
-
@method_mapper.map_inbound_headers_to_methods( Project, headers )
|
|
51
|
-
|
|
52
|
-
method_details = @method_mapper.map_inbound_headers_to_methods( Project, headers )
|
|
53
|
-
|
|
54
|
-
expect(method_details.size).to eq 4
|
|
55
|
-
|
|
56
|
-
method_details[2].should be_nil
|
|
57
|
-
|
|
58
|
-
method_details[0].should be_a DataShift::MethodDetail
|
|
59
|
-
method_details.last.should be_a DataShift::MethodDetail
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it "should populate a method detail instance based on column and database info" do
|
|
63
|
-
|
|
64
|
-
headers = [:value_as_string, :owner, :value_as_boolean, :value_as_double]
|
|
65
|
-
|
|
66
|
-
method_details = @method_mapper.map_inbound_headers_to_methods( Project, headers )
|
|
67
|
-
|
|
68
|
-
expect(method_details.size).to eq 4
|
|
69
|
-
|
|
70
|
-
method_details[0].should be_a DataShift::MethodDetail
|
|
71
|
-
|
|
72
|
-
headers.each_with_index do |c, i|
|
|
73
|
-
method_details[i].column_index.should == i
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "should map between user name and real class operator and store in method detail instance" do
|
|
79
|
-
|
|
80
|
-
headers = [ "Value as string", 'owner', "value_as boolean", 'Value_As_Double']
|
|
81
|
-
|
|
82
|
-
operators = %w{ value_as_string owner value_as_boolean value_as_double }
|
|
83
|
-
|
|
84
|
-
method_details = @method_mapper.map_inbound_headers_to_methods( Project, headers )
|
|
85
|
-
|
|
86
|
-
expect(method_details.size).to eq 4
|
|
87
|
-
|
|
88
|
-
method_details.should_not include nil
|
|
89
|
-
|
|
90
|
-
headers.each_with_index do |c, i|
|
|
91
|
-
method_details[i].column_index.should == i
|
|
92
|
-
method_details[i].name.should == c
|
|
93
|
-
method_details[i].operator.should == operators[i]
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
end
|
data/spec/model_mapper_spec.rb
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Copyright:: (c) Autotelik Media Ltd 2015
|
|
2
|
-
# Author :: Tom Statter
|
|
3
|
-
# Date :: Aug 2015
|
|
4
|
-
# License:: MIT
|
|
5
|
-
#
|
|
6
|
-
# Details:: Specs for Mapping aspects
|
|
7
|
-
# Provides automatic mapping between different system's column headings
|
|
8
|
-
#
|
|
9
|
-
require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
10
|
-
|
|
11
|
-
require 'mapping_generator'
|
|
12
|
-
|
|
13
|
-
describe 'ModelMapper' do
|
|
14
|
-
|
|
15
|
-
before(:all) do
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
before(:each) do
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "should identify the class from a string" do
|
|
22
|
-
# Similar to const_get_from_string except this version
|
|
23
|
-
# returns nil if no such class found
|
|
24
|
-
# Support modules e.g "Spree::Property"
|
|
25
|
-
#
|
|
26
|
-
expect(DataShift::ModelMapper.class_from_string( Project)).to be_a Class
|
|
27
|
-
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it "should identify the class from a string contianing modules" do
|
|
31
|
-
# Similar to const_get_from_string except this version
|
|
32
|
-
# returns nil if no such class found
|
|
33
|
-
# Support modules e.g "Spree::Property"
|
|
34
|
-
#
|
|
35
|
-
expect(DataShift::ModelMapper.class_from_string( DataShift::AClassInAModule )).to be_a Class
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
end
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# Copyright:: (c) Autotelik Media Ltd 2011
|
|
2
|
-
# Author :: Tom Statter
|
|
3
|
-
# Date :: Aug 2011
|
|
4
|
-
# License:: MIT
|
|
5
|
-
#
|
|
6
|
-
# Details:: Specs for base class Loader
|
|
7
|
-
#
|
|
8
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
|
9
|
-
|
|
10
|
-
require 'paperclip/attachment_loader'
|
|
11
|
-
|
|
12
|
-
Paperclip.options[:command_path] = "/usr/local/bin/"
|
|
13
|
-
|
|
14
|
-
describe 'PaperClip Bulk Loader' do
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
include DataShift::Logging
|
|
18
|
-
|
|
19
|
-
module Paperclip
|
|
20
|
-
module Interpolations
|
|
21
|
-
|
|
22
|
-
# Returns the Rails.root constant.
|
|
23
|
-
def rails_root attachment, style_name
|
|
24
|
-
'.'
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
before(:each) do
|
|
30
|
-
@attachment_klass = Digital
|
|
31
|
-
|
|
32
|
-
@common_options = {:verbose => true }
|
|
33
|
-
|
|
34
|
-
@attachment_path = File.join(fixtures_path, 'images')
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it "should create a new paperclip loader and define attachment class" do
|
|
38
|
-
loader = DataShift::Paperclip::AttachmentLoader.new(@attachment_klass, nil, @common_options)
|
|
39
|
-
|
|
40
|
-
loader.load_object_class.should == Digital
|
|
41
|
-
loader.load_object.should be_a Digital
|
|
42
|
-
|
|
43
|
-
loader.attach_to_klass.should == nil
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "should create loader,define attachment class and define class to attach to" do
|
|
47
|
-
|
|
48
|
-
opts = { :attach_to_klass => Owner }.merge(@common_options)
|
|
49
|
-
|
|
50
|
-
loader = DataShift::Paperclip::AttachmentLoader.new(@attachment_klass, nil, opts)
|
|
51
|
-
|
|
52
|
-
loader.attach_to_klass.should == Owner
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
it "should bulk load from a directory file system" do
|
|
56
|
-
|
|
57
|
-
# these names should be included in the attachment file name somewhere
|
|
58
|
-
["DEMO_001", "DEMO_002", "DEMO_003", "DEMO_004"].each do |n|
|
|
59
|
-
Owner.create( :name => n )
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
opts = { :attach_to_klass => Owner,
|
|
63
|
-
:attach_to_find_by_field => :name,
|
|
64
|
-
:attach_to_field => :digitals,
|
|
65
|
-
:split_file_name_on => '_'
|
|
66
|
-
}.merge(@common_options)
|
|
67
|
-
|
|
68
|
-
loader = DataShift::Paperclip::AttachmentLoader.new(@attachment_klass, nil, opts)
|
|
69
|
-
|
|
70
|
-
loader.process_from_filesystem(@attachment_path, opts)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "should handle not beign able to find matching record" do
|
|
74
|
-
|
|
75
|
-
# these names should be included in the attachment file name somewhere
|
|
76
|
-
names = ["DEMO_001", "DEMO_002", "DEMO_003", "DEMO_004"]
|
|
77
|
-
|
|
78
|
-
names.each do |n|
|
|
79
|
-
Owner.create( :name => n )
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
opts = { :attach_to_klass => Owner, :attach_to_find_by_field => :name }.merge(@common_options)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
loader = DataShift::Paperclip::AttachmentLoader.new(@attachment_klass, nil, opts)
|
|
86
|
-
|
|
87
|
-
loader.process_from_filesystem(@attachment_path, opts)
|
|
88
|
-
|
|
89
|
-
expect(Dir.glob("MissingAttachmentRecords/*.jpeg", File::FNM_CASEFOLD).size).to eq names.size
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
end
|
data/spec/populator_spec.rb
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
# Copyright:: (c) Autotelik Media Ltd 2011
|
|
2
|
-
# Author :: Tom Statter
|
|
3
|
-
# Date :: Aug 2011
|
|
4
|
-
# License:: MIT
|
|
5
|
-
#
|
|
6
|
-
# Details:: Specs for base class Loader
|
|
7
|
-
#
|
|
8
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
|
9
|
-
|
|
10
|
-
require 'erb'
|
|
11
|
-
|
|
12
|
-
describe 'Populator' do
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
before(:each) do
|
|
16
|
-
@loader = DataShift::LoaderBase.new(Project)
|
|
17
|
-
|
|
18
|
-
@populator = DataShift::Populator.new
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "should be able to create a new populator" do
|
|
23
|
-
local_populator = DataShift::Populator.new
|
|
24
|
-
local_populator.should_not be_nil
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
it "should be able to create and assign populator as string to loader" do
|
|
29
|
-
|
|
30
|
-
class AnotherPopulator
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
options = {:populator => 'AnotherPopulator' }
|
|
34
|
-
|
|
35
|
-
local_loader = DataShift::LoaderBase.new(Project, nil, options)
|
|
36
|
-
|
|
37
|
-
local_loader.populator.should_not be_nil
|
|
38
|
-
local_loader.populator.should be_a AnotherPopulator
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it "should be able to create and assign populator as class to loader" do
|
|
42
|
-
|
|
43
|
-
class AnotherPopulator
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
options = {:populator => AnotherPopulator }
|
|
47
|
-
|
|
48
|
-
local_loader = DataShift::LoaderBase.new(Project, nil, options)
|
|
49
|
-
|
|
50
|
-
local_loader.populator.should_not be_nil
|
|
51
|
-
local_loader.populator.should be_a AnotherPopulator
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it "should process a string value against an assigment column" do
|
|
55
|
-
|
|
56
|
-
column_heading = 'Value As String'
|
|
57
|
-
value = 'Another Lazy fox '
|
|
58
|
-
|
|
59
|
-
method_detail = DataShift::MethodDictionary.find_method_detail( Project, column_heading )
|
|
60
|
-
|
|
61
|
-
expect(method_detail).to be_a DataShift::MethodDetail
|
|
62
|
-
|
|
63
|
-
pop_value, attributes = @populator.prepare_data(method_detail, value)
|
|
64
|
-
|
|
65
|
-
pop_value.should == value
|
|
66
|
-
attributes.should be_a Hash
|
|
67
|
-
attributes.should be_empty
|
|
68
|
-
|
|
69
|
-
# check for white space preservation
|
|
70
|
-
value = 'Another Lazy fox'
|
|
71
|
-
|
|
72
|
-
pop_value, attributes = @populator.prepare_data(method_detail, value)
|
|
73
|
-
|
|
74
|
-
pop_value.should == value
|
|
75
|
-
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "should process a DSL string into a real hash" do
|
|
79
|
-
|
|
80
|
-
str1 = "{:name => 'the_fox' }"
|
|
81
|
-
|
|
82
|
-
x = DataShift::Populator::string_to_hash( str1 )
|
|
83
|
-
|
|
84
|
-
expect(x).to be_a Hash
|
|
85
|
-
expect(x.size).to eq 1
|
|
86
|
-
|
|
87
|
-
str2 = "{:name => 'the_fox', 'occupation' => 'fantastic', :food => 'duck soup' }"
|
|
88
|
-
|
|
89
|
-
x = DataShift::Populator::string_to_hash( str2 )
|
|
90
|
-
|
|
91
|
-
expect(x.size).to eq 3
|
|
92
|
-
expect(x.keys).to include 'food'
|
|
93
|
-
expect(x['food']).to eq 'duck soup'
|
|
94
|
-
|
|
95
|
-
str3 = "{:cost_price => '13.45', :price => 23, :sale_price => 4.23 }"
|
|
96
|
-
|
|
97
|
-
x = DataShift::Populator::string_to_hash( str3 )
|
|
98
|
-
|
|
99
|
-
expect(x.keys).to include 'price'
|
|
100
|
-
expect(x['cost_price']).to eq '13.45'
|
|
101
|
-
expect(x['price']).to eq 23
|
|
102
|
-
expect(x['sale_price']).to eq 4.23
|
|
103
|
-
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
it "should process a string value against an assigment instance method" do
|
|
107
|
-
|
|
108
|
-
value = 'Get up Lazy fox {:name => \'the_fox\' }'
|
|
109
|
-
|
|
110
|
-
DataShift::MethodDictionary.find_operators( Milestone, :instance_methods => true )
|
|
111
|
-
|
|
112
|
-
DataShift::MethodDictionary.build_method_details( Milestone )
|
|
113
|
-
|
|
114
|
-
method_detail = DataShift::MethodDictionary.find_method_detail( Milestone, :title )
|
|
115
|
-
|
|
116
|
-
method_detail.should_not be_nil
|
|
117
|
-
|
|
118
|
-
pop_value, attrs = @populator.prepare_data(method_detail, value)
|
|
119
|
-
|
|
120
|
-
expect(pop_value).to eq 'Get up Lazy fox '
|
|
121
|
-
expect(attrs).to be_a Hash
|
|
122
|
-
expect(attrs.size).to eq 1
|
|
123
|
-
expect(attrs.keys).to include 'name'
|
|
124
|
-
expect(attrs['name']).to eq 'the_fox'
|
|
125
|
-
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
end
|
data/spec/thor_spec.rb
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# Copyright:: (c) Autotelik Media Ltd 2012
|
|
2
|
-
# Author :: Tom Statter
|
|
3
|
-
# Date :: April 20121
|
|
4
|
-
#
|
|
5
|
-
# License:: MIT - Free, OpenSource
|
|
6
|
-
#
|
|
7
|
-
# Details:: Specification for Thor tasks supplied with datashift
|
|
8
|
-
#
|
|
9
|
-
require 'thor'
|
|
10
|
-
require 'thor/group'
|
|
11
|
-
require 'thor/runner'
|
|
12
|
-
|
|
13
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
|
14
|
-
|
|
15
|
-
describe 'Thor high level command line tasks' do
|
|
16
|
-
|
|
17
|
-
before(:all) do
|
|
18
|
-
DataShift::load_commands
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
before(:each) do
|
|
22
|
-
db_clear_connections
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
#thor datashift:export:csv -m, --model=MODEL -r, --result=RESULT ...
|
|
26
|
-
#thor datashift:export:excel -m, --model=MODEL -r, --result=RESULT ...
|
|
27
|
-
#thor datashift:generate:excel -m, --model=MODEL -r, --result=RESULT ...
|
|
28
|
-
#thor datashift:import:csv -i, --input=INPUT -m, --model=MODEL ...
|
|
29
|
-
#thor datashift:import:excel -i, --input=INPUT -m, --model=MODEL ...
|
|
30
|
-
#thor datashift:paperclip:attach -a, --attachment-klass=ATTACHMENT_KLASS -f, -... ...
|
|
31
|
-
#thor datashift:tools:zip -p, --path=PATH -r, --results=RESULTS ...
|
|
32
|
-
|
|
33
|
-
it "should list available datashift thor tasks" do
|
|
34
|
-
|
|
35
|
-
skip "better understanding of testign thor"
|
|
36
|
-
|
|
37
|
-
#x = capture(:stdout){ Thor::Runner.start(["list"]) }
|
|
38
|
-
#x.should start_with("datashift\n--------")
|
|
39
|
-
#x.should =~ / csv -i/
|
|
40
|
-
#x.should =~ / excel -i/
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# N.B Tasks that fire up Rails application need to be run in own Thread or else get
|
|
44
|
-
# ... You cannot have more than one Rails::Application
|
|
45
|
-
|
|
46
|
-
it "should be able to import a model from a complex excel through import CLI" do
|
|
47
|
-
skip "How to run once rails already initialzed .. error : database configuration does not specify adapter"
|
|
48
|
-
|
|
49
|
-
x = Thread.new {
|
|
50
|
-
run_in(rails_sandbox()) do
|
|
51
|
-
stdout = capture(:stdout){
|
|
52
|
-
Thor::Runner.start(["datashift:import:excel", '-m', 'Project', '-i', ifixture_file('ProjectsSingleCategories.xls')])
|
|
53
|
-
}
|
|
54
|
-
puts stdout
|
|
55
|
-
end
|
|
56
|
-
}
|
|
57
|
-
x.join
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
it "should attach Images to a specified Class from a directory" do
|
|
62
|
-
|
|
63
|
-
skip "better understanding of testign thor"
|
|
64
|
-
|
|
65
|
-
# Owner has_many :digitals of type Digital
|
|
66
|
-
|
|
67
|
-
# Owner has a name by which we can id/look it up
|
|
68
|
-
|
|
69
|
-
args = [
|
|
70
|
-
'--attachment-klass', 'Digital',
|
|
71
|
-
'--attach-to-klass', 'Owner',
|
|
72
|
-
'--attach-to-find-by-field', 'name',
|
|
73
|
-
'--attach-to-field', 'digitals']
|
|
74
|
-
|
|
75
|
-
# which boils down to
|
|
76
|
-
#
|
|
77
|
-
# Digital.find_by_name( abc ).digitals << :Digital.new( File.read('abc_001.jpg') )
|
|
78
|
-
|
|
79
|
-
args << '--input' << File.join(fixtures_path(), 'images')
|
|
80
|
-
|
|
81
|
-
puts "Running attach with: #{args}"
|
|
82
|
-
|
|
83
|
-
x = capture(:stdout){ Thor::Runner.start(["datashift:paperclip:attach", [], args]) }
|
|
84
|
-
|
|
85
|
-
expect(x).to include ("datashift\n--------")
|
|
86
|
-
#x.should =~ / csv -i/
|
|
87
|
-
#x.should =~ / excel -i/
|
|
88
|
-
|
|
89
|
-
end
|
|
90
|
-
end
|