gooddata 1.0.0-java
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 +7 -0
- data/.document +5 -0
- data/.editorconfig +12 -0
- data/.flayignore +6 -0
- data/.gitignore +38 -0
- data/.pronto.yml +3 -0
- data/.rspec +5 -0
- data/.rubocop.yml +101 -0
- data/.travis.yml +9 -0
- data/.yardopts +22 -0
- data/CHANGELOG.md +272 -0
- data/CLI.md +435 -0
- data/CONTRIBUTING.md +38 -0
- data/DEPENDENCIES.md +880 -0
- data/Dockerfile.jruby +17 -0
- data/Dockerfile.ruby +19 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/LICENSE +22 -0
- data/LICENSE.rb +5 -0
- data/README.md +78 -0
- data/Rakefile +204 -0
- data/TODO.md +32 -0
- data/authors.sh +4 -0
- data/bin/gooddata +7 -0
- data/ci.rake +47 -0
- data/dependency_decisions.yml +104 -0
- data/docker-compose.yml +34 -0
- data/gooddata +9 -0
- data/gooddata.gemspec +72 -0
- data/lib/gooddata.rb +34 -0
- data/lib/gooddata/app/app.rb +16 -0
- data/lib/gooddata/bricks/base_downloader.rb +86 -0
- data/lib/gooddata/bricks/brick.rb +37 -0
- data/lib/gooddata/bricks/bricks.rb +17 -0
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +41 -0
- data/lib/gooddata/bricks/middleware/base_middleware.rb +57 -0
- data/lib/gooddata/bricks/middleware/bench_middleware.rb +25 -0
- data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +37 -0
- data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +21 -0
- data/lib/gooddata/bricks/middleware/dwh_middleware.rb +41 -0
- data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +48 -0
- data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +36 -0
- data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +112 -0
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +33 -0
- data/lib/gooddata/bricks/middleware/middleware.rb +12 -0
- data/lib/gooddata/bricks/middleware/restforce_middleware.rb +58 -0
- data/lib/gooddata/bricks/middleware/stdout_middleware.rb +23 -0
- data/lib/gooddata/bricks/middleware/twitter_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +37 -0
- data/lib/gooddata/bricks/pipeline.rb +25 -0
- data/lib/gooddata/bricks/utils.rb +18 -0
- data/lib/gooddata/cli/cli.rb +27 -0
- data/lib/gooddata/cli/commands/auth_cmd.rb +29 -0
- data/lib/gooddata/cli/commands/domain_cmd.rb +28 -0
- data/lib/gooddata/cli/commands/project_cmd.rb +28 -0
- data/lib/gooddata/cli/hooks.rb +56 -0
- data/lib/gooddata/cli/shared.rb +66 -0
- data/lib/gooddata/cli/terminal.rb +20 -0
- data/lib/gooddata/client.rb +67 -0
- data/lib/gooddata/commands/api.rb +64 -0
- data/lib/gooddata/commands/auth.rb +107 -0
- data/lib/gooddata/commands/base.rb +12 -0
- data/lib/gooddata/commands/commands.rb +12 -0
- data/lib/gooddata/commands/datasets.rb +148 -0
- data/lib/gooddata/commands/datawarehouse.rb +20 -0
- data/lib/gooddata/commands/domain.rb +40 -0
- data/lib/gooddata/commands/process.rb +67 -0
- data/lib/gooddata/commands/project.rb +144 -0
- data/lib/gooddata/commands/projects.rb +20 -0
- data/lib/gooddata/commands/role.rb +36 -0
- data/lib/gooddata/commands/runners.rb +47 -0
- data/lib/gooddata/commands/scaffold.rb +69 -0
- data/lib/gooddata/commands/user.rb +39 -0
- data/lib/gooddata/connection.rb +127 -0
- data/lib/gooddata/core/core.rb +12 -0
- data/lib/gooddata/core/logging.rb +105 -0
- data/lib/gooddata/core/nil_logger.rb +32 -0
- data/lib/gooddata/core/project.rb +74 -0
- data/lib/gooddata/core/rest.rb +149 -0
- data/lib/gooddata/core/user.rb +20 -0
- data/lib/gooddata/data/data.rb +12 -0
- data/lib/gooddata/data/guesser.rb +122 -0
- data/lib/gooddata/exceptions/attr_element_not_found.rb +16 -0
- data/lib/gooddata/exceptions/command_failed.rb +11 -0
- data/lib/gooddata/exceptions/exceptions.rb +12 -0
- data/lib/gooddata/exceptions/execution_limit_exceeded.rb +13 -0
- data/lib/gooddata/exceptions/export_clone.rb +4 -0
- data/lib/gooddata/exceptions/filter_maqlization.rb +16 -0
- data/lib/gooddata/exceptions/import_clone.rb +4 -0
- data/lib/gooddata/exceptions/malformed_user.rb +15 -0
- data/lib/gooddata/exceptions/maql_execution.rb +16 -0
- data/lib/gooddata/exceptions/no_project_error.rb +19 -0
- data/lib/gooddata/exceptions/object_migration.rb +32 -0
- data/lib/gooddata/exceptions/project_not_found.rb +13 -0
- data/lib/gooddata/exceptions/segment_not_empty.rb +18 -0
- data/lib/gooddata/exceptions/uncomputable_report.rb +13 -0
- data/lib/gooddata/exceptions/user_in_different_domain.rb +15 -0
- data/lib/gooddata/exceptions/validation_error.rb +16 -0
- data/lib/gooddata/extensions/big_decimal.rb +17 -0
- data/lib/gooddata/extensions/class.rb +11 -0
- data/lib/gooddata/extensions/enumerable.rb +39 -0
- data/lib/gooddata/extensions/extensions.rb +10 -0
- data/lib/gooddata/extensions/false.rb +23 -0
- data/lib/gooddata/extensions/hash.rb +49 -0
- data/lib/gooddata/extensions/integer.rb +5 -0
- data/lib/gooddata/extensions/nil.rb +19 -0
- data/lib/gooddata/extensions/numeric.rb +15 -0
- data/lib/gooddata/extensions/object.rb +31 -0
- data/lib/gooddata/extensions/string.rb +7 -0
- data/lib/gooddata/extensions/symbol.rb +15 -0
- data/lib/gooddata/extensions/true.rb +23 -0
- data/lib/gooddata/extract.rb +21 -0
- data/lib/gooddata/goodzilla/goodzilla.rb +160 -0
- data/lib/gooddata/helpers/auth_helpers.rb +75 -0
- data/lib/gooddata/helpers/csv_helper.rb +61 -0
- data/lib/gooddata/helpers/data_helper.rb +129 -0
- data/lib/gooddata/helpers/erb_helper.rb +23 -0
- data/lib/gooddata/helpers/global_helpers.rb +266 -0
- data/lib/gooddata/helpers/global_helpers_params.rb +292 -0
- data/lib/gooddata/helpers/helpers.rb +10 -0
- data/lib/gooddata/lcm/actions/actions.rb +12 -0
- data/lib/gooddata/lcm/actions/apply_custom_maql.rb +80 -0
- data/lib/gooddata/lcm/actions/associate_clients.rb +87 -0
- data/lib/gooddata/lcm/actions/base_action.rb +23 -0
- data/lib/gooddata/lcm/actions/collect_ca_metrics.rb +53 -0
- data/lib/gooddata/lcm/actions/collect_client_projects.rb +78 -0
- data/lib/gooddata/lcm/actions/collect_clients.rb +128 -0
- data/lib/gooddata/lcm/actions/collect_data_product.rb +57 -0
- data/lib/gooddata/lcm/actions/collect_dynamic_schedule_params.rb +62 -0
- data/lib/gooddata/lcm/actions/collect_ldm_objects.rb +56 -0
- data/lib/gooddata/lcm/actions/collect_meta.rb +88 -0
- data/lib/gooddata/lcm/actions/collect_segment_clients.rb +113 -0
- data/lib/gooddata/lcm/actions/collect_segments.rb +72 -0
- data/lib/gooddata/lcm/actions/collect_tagged_objects.rb +80 -0
- data/lib/gooddata/lcm/actions/collect_users_brick_users.rb +46 -0
- data/lib/gooddata/lcm/actions/create_segment_masters.rb +160 -0
- data/lib/gooddata/lcm/actions/ensure_data_product.rb +53 -0
- data/lib/gooddata/lcm/actions/ensure_release_table.rb +53 -0
- data/lib/gooddata/lcm/actions/ensure_segments.rb +32 -0
- data/lib/gooddata/lcm/actions/ensure_technical_users_domain.rb +70 -0
- data/lib/gooddata/lcm/actions/ensure_technical_users_project.rb +83 -0
- data/lib/gooddata/lcm/actions/execute_schedules.rb +128 -0
- data/lib/gooddata/lcm/actions/hello_world.rb +41 -0
- data/lib/gooddata/lcm/actions/import_object_collections.rb +60 -0
- data/lib/gooddata/lcm/actions/print_actions.rb +58 -0
- data/lib/gooddata/lcm/actions/print_modes.rb +69 -0
- data/lib/gooddata/lcm/actions/print_types.rb +52 -0
- data/lib/gooddata/lcm/actions/provision_clients.rb +89 -0
- data/lib/gooddata/lcm/actions/purge_clients.rb +58 -0
- data/lib/gooddata/lcm/actions/rename_existing_client_projects.rb +70 -0
- data/lib/gooddata/lcm/actions/segments_filter.rb +50 -0
- data/lib/gooddata/lcm/actions/synchronize_attribute_drillpaths.rb +64 -0
- data/lib/gooddata/lcm/actions/synchronize_cas.rb +72 -0
- data/lib/gooddata/lcm/actions/synchronize_clients.rb +94 -0
- data/lib/gooddata/lcm/actions/synchronize_color_palette.rb +67 -0
- data/lib/gooddata/lcm/actions/synchronize_etls_in_segment.rb +155 -0
- data/lib/gooddata/lcm/actions/synchronize_label_types.rb +64 -0
- data/lib/gooddata/lcm/actions/synchronize_ldm.rb +82 -0
- data/lib/gooddata/lcm/actions/synchronize_meta.rb +52 -0
- data/lib/gooddata/lcm/actions/synchronize_new_segments.rb +61 -0
- data/lib/gooddata/lcm/actions/synchronize_processes.rb +66 -0
- data/lib/gooddata/lcm/actions/synchronize_schedules.rb +91 -0
- data/lib/gooddata/lcm/actions/synchronize_tag_objects.rb +64 -0
- data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +210 -0
- data/lib/gooddata/lcm/actions/synchronize_user_groups.rb +53 -0
- data/lib/gooddata/lcm/actions/synchronize_users.rb +336 -0
- data/lib/gooddata/lcm/actions/update_release_table.rb +77 -0
- data/lib/gooddata/lcm/data/create_lcm_release.sql.erb +6 -0
- data/lib/gooddata/lcm/data/insert_into_lcm_release.sql.erb +11 -0
- data/lib/gooddata/lcm/data/select_from_lcm_release.sql.erb +8 -0
- data/lib/gooddata/lcm/data/update_lcm_release.sql.erb +7 -0
- data/lib/gooddata/lcm/dsl/dsl.rb +50 -0
- data/lib/gooddata/lcm/dsl/params_dsl.rb +61 -0
- data/lib/gooddata/lcm/dsl/type_dsl.rb +62 -0
- data/lib/gooddata/lcm/helpers/check_helper.rb +41 -0
- data/lib/gooddata/lcm/helpers/helpers.rb +12 -0
- data/lib/gooddata/lcm/helpers/tags_helper.rb +36 -0
- data/lib/gooddata/lcm/lcm.rb +325 -0
- data/lib/gooddata/lcm/lcm2.rb +400 -0
- data/lib/gooddata/lcm/types/base_type.rb +29 -0
- data/lib/gooddata/lcm/types/class/ads_client.rb +35 -0
- data/lib/gooddata/lcm/types/class/class.rb +21 -0
- data/lib/gooddata/lcm/types/class/gd_client.rb +35 -0
- data/lib/gooddata/lcm/types/class/types.rb +12 -0
- data/lib/gooddata/lcm/types/complex/complex.rb +33 -0
- data/lib/gooddata/lcm/types/complex/release_query.rb +35 -0
- data/lib/gooddata/lcm/types/complex/segment.rb +40 -0
- data/lib/gooddata/lcm/types/complex/synchronization_info.rb +35 -0
- data/lib/gooddata/lcm/types/complex/tokens.rb +31 -0
- data/lib/gooddata/lcm/types/complex/types.rb +12 -0
- data/lib/gooddata/lcm/types/complex/update_preference.rb +38 -0
- data/lib/gooddata/lcm/types/complex/users_brick_config.rb +32 -0
- data/lib/gooddata/lcm/types/param.rb +16 -0
- data/lib/gooddata/lcm/types/scalar/bool.rb +22 -0
- data/lib/gooddata/lcm/types/scalar/hash.rb +22 -0
- data/lib/gooddata/lcm/types/scalar/integer.rb +22 -0
- data/lib/gooddata/lcm/types/scalar/object.rb +22 -0
- data/lib/gooddata/lcm/types/scalar/string.rb +22 -0
- data/lib/gooddata/lcm/types/scalar/types.rb +12 -0
- data/lib/gooddata/lcm/types/special/array.rb +33 -0
- data/lib/gooddata/lcm/types/special/enum.rb +15 -0
- data/lib/gooddata/lcm/types/special/types.rb +12 -0
- data/lib/gooddata/lcm/types/types.rb +12 -0
- data/lib/gooddata/lcm/user_bricks_helper.rb +32 -0
- data/lib/gooddata/mixins/author.rb +26 -0
- data/lib/gooddata/mixins/content_getter.rb +15 -0
- data/lib/gooddata/mixins/content_property_reader.rb +17 -0
- data/lib/gooddata/mixins/content_property_writer.rb +17 -0
- data/lib/gooddata/mixins/contributor.rb +20 -0
- data/lib/gooddata/mixins/data_getter.rb +15 -0
- data/lib/gooddata/mixins/data_property_reader.rb +19 -0
- data/lib/gooddata/mixins/data_property_writer.rb +19 -0
- data/lib/gooddata/mixins/inspector.rb +53 -0
- data/lib/gooddata/mixins/is_attribute.rb +17 -0
- data/lib/gooddata/mixins/is_dimension.rb +17 -0
- data/lib/gooddata/mixins/is_fact.rb +17 -0
- data/lib/gooddata/mixins/is_folder.rb +11 -0
- data/lib/gooddata/mixins/is_label.rb +19 -0
- data/lib/gooddata/mixins/links.rb +15 -0
- data/lib/gooddata/mixins/md_finders.rb +79 -0
- data/lib/gooddata/mixins/md_grantees.rb +42 -0
- data/lib/gooddata/mixins/md_id_to_uri.rb +39 -0
- data/lib/gooddata/mixins/md_json.rb +15 -0
- data/lib/gooddata/mixins/md_lock.rb +87 -0
- data/lib/gooddata/mixins/md_object_id.rb +15 -0
- data/lib/gooddata/mixins/md_object_indexer.rb +74 -0
- data/lib/gooddata/mixins/md_object_query.rb +134 -0
- data/lib/gooddata/mixins/md_relations.rb +43 -0
- data/lib/gooddata/mixins/meta_getter.rb +17 -0
- data/lib/gooddata/mixins/meta_property_reader.rb +19 -0
- data/lib/gooddata/mixins/meta_property_writer.rb +19 -0
- data/lib/gooddata/mixins/mixins.rb +19 -0
- data/lib/gooddata/mixins/not_attribute.rb +17 -0
- data/lib/gooddata/mixins/not_exportable.rb +15 -0
- data/lib/gooddata/mixins/not_fact.rb +17 -0
- data/lib/gooddata/mixins/not_group.rb +17 -0
- data/lib/gooddata/mixins/not_label.rb +19 -0
- data/lib/gooddata/mixins/not_metric.rb +19 -0
- data/lib/gooddata/mixins/obj_id.rb +15 -0
- data/lib/gooddata/mixins/rest_getters.rb +17 -0
- data/lib/gooddata/mixins/rest_resource.rb +47 -0
- data/lib/gooddata/mixins/root_key_getter.rb +15 -0
- data/lib/gooddata/mixins/root_key_setter.rb +15 -0
- data/lib/gooddata/mixins/timestamps.rb +19 -0
- data/lib/gooddata/mixins/to_json.rb +11 -0
- data/lib/gooddata/mixins/uri_getter.rb +9 -0
- data/lib/gooddata/models/ads_output_stage.rb +85 -0
- data/lib/gooddata/models/automated_data_distribution.rb +36 -0
- data/lib/gooddata/models/blueprint/anchor_field.rb +65 -0
- data/lib/gooddata/models/blueprint/attribute_field.rb +45 -0
- data/lib/gooddata/models/blueprint/blueprint.rb +11 -0
- data/lib/gooddata/models/blueprint/blueprint_field.rb +70 -0
- data/lib/gooddata/models/blueprint/dashboard_builder.rb +30 -0
- data/lib/gooddata/models/blueprint/dataset_blueprint.rb +455 -0
- data/lib/gooddata/models/blueprint/date_dimension.rb +20 -0
- data/lib/gooddata/models/blueprint/fact_field.rb +20 -0
- data/lib/gooddata/models/blueprint/label_field.rb +47 -0
- data/lib/gooddata/models/blueprint/project_blueprint.rb +791 -0
- data/lib/gooddata/models/blueprint/project_builder.rb +103 -0
- data/lib/gooddata/models/blueprint/reference_field.rb +43 -0
- data/lib/gooddata/models/blueprint/schema_blueprint.rb +160 -0
- data/lib/gooddata/models/blueprint/schema_builder.rb +89 -0
- data/lib/gooddata/models/blueprint/to_manifest.rb +185 -0
- data/lib/gooddata/models/blueprint/to_wire.rb +173 -0
- data/lib/gooddata/models/channel_configuration.rb +112 -0
- data/lib/gooddata/models/client.rb +236 -0
- data/lib/gooddata/models/client_synchronization_result.rb +31 -0
- data/lib/gooddata/models/client_synchronization_result_details.rb +41 -0
- data/lib/gooddata/models/data_product.rb +149 -0
- data/lib/gooddata/models/datawarehouse.rb +114 -0
- data/lib/gooddata/models/domain.rb +505 -0
- data/lib/gooddata/models/execution.rb +115 -0
- data/lib/gooddata/models/execution_detail.rb +81 -0
- data/lib/gooddata/models/from_wire.rb +173 -0
- data/lib/gooddata/models/invitation.rb +75 -0
- data/lib/gooddata/models/links.rb +50 -0
- data/lib/gooddata/models/membership.rb +441 -0
- data/lib/gooddata/models/metadata.rb +324 -0
- data/lib/gooddata/models/metadata/attribute.rb +155 -0
- data/lib/gooddata/models/metadata/dashboard.rb +120 -0
- data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +76 -0
- data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +37 -0
- data/lib/gooddata/models/metadata/dashboard/filter_item.rb +64 -0
- data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/headline_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +46 -0
- data/lib/gooddata/models/metadata/dashboard/report_item.rb +92 -0
- data/lib/gooddata/models/metadata/dashboard/text_item.rb +55 -0
- data/lib/gooddata/models/metadata/dashboard_tab.rb +141 -0
- data/lib/gooddata/models/metadata/dataset.rb +67 -0
- data/lib/gooddata/models/metadata/dimension.rb +57 -0
- data/lib/gooddata/models/metadata/fact.rb +51 -0
- data/lib/gooddata/models/metadata/folder.rb +49 -0
- data/lib/gooddata/models/metadata/label.rb +128 -0
- data/lib/gooddata/models/metadata/metadata.rb +12 -0
- data/lib/gooddata/models/metadata/metric.rb +206 -0
- data/lib/gooddata/models/metadata/report.rb +268 -0
- data/lib/gooddata/models/metadata/report_definition.rb +272 -0
- data/lib/gooddata/models/metadata/scheduled_mail.rb +277 -0
- data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +62 -0
- data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +64 -0
- data/lib/gooddata/models/metadata/variable.rb +96 -0
- data/lib/gooddata/models/model.rb +293 -0
- data/lib/gooddata/models/models.rb +12 -0
- data/lib/gooddata/models/module_constants.rb +31 -0
- data/lib/gooddata/models/notification_rule.rb +113 -0
- data/lib/gooddata/models/process.rb +371 -0
- data/lib/gooddata/models/profile.rb +451 -0
- data/lib/gooddata/models/project.rb +2030 -0
- data/lib/gooddata/models/project_creator.rb +209 -0
- data/lib/gooddata/models/project_log_formatter.rb +204 -0
- data/lib/gooddata/models/project_metadata.rb +67 -0
- data/lib/gooddata/models/project_role.rb +79 -0
- data/lib/gooddata/models/report_data_result.rb +270 -0
- data/lib/gooddata/models/schedule.rb +538 -0
- data/lib/gooddata/models/segment.rb +274 -0
- data/lib/gooddata/models/style_setting.rb +62 -0
- data/lib/gooddata/models/subscription.rb +188 -0
- data/lib/gooddata/models/tab_builder.rb +27 -0
- data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +76 -0
- data/lib/gooddata/models/user_filters/user_filter.rb +101 -0
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +553 -0
- data/lib/gooddata/models/user_filters/user_filters.rb +13 -0
- data/lib/gooddata/models/user_filters/variable_user_filter.rb +33 -0
- data/lib/gooddata/models/user_group.rb +250 -0
- data/lib/gooddata/rest/README.md +37 -0
- data/lib/gooddata/rest/client.rb +396 -0
- data/lib/gooddata/rest/connection.rb +776 -0
- data/lib/gooddata/rest/object.rb +69 -0
- data/lib/gooddata/rest/object_factory.rb +51 -0
- data/lib/gooddata/rest/resource.rb +27 -0
- data/lib/gooddata/rest/rest.rb +24 -0
- data/lib/gooddata/version.rb +23 -0
- data/lib/templates/bricks/brick.rb.erb +7 -0
- data/lib/templates/bricks/main.rb.erb +5 -0
- data/lib/templates/project/Goodfile.erb +4 -0
- data/lib/templates/project/data/commits.csv +4 -0
- data/lib/templates/project/data/devs.csv +4 -0
- data/lib/templates/project/data/repos.csv +3 -0
- data/lib/templates/project/model/model.rb.erb +20 -0
- data/spec/.rubocop.yml +16 -0
- data/spec/bricks/bricks_spec.rb +110 -0
- data/spec/bricks/default-config.json +8 -0
- data/spec/data/.gooddata +4 -0
- data/spec/data/blueprints/additional_dataset_module.json +32 -0
- data/spec/data/blueprints/attribute_sort_order_blueprint.json +72 -0
- data/spec/data/blueprints/big_blueprint_not_pruned.json +2079 -0
- data/spec/data/blueprints/invalid_blueprint.json +103 -0
- data/spec/data/blueprints/m_n_model.json +104 -0
- data/spec/data/blueprints/model_module.json +25 -0
- data/spec/data/blueprints/test_blueprint.json +39 -0
- data/spec/data/blueprints/test_project_model_spec.json +106 -0
- data/spec/data/cc/data/source/commits.csv +4 -0
- data/spec/data/cc/data/source/devs.csv +4 -0
- data/spec/data/cc/data/source/repos.csv +3 -0
- data/spec/data/cc/devel.prm +0 -0
- data/spec/data/cc/graph/graph.grf +11 -0
- data/spec/data/cc/workspace.prm +19 -0
- data/spec/data/column_based_permissions.csv +7 -0
- data/spec/data/column_based_permissions2.csv +6 -0
- data/spec/data/dynamic_schedule_params_table.csv +7 -0
- data/spec/data/gd_gse_data_blueprint.json +1371 -0
- data/spec/data/gd_gse_data_manifest.json +1424 -0
- data/spec/data/gd_gse_data_model.json +1772 -0
- data/spec/data/gooddata_version_process/gooddata_version.rb +9 -0
- data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
- data/spec/data/hello_world_process/hello_world.rb +9 -0
- data/spec/data/hello_world_process/hello_world.zip +0 -0
- data/spec/data/line_based_permissions.csv +3 -0
- data/spec/data/manifests/test_blueprint.json +32 -0
- data/spec/data/manifests/test_project.json +107 -0
- data/spec/data/reports/left_attr_report.json +108 -0
- data/spec/data/reports/metric_only_one_line.json +83 -0
- data/spec/data/reports/report_1.json +197 -0
- data/spec/data/reports/top_attr_report.json +108 -0
- data/spec/data/ruby_params_process/ruby_params.rb +9 -0
- data/spec/data/ruby_process/deep_files/deep_stuff.txt +1 -0
- data/spec/data/ruby_process/process.rb +8 -0
- data/spec/data/ruby_process/stuff.txt +1 -0
- data/spec/data/superfluous_titles_view.json +81 -0
- data/spec/data/test-ci-data.csv +2 -0
- data/spec/data/users.csv +12 -0
- data/spec/data/wire_models/attribute_sort_by_model.json +73 -0
- data/spec/data/wire_models/model_view.json +1775 -0
- data/spec/data/wire_models/nu_model.json +3046 -0
- data/spec/data/wire_models/test_blueprint.json +66 -0
- data/spec/data/wire_test_project.json +150 -0
- data/spec/data/workspace_table.csv +3 -0
- data/spec/environment/default.rb +43 -0
- data/spec/environment/development.rb +32 -0
- data/spec/environment/environment.rb +38 -0
- data/spec/environment/production.rb +27 -0
- data/spec/environment/staging.rb +33 -0
- data/spec/environment/testing.rb +32 -0
- data/spec/helpers/blueprint_helper.rb +27 -0
- data/spec/helpers/cli_helper.rb +38 -0
- data/spec/helpers/connection_helper.rb +43 -0
- data/spec/helpers/crypto_helper.rb +19 -0
- data/spec/helpers/csv_helper.rb +20 -0
- data/spec/helpers/process_helper.rb +35 -0
- data/spec/helpers/project_helper.rb +74 -0
- data/spec/helpers/schedule_helper.rb +33 -0
- data/spec/helpers/spec_helper.rb +17 -0
- data/spec/integration/ads_output_stage_spec.rb +45 -0
- data/spec/integration/blueprint_updates_spec.rb +107 -0
- data/spec/integration/blueprint_with_ca_spec.rb +56 -0
- data/spec/integration/blueprint_with_grain_spec.rb +74 -0
- data/spec/integration/channel_configuration_spec.rb +67 -0
- data/spec/integration/clients_spec.rb +164 -0
- data/spec/integration/command_datawarehouse_spec.rb +45 -0
- data/spec/integration/command_projects_spec.rb +32 -0
- data/spec/integration/commands/command_projects_spec.rb +22 -0
- data/spec/integration/core/connection_spec.rb +56 -0
- data/spec/integration/core/logging_spec.rb +130 -0
- data/spec/integration/core/project_spec.rb +54 -0
- data/spec/integration/create_from_template_spec.rb +29 -0
- data/spec/integration/create_project_spec.rb +27 -0
- data/spec/integration/date_dim_switch_spec.rb +150 -0
- data/spec/integration/deprecated_load_spec.rb +60 -0
- data/spec/integration/full_process_schedule_spec.rb +367 -0
- data/spec/integration/full_project_spec.rb +592 -0
- data/spec/integration/helpers_spec.rb +16 -0
- data/spec/integration/lcm_spec.rb +54 -0
- data/spec/integration/mixins/id_to_uri_spec.rb +44 -0
- data/spec/integration/models/data_product_spec.rb +71 -0
- data/spec/integration/models/domain_spec.rb +162 -0
- data/spec/integration/models/invitation_spec.rb +17 -0
- data/spec/integration/models/membership_spec.rb +127 -0
- data/spec/integration/models/metadata/report_spec.rb +54 -0
- data/spec/integration/models/params_spec.rb +118 -0
- data/spec/integration/models/profile_spec.rb +210 -0
- data/spec/integration/models/project_role_spec.rb +94 -0
- data/spec/integration/models/project_spec.rb +225 -0
- data/spec/integration/models/schedule_spec.rb +485 -0
- data/spec/integration/models/unit_project_spec.rb +130 -0
- data/spec/integration/over_to_user_filters_spec.rb +98 -0
- data/spec/integration/partial_md_export_import_spec.rb +41 -0
- data/spec/integration/project_spec.rb +381 -0
- data/spec/integration/rest_spec.rb +214 -0
- data/spec/integration/schedule_spec.rb +613 -0
- data/spec/integration/segments_spec.rb +100 -0
- data/spec/integration/subscription_spec.rb +88 -0
- data/spec/integration/urn_date_dim_spec.rb +53 -0
- data/spec/integration/user_filters_spec.rb +306 -0
- data/spec/integration/user_group_spec.rb +147 -0
- data/spec/integration/variables_spec.rb +189 -0
- data/spec/logging_in_logging_out_spec.rb +91 -0
- data/spec/spec_helper.rb +66 -0
- data/spec/unit/actions/associate_clients_spec.rb +47 -0
- data/spec/unit/actions/collect_client_projects_spec.rb +47 -0
- data/spec/unit/actions/collect_clients_spec.rb +65 -0
- data/spec/unit/actions/collect_data_product_spec.rb +56 -0
- data/spec/unit/actions/collect_dynamic_schedule_params_spec.rb +56 -0
- data/spec/unit/actions/collect_meta_spec.rb +88 -0
- data/spec/unit/actions/collect_segment_clients_spec.rb +81 -0
- data/spec/unit/actions/collect_tagged_objects_spec.rb +126 -0
- data/spec/unit/actions/collect_users_brick_users_spec.rb +36 -0
- data/spec/unit/actions/create_segment_masters_spec.rb +64 -0
- data/spec/unit/actions/ensure_data_product_spec.rb +38 -0
- data/spec/unit/actions/ensure_technical_users_domain_spec.rb +51 -0
- data/spec/unit/actions/ensure_technical_users_project_spec.rb +72 -0
- data/spec/unit/actions/execute_schedules_spec.rb +94 -0
- data/spec/unit/actions/provision_clients_spec.rb +45 -0
- data/spec/unit/actions/purge_clients_spec.rb +47 -0
- data/spec/unit/actions/rename_existing_client_projects_spec.rb +54 -0
- data/spec/unit/actions/segments_filter_spec.rb +46 -0
- data/spec/unit/actions/shared_examples_for_user_actions.rb +26 -0
- data/spec/unit/actions/synchronize_cas_spec.rb +58 -0
- data/spec/unit/actions/synchronize_etls_in_segment_spec.rb +212 -0
- data/spec/unit/actions/synchronize_ldm_spec.rb +57 -0
- data/spec/unit/actions/synchronize_user_filters_spec.rb +146 -0
- data/spec/unit/actions/synchronize_user_groups_spec.rb +49 -0
- data/spec/unit/actions/synchronize_users_spec.rb +134 -0
- data/spec/unit/bricks/bricks_spec.rb +34 -0
- data/spec/unit/bricks/middleware/aws_middelware_spec.rb +98 -0
- data/spec/unit/bricks/middleware/bench_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/logger_middleware_spec.rb +30 -0
- data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +15 -0
- data/spec/unit/cli/cli_spec.rb +17 -0
- data/spec/unit/cli/commands/cmd_auth_spec.rb +17 -0
- data/spec/unit/core/nil_logger_spec.rb +13 -0
- data/spec/unit/extensions/hash_spec.rb +22 -0
- data/spec/unit/godzilla/goodzilla_spec.rb +74 -0
- data/spec/unit/helpers/csv_helper_spec.rb +22 -0
- data/spec/unit/helpers/data_helper_spec.rb +67 -0
- data/spec/unit/helpers/global_helpers_spec.rb +264 -0
- data/spec/unit/helpers_spec.rb +254 -0
- data/spec/unit/lcm/user_bricks_helper_spec.rb +58 -0
- data/spec/unit/models/blueprint/attribute_sort_by_spec.rb +20 -0
- data/spec/unit/models/blueprint/attributes_spec.rb +28 -0
- data/spec/unit/models/blueprint/dataset_spec.rb +120 -0
- data/spec/unit/models/blueprint/labels_spec.rb +43 -0
- data/spec/unit/models/blueprint/project_blueprint_spec.rb +642 -0
- data/spec/unit/models/blueprint/reference_spec.rb +28 -0
- data/spec/unit/models/blueprint/schema_builder_spec.rb +36 -0
- data/spec/unit/models/blueprint/to_wire_spec.rb +195 -0
- data/spec/unit/models/execution_spec.rb +109 -0
- data/spec/unit/models/from_wire_spec.rb +301 -0
- data/spec/unit/models/metadata_spec.rb +140 -0
- data/spec/unit/models/metric_spec.rb +129 -0
- data/spec/unit/models/model_spec.rb +77 -0
- data/spec/unit/models/project_creator_spec.rb +90 -0
- data/spec/unit/models/project_spec.rb +94 -0
- data/spec/unit/models/report_result_data_spec.rb +194 -0
- data/spec/unit/models/to_manifest_spec.rb +136 -0
- data/spec/unit/models/user_filters/user_filter_builder_spec.rb +110 -0
- data/spec/unit/models/user_filters_spec.rb +95 -0
- data/spec/unit/models/variable_spec.rb +280 -0
- data/spec/unit/rest/polling_spec.rb +101 -0
- data/spec/unit/rest/resource_spec.rb +10 -0
- data/yard-server.sh +3 -0
- metadata +1207 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/bricks/brick'
|
|
8
|
+
require 'gooddata/bricks/bricks'
|
|
9
|
+
require 'gooddata/bricks/middleware/bench_middleware'
|
|
10
|
+
|
|
11
|
+
describe GoodData::Bricks::BenchMiddleware do
|
|
12
|
+
it "Has GoodData::Bricks::BenchMiddleware class" do
|
|
13
|
+
GoodData::Bricks::BenchMiddleware.should_not be(nil)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/bricks/brick'
|
|
8
|
+
require 'gooddata/bricks/bricks'
|
|
9
|
+
require 'gooddata/bricks/middleware/bulk_salesforce_middleware'
|
|
10
|
+
|
|
11
|
+
describe GoodData::Bricks::BulkSalesforceMiddleware do
|
|
12
|
+
it "Has GoodData::Bricks::BulkSalesforceMiddleware class" do
|
|
13
|
+
GoodData::Bricks::BulkSalesforceMiddleware.should_not be(nil)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/bricks/brick'
|
|
8
|
+
require 'gooddata/bricks/bricks'
|
|
9
|
+
require 'gooddata/bricks/middleware/gooddata_middleware'
|
|
10
|
+
|
|
11
|
+
describe GoodData::Bricks::GoodDataMiddleware do
|
|
12
|
+
it "Has GoodData::Bricks::GoodDataMiddleware class" do
|
|
13
|
+
GoodData::Bricks::GoodDataMiddleware.should_not be(nil)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/bricks/brick'
|
|
8
|
+
require 'gooddata/bricks/bricks'
|
|
9
|
+
require 'gooddata/bricks/middleware/logger_middleware'
|
|
10
|
+
|
|
11
|
+
describe GoodData::Bricks::LoggerMiddleware do
|
|
12
|
+
it "Has GoodData::Bricks::LoggerMiddleware class" do
|
|
13
|
+
GoodData::Bricks::LoggerMiddleware.should_not be(nil)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
context 'when HTTP_LOGGING parameter set to true' do
|
|
17
|
+
let(:params) { { 'HTTP_LOGGING' => 'true' } }
|
|
18
|
+
let(:app) { double(:app) }
|
|
19
|
+
|
|
20
|
+
before do
|
|
21
|
+
subject.app = app
|
|
22
|
+
allow(app).to receive(:call)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'turns http logging on' do
|
|
26
|
+
expect(GoodData).to receive(:logging_http_on)
|
|
27
|
+
subject.call(params)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/bricks/brick'
|
|
8
|
+
require 'gooddata/bricks/bricks'
|
|
9
|
+
require 'gooddata/bricks/middleware/restforce_middleware'
|
|
10
|
+
|
|
11
|
+
describe GoodData::Bricks::RestForceMiddleware do
|
|
12
|
+
it "Has GoodData::Bricks::RestForceMiddleware class" do
|
|
13
|
+
GoodData::Bricks::RestForceMiddleware.should_not be(nil)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/bricks/brick'
|
|
8
|
+
require 'gooddata/bricks/bricks'
|
|
9
|
+
require 'gooddata/bricks/middleware/stdout_middleware'
|
|
10
|
+
|
|
11
|
+
describe GoodData::Bricks::STDOUTLoggingMiddleware do
|
|
12
|
+
it "Has GoodData::Bricks::STDOUTLoggingMiddleware class" do
|
|
13
|
+
GoodData::Bricks::STDOUTLoggingMiddleware.should_not be(nil)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/bricks/brick'
|
|
8
|
+
require 'gooddata/bricks/bricks'
|
|
9
|
+
require 'gooddata/bricks/middleware/twitter_middleware'
|
|
10
|
+
|
|
11
|
+
describe GoodData::Bricks::TwitterMiddleware do
|
|
12
|
+
it "Has GoodData::Bricks::TwitterMiddleware class" do
|
|
13
|
+
GoodData::Bricks::TwitterMiddleware.should_not be(nil)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/cli/cli'
|
|
8
|
+
|
|
9
|
+
describe GoodData::CLI do
|
|
10
|
+
it 'Has GoodData::CLI class' do
|
|
11
|
+
expect(GoodData::CLI).not_to be_nil
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'Has GoodData::CLI::main() working' do
|
|
15
|
+
run_cli
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/cli/cli'
|
|
8
|
+
|
|
9
|
+
describe 'GoodData::CLI - auth', :broken => true do
|
|
10
|
+
describe 'auth' do
|
|
11
|
+
it 'Can be called without arguments' do
|
|
12
|
+
args = %w(auth)
|
|
13
|
+
|
|
14
|
+
run_cli(args)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/core/core'
|
|
8
|
+
|
|
9
|
+
describe GoodData::NilLogger do
|
|
10
|
+
it "Has GoodData::NilLogger class" do
|
|
11
|
+
GoodData::NilLogger.should_not be(nil)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
describe Hash do
|
|
8
|
+
describe '#deep_dup' do
|
|
9
|
+
it 'should crete a deep copy' do
|
|
10
|
+
x = {
|
|
11
|
+
:a => {
|
|
12
|
+
:b => :c
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
y = x.dup
|
|
16
|
+
deep_y = GoodData::Helpers.deep_dup(x)
|
|
17
|
+
|
|
18
|
+
expect(y[:a].object_id).to be == x[:a].object_id
|
|
19
|
+
expect(deep_y[:a].object_id).not_to be == x[:a].object_id
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata'
|
|
8
|
+
|
|
9
|
+
describe GoodData::SmallGoodZilla do
|
|
10
|
+
MAQL_EXAMPLE = 'SELECT SUM(#"Amount") WHERE @"Date"=#"X" AND ?"Snapshot EOP"=1'
|
|
11
|
+
FACTS = {
|
|
12
|
+
"Amount" => "a",
|
|
13
|
+
"X" => "x"
|
|
14
|
+
}
|
|
15
|
+
ATTRIBUTES = {
|
|
16
|
+
"Date" => "d"
|
|
17
|
+
}
|
|
18
|
+
METRICS = {
|
|
19
|
+
"Snapshot EOP" => "snap"
|
|
20
|
+
}
|
|
21
|
+
DICT = {
|
|
22
|
+
:facts => FACTS,
|
|
23
|
+
:attributes => ATTRIBUTES,
|
|
24
|
+
:metrics => METRICS
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
it "should parse metrics out of the string" do
|
|
28
|
+
expect(GoodData::SmallGoodZilla.get_facts(MAQL_EXAMPLE)).to eq %w(Amount X)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should parse attributes out of the string" do
|
|
32
|
+
expect(GoodData::SmallGoodZilla.get_attributes(MAQL_EXAMPLE)).to eq %w(Date)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should parse metrics out of the string" do
|
|
36
|
+
expect(GoodData::SmallGoodZilla.get_metrics(MAQL_EXAMPLE)).to eq ["Snapshot EOP"]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should interpolate the values" do
|
|
40
|
+
interpolated = GoodData::SmallGoodZilla.interpolate(
|
|
41
|
+
{
|
|
42
|
+
:facts => %w(Amount X),
|
|
43
|
+
:attributes => ["Date"],
|
|
44
|
+
:metrics => ["Snapshot EOP"]
|
|
45
|
+
},
|
|
46
|
+
DICT
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
expect(interpolated).to eq(
|
|
50
|
+
:facts => [%w(Amount a), %w(X x)],
|
|
51
|
+
:attributes => [%w(Date d)],
|
|
52
|
+
:metrics => [["Snapshot EOP", "snap"]]
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should return interpolated metric" do
|
|
57
|
+
expect(GoodData::SmallGoodZilla.interpolate_metric(MAQL_EXAMPLE, DICT)).to eq "SELECT SUM([a]) WHERE [d]=[x] AND [snap]=1"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "should be able to parse several ids correctly." do
|
|
61
|
+
metric = "SELECT SUM(
|
|
62
|
+
CASE
|
|
63
|
+
WHEN ![attr.customer_profiles.profile_id] = [/gdc/md/pxa3aic06undadkc5s7t5lxpne11vgyt/obj/257/elements?id=65] THEN ![fact.perfomance_by_campaign_id.general_score_1]
|
|
64
|
+
WHEN ![attr.customer_profiles.profile_id] = [/gdc/md/pxa3aic06undadkc5s7t5lxpne11vgyt/obj/257/elements?id=50] THEN ![fact.perfomance_by_campaign_id.general_score_5]
|
|
65
|
+
WHEN ![attr.customer_profiles.profile_id] = [/gdc/md/pxa3aic06undadkc5s7t5lxpne11vgyt/obj/257/elements?id=20] THEN ![fact.perfomance_by_campaign_id.general_score_12]
|
|
66
|
+
END)"
|
|
67
|
+
expect(GoodData::SmallGoodZilla.get_ids(metric)).to eq [
|
|
68
|
+
"attr.customer_profiles.profile_id",
|
|
69
|
+
"fact.perfomance_by_campaign_id.general_score_1",
|
|
70
|
+
"fact.perfomance_by_campaign_id.general_score_5",
|
|
71
|
+
"fact.perfomance_by_campaign_id.general_score_12"
|
|
72
|
+
]
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/helpers/csv_helper'
|
|
8
|
+
|
|
9
|
+
describe GoodData::Helpers::Csv do
|
|
10
|
+
describe '#read' do
|
|
11
|
+
it 'Reads data from CSV file' do
|
|
12
|
+
GoodData::Helpers::Csv.read(:path => CsvHelper::CSV_PATH_IMPORT)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe '#write' do
|
|
17
|
+
it 'Writes data to CSV' do
|
|
18
|
+
data = []
|
|
19
|
+
GoodData::Helpers::Csv.write(:path => CsvHelper::CSV_PATH_EXPORT, :data => data)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/helpers/data_helper'
|
|
8
|
+
|
|
9
|
+
describe GoodData::Helpers::DataSource do
|
|
10
|
+
let(:file_size) { 666 }
|
|
11
|
+
|
|
12
|
+
before :each do
|
|
13
|
+
@s3_client = double('s3_client')
|
|
14
|
+
@bucket = double('bucket')
|
|
15
|
+
@objects = double('objects')
|
|
16
|
+
|
|
17
|
+
allow(@s3_client).to receive(:bucket) { @bucket }
|
|
18
|
+
allow(@bucket).to receive(:object) { @objects }
|
|
19
|
+
allow(@objects).to receive(:get) { StringIO.new('aaa') }
|
|
20
|
+
allow(@objects).to receive(:size) { file_size }
|
|
21
|
+
allow(File).to receive(:size) { file_size }
|
|
22
|
+
|
|
23
|
+
@ds = GoodData::Helpers::DataSource.new(type: :s3, bucket: 'some_bucket', key: 'some_key')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'should be able to handle AWS' do
|
|
27
|
+
expect(@ds.realized?).to be_falsey
|
|
28
|
+
params = { 'aws_client' => { 's3_client' => @s3_client } }
|
|
29
|
+
expect(@ds.realize(params)).to eq '2bdc6c8a02b2bd1d7997cf17f0848ecfcbceba25ca184e2676f19c054db7139b'
|
|
30
|
+
expect(@ds.realized?).to be_truthy
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it 'should gracefully handle missing aws client' do
|
|
34
|
+
expect do
|
|
35
|
+
@ds.realize('aws_client' => nil)
|
|
36
|
+
end.to raise_exception "AWS client not present. Perhaps S3Middleware is missing in the brick definition?"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'should gracefully handle missing data source params - bucket' do
|
|
40
|
+
ds = GoodData::Helpers::DataSource.new(type: :s3, key: 'some_key')
|
|
41
|
+
params = { 'aws_client' => { 's3_client' => @s3_client } }
|
|
42
|
+
expect do
|
|
43
|
+
ds.realize(params)
|
|
44
|
+
end.to raise_exception 'Key "bucket" is missing in S3 datasource'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'should gracefully handle missing data source params - key' do
|
|
48
|
+
ds = GoodData::Helpers::DataSource.new(type: :s3, bucket: 'some_bucket')
|
|
49
|
+
params = { 'aws_client' => { 's3_client' => @s3_client } }
|
|
50
|
+
expect do
|
|
51
|
+
ds.realize(params)
|
|
52
|
+
end.to raise_exception 'Key "key" is missing in S3 datasource'
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
context 'when size of the downloaded file is not right' do
|
|
56
|
+
before do
|
|
57
|
+
allow(File).to receive(:size) { 0 }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it 'raises an error' do
|
|
61
|
+
params = { 'aws_client' => { 's3_client' => @s3_client } }
|
|
62
|
+
expect do
|
|
63
|
+
@ds.realize(params)
|
|
64
|
+
end.to raise_exception(/Expected size 666, got 0/)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
|
6
|
+
|
|
7
|
+
require 'gooddata/helpers/csv_helper'
|
|
8
|
+
|
|
9
|
+
describe GoodData::Helpers do
|
|
10
|
+
describe '#diff' do
|
|
11
|
+
before :each do
|
|
12
|
+
@old_tomas = { id: 1, name: 'Tomas', age: 28 }
|
|
13
|
+
@new_tomas = { id: 1, name: "Lil'Tomas", age: 28 }
|
|
14
|
+
@patrick = { id: 4, name: 'Patrick', age: 24 }
|
|
15
|
+
@old_korczis = { id: 3, name: 'Korczis', age: 23 }
|
|
16
|
+
@new_korczis = { id: 3, name: "Korczis", age: 22 }
|
|
17
|
+
@petr = { id: 2, name: 'Petr', age: 32 }
|
|
18
|
+
@cvengy = { id: 5, name: 'Petr', age: 30 }
|
|
19
|
+
|
|
20
|
+
@old_list = [@cvengy, @old_tomas, @patrick, @old_korczis]
|
|
21
|
+
@new_list = [@cvengy, @new_tomas, @petr, @new_korczis]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'diffs two lists of hashes' do
|
|
25
|
+
diff = GoodData::Helpers.diff(@old_list, @new_list, key: :id)
|
|
26
|
+
|
|
27
|
+
expect(diff[:same]).to eq [@cvengy]
|
|
28
|
+
expect(diff[:added]).to eq [@petr]
|
|
29
|
+
expect(diff[:removed]).to eq [@patrick]
|
|
30
|
+
expect(diff[:changed]).to eq([
|
|
31
|
+
{
|
|
32
|
+
old_obj: @old_tomas,
|
|
33
|
+
new_obj: @new_tomas,
|
|
34
|
+
diff: { name: "Lil'Tomas" }
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
old_obj: @old_korczis,
|
|
38
|
+
new_obj: @new_korczis,
|
|
39
|
+
diff: { age: 22 }
|
|
40
|
+
}
|
|
41
|
+
])
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'diffs two lists of hashes on subset of fields' do
|
|
45
|
+
diff = GoodData::Helpers.diff(@old_list, @new_list, key: :id, fields: [:id, :age])
|
|
46
|
+
|
|
47
|
+
expect(diff[:same]).to eq [@cvengy, @old_tomas]
|
|
48
|
+
expect(diff[:added]).to eq [@petr]
|
|
49
|
+
expect(diff[:removed]).to eq [@patrick]
|
|
50
|
+
expect(diff[:changed]).to eq([
|
|
51
|
+
{
|
|
52
|
+
old_obj: @old_korczis,
|
|
53
|
+
new_obj: @new_korczis,
|
|
54
|
+
diff: { age: 22 }
|
|
55
|
+
}
|
|
56
|
+
])
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it 'should encode params and preserve the nil in hidden' do
|
|
60
|
+
x = GoodData::Helpers.decode_params("x" => "y", GoodData::Helpers::ENCODED_HIDDEN_PARAMS_KEY.to_s => '{"a":{"b": "c"}}')
|
|
61
|
+
expect(x).to eq("x" => "y", "a" => { "b" => "c" }, "gd_encoded_hidden_params" => nil)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it 'should encode params and preserve the nil in hidden' do
|
|
65
|
+
x = GoodData::Helpers.decode_params(GoodData::Helpers::ENCODED_HIDDEN_PARAMS_KEY.to_s => nil)
|
|
66
|
+
expect(x).to eq("gd_encoded_hidden_params" => nil)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it 'should encode params and preserve the nil in hidden' do
|
|
70
|
+
x = GoodData::Helpers.decode_params(
|
|
71
|
+
"x" => "y",
|
|
72
|
+
GoodData::Helpers::ENCODED_PARAMS_KEY.to_s => '{"d":{"b": "c"}}',
|
|
73
|
+
GoodData::Helpers::ENCODED_HIDDEN_PARAMS_KEY.to_s => '{"a":{"b": "c"}}'
|
|
74
|
+
)
|
|
75
|
+
expect(x).to eq("x" => "y", "a" => { "b" => "c" }, "d" => { "b" => "c" }, "gd_encoded_hidden_params" => nil)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it 'should encode params and note preserve the nil in public' do
|
|
79
|
+
x = GoodData::Helpers.decode_params("x" => "y", GoodData::Helpers::ENCODED_PARAMS_KEY.to_s => '{"d":{"b": "c"}}')
|
|
80
|
+
expect(x).to eq("x" => "y", "d" => { "b" => "c" })
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it 'should be abe to join datasets' do
|
|
84
|
+
master = [{ id: 'a', x: 1 },
|
|
85
|
+
{ id: 'b', x: 1 },
|
|
86
|
+
{ id: 'c', x: 2 }]
|
|
87
|
+
|
|
88
|
+
lookup = [{ id: 1, y: 'FOO' },
|
|
89
|
+
{ id: 2, y: 'BAR' }]
|
|
90
|
+
|
|
91
|
+
results = GoodData::Helpers.join(master, lookup, [:x], [:id])
|
|
92
|
+
expect(results).to eq [{ :id => "a", :y => "FOO", :x => 1 },
|
|
93
|
+
{ :id => "b", :y => "FOO", :x => 1 },
|
|
94
|
+
{ :id => "c", :y => "BAR", :x => 2 }]
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it 'should encode secure params' do
|
|
98
|
+
params = {
|
|
99
|
+
"x" => "y",
|
|
100
|
+
"d|b|foo" => "bar",
|
|
101
|
+
"d|b|e|w" => "z",
|
|
102
|
+
GoodData::Helpers::ENCODED_PARAMS_KEY.to_s => '{"d":{"b":{"c": "a"}}}',
|
|
103
|
+
GoodData::Helpers::ENCODED_HIDDEN_PARAMS_KEY.to_s => '{"d":{"b":{"e":{"f": "g"}}}}'
|
|
104
|
+
}
|
|
105
|
+
x = GoodData::Helpers.decode_params(params, convert_pipe_delimited_params: true)
|
|
106
|
+
expect(x).to eq(
|
|
107
|
+
"x" => "y",
|
|
108
|
+
"d" => { "b" => { "c" => "a", "e" => { "f" => "g", "w" => "z" }, "foo" => "bar" } },
|
|
109
|
+
"gd_encoded_hidden_params" => nil
|
|
110
|
+
)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
context 'when hidden parameters contain an invalid json' do
|
|
114
|
+
let(:invalid_json) { '{"password": "precious_secret"' }
|
|
115
|
+
let(:params) do
|
|
116
|
+
{ GoodData::Helpers::ENCODED_HIDDEN_PARAMS_KEY.to_s => invalid_json }
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
it 'hides secrets in the error message' do
|
|
120
|
+
expect { GoodData::Helpers.decode_params(params) }.to raise_error(JSON::ParserError) do |e|
|
|
121
|
+
expect(e.message).not_to include('precious_secret')
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it 'should not throw error if missing reference parameter placeholder' do
|
|
127
|
+
params = {
|
|
128
|
+
'x' => 'y',
|
|
129
|
+
'ads_password' => 'ads_123',
|
|
130
|
+
'gd_encoded_params' => '{"login_username": "login_user", "login_password": "${my_password}"}'
|
|
131
|
+
}
|
|
132
|
+
expected_result = {
|
|
133
|
+
'x' => 'y',
|
|
134
|
+
'ads_password' => 'ads_123',
|
|
135
|
+
'login_username' => 'login_user',
|
|
136
|
+
'login_password' => '${my_password}'
|
|
137
|
+
}
|
|
138
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
139
|
+
expect(result).to eq(expected_result)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it 'should encode reference parameters in gd_encoded_params' do
|
|
143
|
+
params = {
|
|
144
|
+
'x' => 'y',
|
|
145
|
+
'ads_password' => 'ads_123',
|
|
146
|
+
'my_password' => 'login_123',
|
|
147
|
+
'gd_encoded_params' => '{"login_username": "login_user", "login_password": "abc_${my_password}_123"}'
|
|
148
|
+
}
|
|
149
|
+
expected_result = {
|
|
150
|
+
'x' => 'y',
|
|
151
|
+
'ads_password' => 'ads_123',
|
|
152
|
+
'my_password' => 'login_123',
|
|
153
|
+
'login_username' => 'login_user',
|
|
154
|
+
'login_password' => 'abc_login_123_123'
|
|
155
|
+
}
|
|
156
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
157
|
+
expect(result).to eq(expected_result)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
it 'should encode escape reference parameters in gd_encoded_params' do
|
|
161
|
+
params = {
|
|
162
|
+
'x' => 'y',
|
|
163
|
+
'ads_password' => 'ads_123',
|
|
164
|
+
'my_password' => 'login_123',
|
|
165
|
+
'gd_encoded_params' => '{"login_username": "login_user", "data01": "\\${abc}"}'
|
|
166
|
+
}
|
|
167
|
+
expected_result = {
|
|
168
|
+
'x' => 'y',
|
|
169
|
+
'ads_password' => 'ads_123',
|
|
170
|
+
'my_password' => 'login_123',
|
|
171
|
+
'login_username' => 'login_user',
|
|
172
|
+
'data01' => '${abc}'
|
|
173
|
+
}
|
|
174
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
175
|
+
expect(result).to eq(expected_result)
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
it 'should encode reference parameters in nested block in gd_encoded_params' do
|
|
179
|
+
params = {
|
|
180
|
+
'x' => 'y',
|
|
181
|
+
'ads_password' => 'ads_123',
|
|
182
|
+
'my_password' => 'login_123',
|
|
183
|
+
'gd_encoded_params' => '{"login_username": "login_user", "ads_client": {"username": "ads_user", "password": "${ads_password}"}}'
|
|
184
|
+
}
|
|
185
|
+
expected_result = {
|
|
186
|
+
'x' => 'y',
|
|
187
|
+
'ads_password' => 'ads_123',
|
|
188
|
+
'my_password' => 'login_123',
|
|
189
|
+
'login_username' => 'login_user',
|
|
190
|
+
'ads_client' => {
|
|
191
|
+
'username' => 'ads_user',
|
|
192
|
+
'password' => 'ads_123'
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
196
|
+
expect(result).to eq(expected_result)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
it 'should convert all values into String' do
|
|
200
|
+
params = {
|
|
201
|
+
x: true,
|
|
202
|
+
y: ['hello', false],
|
|
203
|
+
z: {
|
|
204
|
+
z1: false,
|
|
205
|
+
z2: [true],
|
|
206
|
+
z3: [[[false]]]
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
expected_result = {
|
|
210
|
+
x: 'true',
|
|
211
|
+
y: %w(hello false),
|
|
212
|
+
z: {
|
|
213
|
+
z1: 'false',
|
|
214
|
+
z2: ['true'],
|
|
215
|
+
z3: [[['false']]]
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
result = GoodData::Helpers.stringify_values(params)
|
|
219
|
+
expect(result).to eq(expected_result)
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
describe '.interpolate_error_message' do
|
|
224
|
+
let(:error_message) { { 'error' => { 'message' => 'foo %s', 'parameters' => ['bar'] } } }
|
|
225
|
+
|
|
226
|
+
before do
|
|
227
|
+
@message = GoodData::Helpers.interpolate_error_message(error_message)
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
it 'interpolates parameters' do
|
|
231
|
+
expect(@message).to eq('foo bar')
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
context 'when error parameter is empty' do
|
|
235
|
+
let(:error_message) { {} }
|
|
236
|
+
it 'returns nil' do
|
|
237
|
+
expect(@message).to be_nil
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
context 'when error key is empty' do
|
|
242
|
+
let(:error_message) { { 'error' => {} } }
|
|
243
|
+
it 'returns nil' do
|
|
244
|
+
expect(@message).to be_nil
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
describe '.decode_params' do
|
|
250
|
+
it 'interpolates reference parameters in additional_hidden_params' do
|
|
251
|
+
params = {
|
|
252
|
+
'gd_encoded_hidden_params' => '{ "additional_hidden_params": { "secret": "${my_password}" } }',
|
|
253
|
+
'my_password' => "123"
|
|
254
|
+
}
|
|
255
|
+
expected_result = {
|
|
256
|
+
'gd_encoded_hidden_params' => nil,
|
|
257
|
+
'additional_hidden_params' => { 'secret' => '123' },
|
|
258
|
+
'my_password' => '123'
|
|
259
|
+
}
|
|
260
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
261
|
+
expect(result).to eq(expected_result)
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
end
|