gooddata 0.6.49 → 0.6.50
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/CHANGELOG.md +15 -4
- data/CLI.md +0 -4
- data/DEPENDENCIES.md +0 -8
- data/Dockerfile.jruby +19 -0
- data/Dockerfile.ruby +19 -0
- data/LICENSE +2 -2
- data/LICENSE.rb +1 -1
- data/Rakefile +1 -1
- data/gooddata.gemspec +29 -28
- data/lib/gooddata.rb +2 -1
- data/lib/gooddata/app/app.rb +1 -1
- data/lib/gooddata/bricks/base_downloader.rb +1 -1
- data/lib/gooddata/bricks/brick.rb +3 -4
- data/lib/gooddata/bricks/bricks.rb +3 -1
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +6 -8
- data/lib/gooddata/bricks/middleware/base_middleware.rb +2 -1
- data/lib/gooddata/bricks/middleware/bench_middleware.rb +2 -1
- data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +3 -3
- data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +3 -2
- data/lib/gooddata/bricks/middleware/dwh_middleware.rb +28 -0
- data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +2 -2
- data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +2 -2
- data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +84 -21
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +1 -1
- data/lib/gooddata/bricks/middleware/middleware.rb +1 -1
- data/lib/gooddata/bricks/middleware/params_inspect_middleware.rb +21 -0
- data/lib/gooddata/bricks/middleware/restforce_middleware.rb +26 -26
- data/lib/gooddata/bricks/middleware/stdout_middleware.rb +1 -1
- data/lib/gooddata/bricks/middleware/twitter_middleware.rb +1 -1
- data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +1 -1
- data/lib/gooddata/bricks/pipeline.rb +6 -13
- data/lib/gooddata/bricks/utils.rb +3 -3
- data/lib/gooddata/cli/cli.rb +1 -1
- data/lib/gooddata/cli/commands/auth_cmd.rb +1 -1
- data/lib/gooddata/cli/commands/domain_cmd.rb +1 -1
- data/lib/gooddata/cli/commands/project_cmd.rb +1 -18
- data/lib/gooddata/cli/hooks.rb +1 -2
- data/lib/gooddata/cli/shared.rb +1 -1
- data/lib/gooddata/cli/terminal.rb +1 -1
- data/lib/gooddata/client.rb +1 -1
- data/lib/gooddata/commands/api.rb +1 -1
- data/lib/gooddata/commands/auth.rb +1 -1
- data/lib/gooddata/commands/base.rb +1 -1
- data/lib/gooddata/commands/commands.rb +1 -1
- data/lib/gooddata/commands/datasets.rb +1 -1
- data/lib/gooddata/commands/datawarehouse.rb +1 -1
- data/lib/gooddata/commands/domain.rb +1 -1
- data/lib/gooddata/commands/process.rb +1 -1
- data/lib/gooddata/commands/project.rb +2 -31
- data/lib/gooddata/commands/projects.rb +1 -1
- data/lib/gooddata/commands/role.rb +1 -1
- data/lib/gooddata/commands/runners.rb +1 -1
- data/lib/gooddata/commands/scaffold.rb +1 -1
- data/lib/gooddata/commands/user.rb +1 -1
- data/lib/gooddata/connection.rb +1 -1
- data/lib/gooddata/core/core.rb +1 -1
- data/lib/gooddata/core/logging.rb +1 -1
- data/lib/gooddata/core/nil_logger.rb +1 -1
- data/lib/gooddata/core/project.rb +1 -1
- data/lib/gooddata/core/rest.rb +1 -1
- data/lib/gooddata/core/user.rb +1 -1
- data/lib/gooddata/data/data.rb +1 -1
- data/lib/gooddata/data/guesser.rb +1 -1
- data/lib/gooddata/exceptions/attr_element_not_found.rb +1 -1
- data/lib/gooddata/exceptions/command_failed.rb +1 -1
- data/lib/gooddata/exceptions/exceptions.rb +1 -1
- data/lib/gooddata/exceptions/execution_limit_exceeded.rb +1 -1
- data/lib/gooddata/exceptions/export_clone.rb +4 -0
- data/lib/gooddata/exceptions/filter_maqlization.rb +1 -1
- data/lib/gooddata/exceptions/import_clone.rb +4 -0
- data/lib/gooddata/exceptions/malformed_user.rb +1 -1
- data/lib/gooddata/exceptions/maql_execution.rb +1 -1
- data/lib/gooddata/exceptions/no_project_error.rb +1 -1
- data/lib/gooddata/exceptions/object_migration.rb +1 -1
- data/lib/gooddata/exceptions/project_not_found.rb +1 -1
- data/lib/gooddata/exceptions/segment_not_empty.rb +1 -1
- data/lib/gooddata/exceptions/uncomputable_report.rb +1 -1
- data/lib/gooddata/exceptions/user_in_different_domain.rb +1 -1
- data/lib/gooddata/exceptions/validation_error.rb +1 -1
- data/lib/gooddata/extensions/big_decimal.rb +1 -1
- data/lib/gooddata/extensions/class.rb +11 -0
- data/lib/gooddata/extensions/enumerable.rb +1 -1
- data/lib/gooddata/extensions/extensions.rb +1 -1
- data/lib/gooddata/extensions/false.rb +9 -1
- data/lib/gooddata/extensions/hash.rb +12 -1
- data/lib/gooddata/extensions/integer.rb +5 -0
- data/lib/gooddata/extensions/nil.rb +5 -1
- data/lib/gooddata/extensions/numeric.rb +1 -1
- data/lib/gooddata/extensions/object.rb +5 -1
- data/lib/gooddata/extensions/symbol.rb +1 -1
- data/lib/gooddata/extensions/true.rb +9 -1
- data/lib/gooddata/extract.rb +1 -1
- data/lib/gooddata/goodzilla/goodzilla.rb +1 -1
- data/lib/gooddata/helpers/auth_helpers.rb +1 -1
- data/lib/gooddata/helpers/csv_helper.rb +1 -1
- data/lib/gooddata/helpers/data_helper.rb +19 -10
- data/lib/gooddata/helpers/erb_helper.rb +23 -0
- data/lib/gooddata/helpers/global_helpers.rb +5 -73
- data/lib/gooddata/helpers/global_helpers_params.rb +73 -7
- data/lib/gooddata/helpers/helpers.rb +1 -1
- data/lib/gooddata/lcm/actions/actions.rb +12 -0
- data/lib/gooddata/lcm/actions/associate_clients.rb +46 -0
- data/lib/gooddata/lcm/actions/base_action.rb +23 -0
- data/lib/gooddata/lcm/actions/collect_clients.rb +89 -0
- data/lib/gooddata/lcm/actions/collect_segment_clients.rb +103 -0
- data/lib/gooddata/lcm/actions/collect_segments.rb +59 -0
- data/lib/gooddata/lcm/actions/create_segment_masters.rb +167 -0
- data/lib/gooddata/lcm/actions/ensure_release_table.rb +56 -0
- data/lib/gooddata/lcm/actions/ensure_segments.rb +35 -0
- data/lib/gooddata/lcm/actions/ensure_technical_users_domain.rb +66 -0
- data/lib/gooddata/lcm/actions/ensure_technical_users_project.rb +68 -0
- data/lib/gooddata/lcm/actions/ensure_titles.rb +54 -0
- data/lib/gooddata/lcm/actions/hello_world.rb +44 -0
- data/lib/gooddata/lcm/actions/print_actions.rb +61 -0
- data/lib/gooddata/lcm/actions/print_modes.rb +72 -0
- data/lib/gooddata/lcm/actions/print_types.rb +55 -0
- data/lib/gooddata/lcm/actions/provision_clients.rb +80 -0
- data/lib/gooddata/lcm/actions/purge_clients.rb +78 -0
- data/lib/gooddata/lcm/actions/segments_filter.rb +50 -0
- data/lib/gooddata/lcm/actions/synchronize_attribute_drillpaths.rb +60 -0
- data/lib/gooddata/lcm/actions/synchronize_clients.rb +87 -0
- data/lib/gooddata/lcm/actions/synchronize_color_palette.rb +59 -0
- data/lib/gooddata/lcm/actions/synchronize_label_types.rb +61 -0
- data/lib/gooddata/lcm/actions/synchronize_ldm.rb +64 -0
- data/lib/gooddata/lcm/actions/synchronize_meta.rb +55 -0
- data/lib/gooddata/lcm/actions/synchronize_new_segments.rb +55 -0
- data/lib/gooddata/lcm/actions/synchronize_processes.rb +66 -0
- data/lib/gooddata/lcm/actions/synchronize_schedules.rb +81 -0
- data/lib/gooddata/lcm/actions/update_release_table.rb +80 -0
- data/lib/gooddata/lcm/data/create_lcm_release.sql.erb +5 -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 +61 -0
- data/lib/gooddata/lcm/helpers/check_helper.rb +37 -0
- data/lib/gooddata/lcm/helpers/helpers.rb +12 -0
- data/lib/gooddata/lcm/lcm.rb +161 -20
- data/lib/gooddata/lcm/lcm2.rb +260 -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 +37 -0
- data/lib/gooddata/lcm/types/complex/synchronization_info.rb +32 -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 +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 +35 -0
- data/lib/gooddata/lcm/types/special/enum.rb +17 -0
- data/lib/gooddata/lcm/types/special/types.rb +12 -0
- data/lib/gooddata/lcm/types/types.rb +12 -0
- data/lib/gooddata/mixins/author.rb +1 -1
- data/lib/gooddata/mixins/content_getter.rb +1 -1
- data/lib/gooddata/mixins/content_property_reader.rb +1 -1
- data/lib/gooddata/mixins/content_property_writer.rb +1 -1
- data/lib/gooddata/mixins/contributor.rb +1 -1
- data/lib/gooddata/mixins/data_getter.rb +1 -1
- data/lib/gooddata/mixins/data_property_reader.rb +1 -1
- data/lib/gooddata/mixins/data_property_writer.rb +1 -1
- data/lib/gooddata/mixins/inspector.rb +1 -1
- data/lib/gooddata/mixins/is_attribute.rb +1 -1
- data/lib/gooddata/mixins/is_dimension.rb +1 -1
- data/lib/gooddata/mixins/is_fact.rb +1 -1
- data/lib/gooddata/mixins/is_label.rb +1 -1
- data/lib/gooddata/mixins/links.rb +1 -1
- data/lib/gooddata/mixins/md_finders.rb +1 -1
- data/lib/gooddata/mixins/md_grantees.rb +1 -1
- data/lib/gooddata/mixins/md_id_to_uri.rb +9 -3
- data/lib/gooddata/mixins/md_json.rb +1 -1
- data/lib/gooddata/mixins/md_lock.rb +1 -1
- data/lib/gooddata/mixins/md_object_id.rb +1 -1
- data/lib/gooddata/mixins/md_object_indexer.rb +1 -1
- data/lib/gooddata/mixins/md_object_query.rb +1 -1
- data/lib/gooddata/mixins/md_relations.rb +1 -1
- data/lib/gooddata/mixins/meta_getter.rb +1 -1
- data/lib/gooddata/mixins/meta_property_reader.rb +1 -1
- data/lib/gooddata/mixins/meta_property_writer.rb +1 -1
- data/lib/gooddata/mixins/mixins.rb +1 -1
- data/lib/gooddata/mixins/not_attribute.rb +1 -1
- data/lib/gooddata/mixins/not_exportable.rb +1 -1
- data/lib/gooddata/mixins/not_fact.rb +1 -1
- data/lib/gooddata/mixins/not_group.rb +1 -1
- data/lib/gooddata/mixins/not_label.rb +1 -1
- data/lib/gooddata/mixins/not_metric.rb +1 -1
- data/lib/gooddata/mixins/obj_id.rb +1 -1
- data/lib/gooddata/mixins/rest_getters.rb +1 -1
- data/lib/gooddata/mixins/rest_resource.rb +1 -1
- data/lib/gooddata/mixins/root_key_getter.rb +1 -1
- data/lib/gooddata/mixins/root_key_setter.rb +1 -1
- data/lib/gooddata/mixins/timestamps.rb +1 -1
- 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 +4 -3
- data/lib/gooddata/models/blueprint/attribute_field.rb +18 -2
- data/lib/gooddata/models/blueprint/blueprint.rb +1 -1
- data/lib/gooddata/models/blueprint/blueprint_field.rb +1 -1
- data/lib/gooddata/models/blueprint/dashboard_builder.rb +1 -1
- data/lib/gooddata/models/blueprint/dataset_blueprint.rb +6 -1
- data/lib/gooddata/models/blueprint/date_dimension.rb +1 -1
- data/lib/gooddata/models/blueprint/fact_field.rb +1 -1
- data/lib/gooddata/models/blueprint/label_field.rb +5 -1
- data/lib/gooddata/models/blueprint/project_blueprint.rb +1 -1
- data/lib/gooddata/models/blueprint/project_builder.rb +1 -1
- data/lib/gooddata/models/blueprint/reference_field.rb +1 -1
- data/lib/gooddata/models/blueprint/schema_blueprint.rb +1 -1
- data/lib/gooddata/models/blueprint/schema_builder.rb +1 -1
- data/lib/gooddata/models/blueprint/to_manifest.rb +7 -3
- data/lib/gooddata/models/blueprint/to_wire.rb +12 -1
- data/lib/gooddata/models/channel_configuration.rb +112 -0
- data/lib/gooddata/models/client.rb +42 -6
- data/lib/gooddata/models/client_synchronization_result.rb +1 -1
- data/lib/gooddata/models/client_synchronization_result_details.rb +1 -1
- data/lib/gooddata/models/datawarehouse.rb +25 -3
- data/lib/gooddata/models/domain.rb +29 -4
- data/lib/gooddata/models/execution.rb +1 -1
- data/lib/gooddata/models/execution_detail.rb +1 -1
- data/lib/gooddata/models/from_wire.rb +8 -1
- data/lib/gooddata/models/invitation.rb +1 -1
- data/lib/gooddata/models/links.rb +1 -1
- data/lib/gooddata/models/membership.rb +1 -1
- data/lib/gooddata/models/metadata.rb +3 -2
- data/lib/gooddata/models/metadata/attribute.rb +7 -1
- data/lib/gooddata/models/metadata/dashboard.rb +3 -3
- data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +1 -1
- data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +2 -2
- data/lib/gooddata/models/metadata/dashboard/filter_item.rb +2 -2
- data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +2 -2
- data/lib/gooddata/models/metadata/dashboard/headline_item.rb +2 -2
- data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +2 -2
- data/lib/gooddata/models/metadata/dashboard/report_item.rb +2 -2
- data/lib/gooddata/models/metadata/dashboard/text_item.rb +2 -2
- data/lib/gooddata/models/metadata/dashboard_tab.rb +2 -2
- data/lib/gooddata/models/metadata/dataset.rb +1 -1
- data/lib/gooddata/models/metadata/dimension.rb +1 -1
- data/lib/gooddata/models/metadata/fact.rb +1 -1
- data/lib/gooddata/models/metadata/folder.rb +1 -1
- data/lib/gooddata/models/metadata/label.rb +1 -1
- data/lib/gooddata/models/metadata/metadata.rb +1 -1
- data/lib/gooddata/models/metadata/metric.rb +1 -1
- data/lib/gooddata/models/metadata/report.rb +1 -1
- data/lib/gooddata/models/metadata/report_definition.rb +1 -1
- data/lib/gooddata/models/metadata/scheduled_mail.rb +2 -2
- data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +1 -1
- data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +1 -1
- data/lib/gooddata/models/metadata/variable.rb +1 -1
- data/lib/gooddata/models/model.rb +1 -1
- data/lib/gooddata/models/models.rb +1 -1
- data/lib/gooddata/models/module_constants.rb +1 -1
- data/lib/gooddata/models/notification_rule.rb +113 -0
- data/lib/gooddata/models/process.rb +10 -3
- data/lib/gooddata/models/profile.rb +9 -1
- data/lib/gooddata/models/project.rb +248 -50
- data/lib/gooddata/models/project_creator.rb +2 -2
- data/lib/gooddata/models/project_metadata.rb +1 -1
- data/lib/gooddata/models/project_role.rb +1 -1
- data/lib/gooddata/models/report_data_result.rb +1 -1
- data/lib/gooddata/models/schedule.rb +49 -13
- data/lib/gooddata/models/segment.rb +3 -3
- data/lib/gooddata/models/style_setting.rb +71 -0
- data/lib/gooddata/models/subscription.rb +181 -0
- data/lib/gooddata/models/tab_builder.rb +1 -1
- data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +1 -1
- data/lib/gooddata/models/user_filters/user_filter.rb +1 -1
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +11 -5
- data/lib/gooddata/models/user_filters/user_filters.rb +1 -1
- data/lib/gooddata/models/user_filters/variable_user_filter.rb +1 -1
- data/lib/gooddata/models/user_group.rb +19 -12
- data/lib/gooddata/rest/client.rb +9 -1
- data/lib/gooddata/rest/connection.rb +18 -9
- data/lib/gooddata/rest/object.rb +1 -1
- data/lib/gooddata/rest/object_factory.rb +1 -1
- data/lib/gooddata/rest/resource.rb +1 -1
- data/lib/gooddata/rest/rest.rb +1 -1
- data/lib/gooddata/version.rb +2 -2
- data/spec/.rubocop.yml +16 -0
- data/spec/bricks/bricks_spec.rb +13 -15
- data/spec/data/blueprints/attribute_sort_order_blueprint.json +72 -0
- data/spec/data/gooddata_version_process/gooddata_version.rb +1 -1
- data/spec/data/hello_world_process/hello_world.rb +2 -2
- data/spec/data/ruby_params_process/ruby_params.rb +1 -1
- data/spec/data/ruby_process/process.rb +2 -2
- data/spec/data/wire_models/attribute_sort_by_model.json +73 -0
- data/spec/environment/default.rb +14 -13
- data/spec/environment/develop.rb +26 -11
- data/spec/environment/environment.rb +2 -1
- data/spec/environment/hotfix.rb +15 -7
- data/spec/environment/production.rb +6 -14
- data/spec/environment/staging.rb +9 -10
- data/spec/helpers/blueprint_helper.rb +11 -10
- data/spec/helpers/cli_helper.rb +26 -24
- data/spec/helpers/connection_helper.rb +28 -26
- data/spec/helpers/crypto_helper.rb +8 -6
- data/spec/helpers/csv_helper.rb +7 -5
- data/spec/helpers/process_helper.rb +13 -11
- data/spec/helpers/project_helper.rb +36 -34
- data/spec/helpers/schedule_helper.rb +13 -11
- data/spec/helpers/spec_helper.rb +8 -6
- data/spec/integration/ads_output_stage_spec.rb +55 -0
- data/spec/integration/blueprint_updates_spec.rb +22 -16
- data/spec/integration/blueprint_with_grain_spec.rb +5 -3
- data/spec/integration/channel_configuration_spec.rb +67 -0
- data/spec/integration/clients_spec.rb +31 -22
- data/spec/integration/command_datawarehouse_spec.rb +4 -4
- data/spec/integration/command_projects_spec.rb +6 -6
- data/spec/integration/create_from_template_spec.rb +4 -3
- data/spec/integration/create_project_spec.rb +7 -4
- data/spec/integration/date_dim_switch_spec.rb +25 -28
- data/spec/integration/deprecated_load_spec.rb +11 -9
- data/spec/integration/full_process_schedule_spec.rb +82 -13
- data/spec/integration/full_project_spec.rb +67 -45
- data/spec/integration/lcm_spec.rb +41 -0
- data/spec/integration/over_to_user_filters_spec.rb +14 -10
- data/spec/integration/partial_md_export_import_spec.rb +3 -4
- data/spec/integration/project_spec.rb +101 -42
- data/spec/integration/rest_spec.rb +5 -4
- data/spec/integration/schedule_spec.rb +28 -39
- data/spec/integration/segments_spec.rb +42 -31
- data/spec/integration/subscription_spec.rb +63 -0
- data/spec/integration/user_filters_spec.rb +49 -39
- data/spec/integration/user_group_spec.rb +25 -5
- data/spec/integration/variables_spec.rb +34 -32
- data/spec/logging_in_logging_out_spec.rb +6 -8
- data/spec/spec_helper.rb +3 -3
- data/spec/unit/bricks/bricks_spec.rb +3 -4
- data/spec/unit/bricks/middleware/aws_middelware_spec.rb +8 -15
- data/spec/unit/bricks/middleware/bench_middleware_spec.rb +2 -2
- data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +2 -2
- data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +2 -2
- data/spec/unit/bricks/middleware/logger_middleware_spec.rb +2 -2
- data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +3 -3
- data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +3 -3
- data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +3 -3
- data/spec/unit/cli/cli_spec.rb +3 -3
- data/spec/unit/cli/commands/cmd_auth_spec.rb +2 -2
- data/spec/unit/commands/command_projects_spec.rb +3 -3
- data/spec/unit/core/connection_spec.rb +3 -4
- data/spec/unit/core/logging_spec.rb +2 -5
- data/spec/unit/core/nil_logger_spec.rb +2 -2
- data/spec/unit/core/project_spec.rb +4 -4
- data/spec/unit/extensions/hash_spec.rb +3 -4
- data/spec/unit/godzilla/goodzilla_spec.rb +22 -26
- data/spec/unit/helpers/csv_helper_spec.rb +3 -3
- data/spec/unit/helpers/data_helper_spec.rb +6 -18
- data/spec/unit/helpers/global_helpers_spec.rb +112 -28
- data/spec/unit/helpers_spec.rb +139 -2
- data/spec/unit/models/blueprint/attribute_sort_by_spec.rb +20 -0
- data/spec/unit/models/blueprint/attributes_spec.rb +1 -2
- data/spec/unit/models/blueprint/dataset_spec.rb +2 -3
- data/spec/unit/models/blueprint/labels_spec.rb +1 -2
- data/spec/unit/models/blueprint/project_blueprint_spec.rb +34 -35
- data/spec/unit/models/blueprint/reference_spec.rb +1 -2
- data/spec/unit/models/blueprint/schema_builder_spec.rb +5 -7
- data/spec/unit/models/blueprint/to_wire_spec.rb +76 -55
- data/spec/unit/models/domain_spec.rb +4 -5
- data/spec/unit/models/execution_spec.rb +16 -15
- data/spec/unit/models/from_wire_spec.rb +24 -19
- data/spec/unit/models/invitation_spec.rb +1 -1
- data/spec/unit/models/membership_spec.rb +36 -41
- data/spec/unit/models/metadata_spec.rb +20 -18
- data/spec/unit/models/metric_spec.rb +67 -55
- data/spec/unit/models/model_spec.rb +32 -37
- data/spec/unit/models/params_spec.rb +1 -1
- data/spec/unit/models/profile_spec.rb +40 -45
- data/spec/unit/models/project_creator_spec.rb +27 -29
- data/spec/unit/models/project_role_spec.rb +1 -1
- data/spec/unit/models/project_spec.rb +65 -2
- data/spec/unit/models/report_result_data_spec.rb +7 -12
- data/spec/unit/models/schedule_spec.rb +71 -35
- data/spec/unit/models/to_manifest_spec.rb +69 -4
- data/spec/unit/models/unit_project_spec.rb +12 -12
- data/spec/unit/models/user_filters_spec.rb +40 -40
- data/spec/unit/models/variable_spec.rb +108 -93
- data/spec/unit/rest/polling_spec.rb +7 -7
- data/spec/unit/rest/resource_spec.rb +2 -2
- metadata +145 -228
- data/spec/environment/release.rb +0 -21
- data/spec/environment/staging_3.rb +0 -36
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
#
|
|
3
|
-
# Copyright (c) 2010-
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
4
|
# This source code is licensed under the BSD-style license found in the
|
|
5
5
|
# LICENSE file in the root directory of this source tree.
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ require 'gooddata'
|
|
|
8
8
|
|
|
9
9
|
describe "Full project implementation", :constraint => 'slow' do
|
|
10
10
|
before(:all) do
|
|
11
|
-
@client = ConnectionHelper
|
|
11
|
+
@client = ConnectionHelper.create_default_connection
|
|
12
12
|
@blueprint = GoodData::Model::ProjectBlueprint.build("my_bp") do |p|
|
|
13
13
|
p.add_dataset("dataset.repos") do |d|
|
|
14
14
|
d.add_anchor("attr.repository")
|
|
@@ -32,10 +32,11 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
32
32
|
["label.repository.name", "label.attribute1.name", "some_numbers"],
|
|
33
33
|
[1, "tomas@gooddata.com", 10],
|
|
34
34
|
[2, "petr@gooddata.com", 20],
|
|
35
|
-
[3, "jirka@gooddata.com", 30]
|
|
35
|
+
[3, "jirka@gooddata.com", 30]
|
|
36
|
+
]
|
|
36
37
|
@project.upload(devs_data, @blueprint, 'dataset.repos')
|
|
37
|
-
vals = @project.labels('label.repository.name').values.to_a.map {|
|
|
38
|
-
expect(vals).to eq
|
|
38
|
+
vals = @project.labels('label.repository.name').values.to_a.map { |label| label[:value] }
|
|
39
|
+
expect(vals).to eq %w(1 2 3)
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
it 'should upload the data when you deprecate attribute with remote blueprint' do
|
|
@@ -50,9 +51,10 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
50
51
|
[1, "tomas@gooddata.com", 10],
|
|
51
52
|
[2, "petr@gooddata.com", 20],
|
|
52
53
|
[3, "jirka@gooddata.com", 30],
|
|
53
|
-
[4, "jindrich@gooddata.com", 40]
|
|
54
|
+
[4, "jindrich@gooddata.com", 40]
|
|
55
|
+
]
|
|
54
56
|
@project.upload(devs_data, @project.blueprint, 'dataset.repos')
|
|
55
|
-
vals = @project.labels('label.repository.name').values.to_a.map {|
|
|
56
|
-
expect(vals).to eq
|
|
57
|
+
vals = @project.labels('label.repository.name').values.to_a.map { |label| label[:value] }
|
|
58
|
+
expect(vals).to eq %w(1 2 3 4)
|
|
57
59
|
end
|
|
58
|
-
end
|
|
60
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
#
|
|
3
|
-
# Copyright (c) 2010-
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
4
|
# This source code is licensed under the BSD-style license found in the
|
|
5
5
|
# LICENSE file in the root directory of this source tree.
|
|
6
6
|
|
|
@@ -27,7 +27,7 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
before(:all) do
|
|
30
|
-
@client = ConnectionHelper
|
|
30
|
+
@client = ConnectionHelper.create_default_connection
|
|
31
31
|
@project = @client.create_project(title: 'Project for schedule testing', auth_token: ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT)
|
|
32
32
|
@process = @project.deploy_process('./spec/data/ruby_process',
|
|
33
33
|
type: 'RUBY',
|
|
@@ -36,7 +36,6 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
|
|
|
36
36
|
@process_cc = @project.deploy_process('./spec/data/cc',
|
|
37
37
|
type: 'graph',
|
|
38
38
|
name: 'Test ETL Process (CC)')
|
|
39
|
-
|
|
40
39
|
end
|
|
41
40
|
|
|
42
41
|
after(:all) do
|
|
@@ -44,7 +43,8 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
|
|
|
44
43
|
ProcessHelper.remove_old_processes(@project)
|
|
45
44
|
|
|
46
45
|
# @process.delete if @process
|
|
47
|
-
|
|
46
|
+
@project.delete if @project
|
|
47
|
+
GoodData::ChannelConfiguration.all.map(&:delete)
|
|
48
48
|
|
|
49
49
|
@client.disconnect
|
|
50
50
|
end
|
|
@@ -63,7 +63,6 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
|
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
it "should be able to grab executables" do
|
|
66
|
-
|
|
67
66
|
expect(@process.executables).to eq ['process.rb']
|
|
68
67
|
end
|
|
69
68
|
|
|
@@ -221,7 +220,7 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
|
|
|
221
220
|
schedule = process.create_schedule('0 15 27 7 *', process.executables.first, hidden_params: COMPLEX_PARAMS)
|
|
222
221
|
result = schedule.execute
|
|
223
222
|
# expect(result.status).to eq :ok
|
|
224
|
-
|
|
223
|
+
result.log
|
|
225
224
|
expect(process.schedules.count).to eq 1
|
|
226
225
|
ensure
|
|
227
226
|
schedule && schedule.delete
|
|
@@ -258,9 +257,11 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
|
|
|
258
257
|
|
|
259
258
|
it "should be able to redeploy directly" do
|
|
260
259
|
begin
|
|
261
|
-
process1 = @project.deploy_process(
|
|
262
|
-
|
|
263
|
-
|
|
260
|
+
process1 = @project.deploy_process(
|
|
261
|
+
'./spec/data/hello_world_process/hello_world.zip',
|
|
262
|
+
type: 'RUBY',
|
|
263
|
+
name: 'Test ETL zipped file Process'
|
|
264
|
+
)
|
|
264
265
|
|
|
265
266
|
process2 = process1.deploy('./spec/data/ruby_process/process.rb')
|
|
266
267
|
expect(process1.executables).not_to eq process2.executables
|
|
@@ -278,16 +279,15 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
|
|
|
278
279
|
end
|
|
279
280
|
end
|
|
280
281
|
|
|
281
|
-
|
|
282
282
|
it 'should be able to clone with etl' do
|
|
283
283
|
begin
|
|
284
284
|
# Deploy two schedules
|
|
285
285
|
process = @project.processes.first
|
|
286
286
|
schedule_first = process.create_schedule('0 15 27 7 *', process.executables.first)
|
|
287
287
|
schedule_second = process.create_schedule('0 15 27 8 *', process.executables.first)
|
|
288
|
-
cloned_project = GoodData::Project.clone_with_etl(@project)
|
|
289
|
-
a = @project.processes.flat_map {|p| p.schedules.map {|s| [p.name, s.name]}}
|
|
290
|
-
b = cloned_project.processes.flat_map {|p| p.schedules.map {|s| [p.name, s.name]}}
|
|
288
|
+
cloned_project = GoodData::Project.clone_with_etl(@project, auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
|
|
289
|
+
a = @project.processes.flat_map { |p| p.schedules.map { |s| [p.name, s.name] } }
|
|
290
|
+
b = cloned_project.processes.flat_map { |p| p.schedules.map { |s| [p.name, s.name] } }
|
|
291
291
|
expect(a).to eq b
|
|
292
292
|
ensure
|
|
293
293
|
cloned_project && cloned_project.delete
|
|
@@ -295,4 +295,73 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
|
|
|
295
295
|
schedule_second && schedule_second.delete
|
|
296
296
|
end
|
|
297
297
|
end
|
|
298
|
+
|
|
299
|
+
it 'should have no notification when creating a new process' do
|
|
300
|
+
begin
|
|
301
|
+
process = @project.deploy_process('./spec/data/ruby_params_process', type: 'RUBY', name: 'Ruby params process')
|
|
302
|
+
expect(process.notification_rules).to eq []
|
|
303
|
+
ensure
|
|
304
|
+
process && process.delete
|
|
305
|
+
end
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
it 'should be able to add a notification rule' do
|
|
309
|
+
begin
|
|
310
|
+
process = @project.deploy_process('./spec/data/ruby_params_process', type: 'RUBY', name: 'Ruby params process')
|
|
311
|
+
old_notification_rules = process.notification_rules
|
|
312
|
+
notification_rule = process.create_notification_rule(email: ConnectionHelper::DEFAULT_USERNAME, events: GoodData::Subscription::PROCESS_SUCCESS_EVENT)
|
|
313
|
+
expect(notification_rule.class).to be GoodData::NotificationRule
|
|
314
|
+
expect(old_notification_rules).not_to include(notification_rule)
|
|
315
|
+
new_notification_rules = process.notification_rules
|
|
316
|
+
expect(new_notification_rules).to include(notification_rule)
|
|
317
|
+
expect(old_notification_rules.length + 1).to eq new_notification_rules.length
|
|
318
|
+
ensure
|
|
319
|
+
notification_rule && notification_rule.delete
|
|
320
|
+
process && process.delete
|
|
321
|
+
end
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
it 'should be able to remove a notification rule' do
|
|
325
|
+
begin
|
|
326
|
+
process = @project.deploy_process('./spec/data/ruby_params_process', type: 'RUBY', name: 'Ruby params process')
|
|
327
|
+
old_notification_rules = process.notification_rules
|
|
328
|
+
notification_rule = process.create_notification_rule(email: ConnectionHelper::DEFAULT_USERNAME, events: GoodData::Subscription::PROCESS_SUCCESS_EVENT)
|
|
329
|
+
notification_rule.delete
|
|
330
|
+
new_notification_rules = process.notification_rules
|
|
331
|
+
expect(new_notification_rules).to eq old_notification_rules
|
|
332
|
+
ensure
|
|
333
|
+
process && process.delete
|
|
334
|
+
end
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
it 'should be able to edit a notification rule' do
|
|
338
|
+
begin
|
|
339
|
+
process = @project.deploy_process('./spec/data/ruby_params_process', type: 'RUBY', name: 'Ruby params process')
|
|
340
|
+
notification_rule = process.create_notification_rule(email: ConnectionHelper::DEFAULT_USERNAME, events: GoodData::Subscription::PROCESS_SUCCESS_EVENT)
|
|
341
|
+
expect(notification_rule.email).to eq ConnectionHelper::DEFAULT_USERNAME
|
|
342
|
+
expect(notification_rule.subject).to eq 'Email subject'
|
|
343
|
+
expect(notification_rule.body).to eq 'Email body'
|
|
344
|
+
expect(notification_rule.events).to eq [GoodData::Subscription::PROCESS_SUCCESS_EVENT]
|
|
345
|
+
|
|
346
|
+
notification_rule = GoodData::NotificationRule[notification_rule.notification_rule_id, project: @project, process: process, client: @client]
|
|
347
|
+
notification_rule.events = [GoodData::Subscription::PROCESS_SUCCESS_EVENT, GoodData::Subscription::PROCESS_STARTED_EVENT]
|
|
348
|
+
notification_rule.save
|
|
349
|
+
|
|
350
|
+
expect(process.notification_rules.first.events).to eq [GoodData::Subscription::PROCESS_SUCCESS_EVENT, GoodData::Subscription::PROCESS_STARTED_EVENT]
|
|
351
|
+
ensure
|
|
352
|
+
notification_rule && notification_rule.delete
|
|
353
|
+
process && process.delete
|
|
354
|
+
end
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
it 'should be able to get all notification rules' do
|
|
358
|
+
begin
|
|
359
|
+
process = @project.deploy_process('./spec/data/ruby_params_process', type: 'RUBY', name: 'Ruby params process')
|
|
360
|
+
notification_rule = process.create_notification_rule(email: ConnectionHelper::DEFAULT_USERNAME, events: GoodData::Subscription::PROCESS_SUCCESS_EVENT)
|
|
361
|
+
expect(process.notification_rules).to eq [notification_rule]
|
|
362
|
+
ensure
|
|
363
|
+
notification_rule && notification_rule.delete
|
|
364
|
+
process && process.delete
|
|
365
|
+
end
|
|
366
|
+
end
|
|
298
367
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
#
|
|
3
|
-
# Copyright (c) 2010-
|
|
3
|
+
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
|
|
4
4
|
# This source code is licensed under the BSD-style license found in the
|
|
5
5
|
# LICENSE file in the root directory of this source tree.
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
10
10
|
before(:all) do
|
|
11
11
|
@spec = JSON.parse(File.read("./spec/data/blueprints/test_project_model_spec.json"), :symbolize_names => true)
|
|
12
12
|
@invalid_spec = JSON.parse(File.read("./spec/data/blueprints/invalid_blueprint.json"), :symbolize_names => true)
|
|
13
|
-
@client = ConnectionHelper
|
|
13
|
+
@client = ConnectionHelper.create_default_connection
|
|
14
14
|
@blueprint = GoodData::Model::ProjectBlueprint.new(@spec)
|
|
15
15
|
@invalid_blueprint = GoodData::Model::ProjectBlueprint.new(@invalid_spec)
|
|
16
16
|
|
|
@@ -24,9 +24,9 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
it "should not build an invalid model" do
|
|
27
|
-
expect
|
|
27
|
+
expect do
|
|
28
28
|
@client.create_project_from_blueprint(@invalid_spec, auth_token: ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT)
|
|
29
|
-
|
|
29
|
+
end.to raise_error(GoodData::ValidationError)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
it "should do nothing if the project is updated with the same blueprint" do
|
|
@@ -49,7 +49,7 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
49
49
|
expect(results).to eq []
|
|
50
50
|
|
|
51
51
|
# When we change the model using the original blueprint. Basically change the title back.
|
|
52
|
-
|
|
52
|
+
@project.update_from_blueprint(@spec)
|
|
53
53
|
# It should offer no changes using the original blueprint
|
|
54
54
|
results = GoodData::Model::ProjectCreator.migrate_datasets(@spec, project: @project, client: @client, dry_run: true)
|
|
55
55
|
expect(results).to eq []
|
|
@@ -95,32 +95,34 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
it "should load the data" do
|
|
98
|
-
GoodData.with_project(@project) do
|
|
98
|
+
GoodData.with_project(@project) do
|
|
99
99
|
# blueprint = GoodData::Model::ProjectBlueprint.new(@spec)
|
|
100
100
|
commits_data = [
|
|
101
|
-
|
|
102
|
-
[1,"01/01/2014",1,1],
|
|
103
|
-
[3,"01/02/2014",2,2],
|
|
104
|
-
[5,"05/02/2014",3,1]
|
|
101
|
+
%w(lines_changed committed_on dev_id repo_id),
|
|
102
|
+
[1, "01/01/2014", 1, 1],
|
|
103
|
+
[3, "01/02/2014", 2, 2],
|
|
104
|
+
[5, "05/02/2014", 3, 1]
|
|
105
|
+
]
|
|
105
106
|
@project.upload(commits_data, @blueprint, 'dataset.commits')
|
|
106
107
|
|
|
107
108
|
devs_data = [
|
|
108
|
-
|
|
109
|
+
%w(dev_id email),
|
|
109
110
|
[1, "tomas@gooddata.com"],
|
|
110
111
|
[2, "petr@gooddata.com"],
|
|
111
|
-
[3, "jirka@gooddata.com"]
|
|
112
|
+
[3, "jirka@gooddata.com"]
|
|
113
|
+
]
|
|
112
114
|
@project.upload(devs_data, @blueprint, 'dataset.devs')
|
|
113
115
|
end
|
|
114
116
|
end
|
|
115
117
|
|
|
116
118
|
it "it silently ignores extra columns" do
|
|
117
|
-
GoodData.with_project(@project) do
|
|
119
|
+
GoodData.with_project(@project) do
|
|
118
120
|
blueprint = GoodData::Model::ProjectBlueprint.new(@spec)
|
|
119
121
|
commits_data = [
|
|
120
|
-
|
|
121
|
-
[1,"01/01/2014",1,1,"something"],
|
|
122
|
-
[3,"01/02/2014",2,2,"something"],
|
|
123
|
-
[5,"05/02/2014",3,1,"something else"]
|
|
122
|
+
%w(lines_changed committed_on dev_id repo_id extra_column),
|
|
123
|
+
[1, "01/01/2014", 1, 1, "something"],
|
|
124
|
+
[3, "01/02/2014", 2, 2, "something"],
|
|
125
|
+
[5, "05/02/2014", 3, 1, "something else"]
|
|
124
126
|
]
|
|
125
127
|
@project.upload(commits_data, blueprint, 'dataset.commits')
|
|
126
128
|
end
|
|
@@ -128,40 +130,46 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
128
130
|
|
|
129
131
|
context "it should give you a reasonable error message" do
|
|
130
132
|
it "if you omit a column" do
|
|
131
|
-
GoodData.with_project(@project) do
|
|
133
|
+
GoodData.with_project(@project) do
|
|
132
134
|
blueprint = GoodData::Model::ProjectBlueprint.new(@spec)
|
|
133
135
|
commits_data = [
|
|
134
|
-
|
|
135
|
-
[1,"01/01/2014",1],
|
|
136
|
-
[3,"01/02/2014",2],
|
|
137
|
-
[5,"05/02/2014",3]
|
|
136
|
+
%w(lines_changed committed_on dev_id),
|
|
137
|
+
[1, "01/01/2014", 1],
|
|
138
|
+
[3, "01/02/2014", 2],
|
|
139
|
+
[5, "05/02/2014", 3]
|
|
138
140
|
]
|
|
139
|
-
expect
|
|
141
|
+
expect do
|
|
142
|
+
@project.upload(commits_data, blueprint, 'dataset.commits')
|
|
143
|
+
end.to raise_error(/repo_id/)
|
|
140
144
|
end
|
|
141
145
|
end
|
|
142
146
|
it "if you give it a malformed CSV" do
|
|
143
|
-
GoodData.with_project(@project) do
|
|
147
|
+
GoodData.with_project(@project) do
|
|
144
148
|
blueprint = GoodData::Model::ProjectBlueprint.new(@spec)
|
|
145
149
|
# 4 cols in header but not in the data
|
|
146
150
|
commits_data = [
|
|
147
|
-
|
|
148
|
-
[1,"01/01/2014",1],
|
|
149
|
-
[3,"01/02/2014",2],
|
|
150
|
-
[5,"05/02/2014",3]
|
|
151
|
+
%w(lines_changed committed_on dev_id repo_id),
|
|
152
|
+
[1, "01/01/2014", 1],
|
|
153
|
+
[3, "01/02/2014", 2],
|
|
154
|
+
[5, "05/02/2014", 3]
|
|
151
155
|
]
|
|
152
|
-
expect
|
|
156
|
+
expect do
|
|
157
|
+
@project.upload(commits_data, blueprint, 'dataset.commits')
|
|
158
|
+
end.to raise_error(/Number of columns/)
|
|
153
159
|
end
|
|
154
160
|
end
|
|
155
161
|
it "if you give it wrong date format" do
|
|
156
|
-
GoodData.with_project(@project) do
|
|
162
|
+
GoodData.with_project(@project) do
|
|
157
163
|
blueprint = GoodData::Model::ProjectBlueprint.new(@spec)
|
|
158
164
|
commits_data = [
|
|
159
|
-
|
|
160
|
-
[1,"01/01/2014",1,1],
|
|
161
|
-
[3,"45/50/2014",2,2],
|
|
162
|
-
[5,"05/02/2014",3,1]
|
|
165
|
+
%w(lines_changed committed_on dev_id repo_id),
|
|
166
|
+
[1, "01/01/2014", 1, 1],
|
|
167
|
+
[3, "45/50/2014", 2, 2],
|
|
168
|
+
[5, "05/02/2014", 3, 1]
|
|
163
169
|
]
|
|
164
|
-
expect
|
|
170
|
+
expect do
|
|
171
|
+
@project.upload(commits_data, blueprint, 'dataset.commits')
|
|
172
|
+
end.to raise_error(%r{45/50/2014})
|
|
165
173
|
end
|
|
166
174
|
end
|
|
167
175
|
end
|
|
@@ -247,9 +255,9 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
247
255
|
rd = r.latest_report_definition
|
|
248
256
|
rd.content['chart'] = { 'styles' => { 'global' => { 'colorMapping' => 1 } } }
|
|
249
257
|
|
|
250
|
-
expect(GoodData::Helpers.get_path(rd.content, %w(chart styles global))).to eq
|
|
258
|
+
expect(GoodData::Helpers.get_path(rd.content, %w(chart styles global))).to eq('colorMapping' => 1)
|
|
251
259
|
rd.reset_color_mapping!
|
|
252
|
-
expect(GoodData::Helpers.get_path(rd.content, %w(chart styles global))).to eq
|
|
260
|
+
expect(GoodData::Helpers.get_path(rd.content, %w(chart styles global))).to eq('colorMapping' => [])
|
|
253
261
|
r.delete
|
|
254
262
|
res = m.used_by
|
|
255
263
|
res.each do |dependency|
|
|
@@ -393,12 +401,13 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
393
401
|
|
|
394
402
|
it "should load the data" do
|
|
395
403
|
devs_data = [
|
|
396
|
-
|
|
397
|
-
[4, "josh@gooddata.com"]
|
|
404
|
+
%w(dev_id email),
|
|
405
|
+
[4, "josh@gooddata.com"]
|
|
406
|
+
]
|
|
398
407
|
@project.upload(devs_data, @blueprint, 'dataset.devs', mode: 'INCREMENTAL')
|
|
399
408
|
end
|
|
400
409
|
|
|
401
|
-
it "should have more users"
|
|
410
|
+
it "should have more users" do
|
|
402
411
|
attribute = @project.attributes('attr.devs.dev_id')
|
|
403
412
|
expect(attribute.attribute?).to be true
|
|
404
413
|
expect(attribute.create_metric.execute).to eq 4
|
|
@@ -469,14 +478,14 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
469
478
|
|
|
470
479
|
it "should be able to give you values for" do
|
|
471
480
|
attribute = @project.attributes('attr.devs.dev_id')
|
|
472
|
-
values = attribute.labels.find { |l| l.identifier == 'label.devs.dev_id.email'}.values.to_a
|
|
481
|
+
values = attribute.labels.find { |l| l.identifier == 'label.devs.dev_id.email' }.values.to_a
|
|
473
482
|
id = values.find { |v| v[:value] == 'tomas@gooddata.com' }[:uri][-1].to_i
|
|
474
483
|
expect(attribute.values_for(id)).to eq ['tomas@gooddata.com', '1']
|
|
475
484
|
end
|
|
476
485
|
|
|
477
486
|
it "should be able to find specific element and give you the primary label value" do
|
|
478
487
|
attribute = @project.attributes('attr.devs.dev_id')
|
|
479
|
-
values = attribute.labels.find { |l| l.identifier == 'label.devs.dev_id.email'}.values.to_a
|
|
488
|
+
values = attribute.labels.find { |l| l.identifier == 'label.devs.dev_id.email' }.values.to_a
|
|
480
489
|
uri = values.find { |v| v[:value] == 'tomas@gooddata.com' }[:uri]
|
|
481
490
|
expect(@project.find_attribute_element_value(uri)).to eq 'tomas@gooddata.com'
|
|
482
491
|
end
|
|
@@ -527,12 +536,12 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
527
536
|
expect(cloned_metric).to be_nil
|
|
528
537
|
|
|
529
538
|
result = @project.transfer_objects(m, project: [cloned_project], batch_size: 1)
|
|
530
|
-
expect(result).to eq [{project: cloned_project, result: true}]
|
|
539
|
+
expect(result).to eq [{ project: cloned_project, result: true }]
|
|
531
540
|
|
|
532
541
|
# should work with pids
|
|
533
542
|
result = @project.transfer_objects(m, project: [cloned_project.pid], batch_size: 1)
|
|
534
543
|
expect(result.first[:result]).to be_truthy
|
|
535
|
-
ensure
|
|
544
|
+
ensure
|
|
536
545
|
cloned_project.delete
|
|
537
546
|
end
|
|
538
547
|
end
|
|
@@ -560,7 +569,7 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
560
569
|
r.save
|
|
561
570
|
def_uris = r.definition_uris
|
|
562
571
|
r.delete
|
|
563
|
-
expect { def_uris.each {|uri| @client.get(uri)} }.to raise_error(RestClient::ResourceNotFound)
|
|
572
|
+
expect { def_uris.each { |uri| @client.get(uri) } }.to raise_error(RestClient::ResourceNotFound)
|
|
564
573
|
end
|
|
565
574
|
|
|
566
575
|
it 'should be possible to delete data from a dataset' do
|
|
@@ -569,4 +578,17 @@ describe "Full project implementation", :constraint => 'slow' do
|
|
|
569
578
|
dataset.delete_data
|
|
570
579
|
expect(dataset.attributes.first.create_metric.execute).to be_nil
|
|
571
580
|
end
|
|
581
|
+
|
|
582
|
+
it 'shoule be able to create project from blueprint support attribute sort order' do
|
|
583
|
+
begin
|
|
584
|
+
attr_sort_order_spec = JSON.parse(File.read("./spec/data/blueprints/attribute_sort_order_blueprint.json"), :symbolize_names => true)
|
|
585
|
+
attr_sort_order_blueprint = GoodData::Model::ProjectBlueprint.new(attr_sort_order_spec)
|
|
586
|
+
|
|
587
|
+
project = @client.create_project_from_blueprint(attr_sort_order_blueprint, token: ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT)
|
|
588
|
+
attribute = project.blueprint.datasets('dataset.id').attributes('attr.id.name')
|
|
589
|
+
expect(attribute.order_by).to eq 'label.id.name.name_label_2 - DESC'
|
|
590
|
+
ensure
|
|
591
|
+
project && project.delete
|
|
592
|
+
end
|
|
593
|
+
end
|
|
572
594
|
end
|
|
@@ -0,0 +1,41 @@
|
|
|
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::LCM, :constraint => 'slow' do
|
|
10
|
+
before(:all) do
|
|
11
|
+
@client = ConnectionHelper.create_default_connection
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
after(:all) do
|
|
15
|
+
@client && @client.disconnect
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'should be able to transfer attribute drill paths' do
|
|
19
|
+
begin
|
|
20
|
+
spec = JSON.parse(File.read("./spec/data/blueprints/attribute_sort_order_blueprint.json"), :symbolize_names => true)
|
|
21
|
+
blueprint = GoodData::Model::ProjectBlueprint.new(spec)
|
|
22
|
+
|
|
23
|
+
source_project = @client.create_project_from_blueprint(blueprint, token: ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT)
|
|
24
|
+
target_project = @client.create_project_from_blueprint(source_project.blueprint, token: ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT)
|
|
25
|
+
|
|
26
|
+
name_attribute_source = source_project.attributes('attr.id.name')
|
|
27
|
+
id_attribute_source = source_project.attributes('attr.id.id')
|
|
28
|
+
name_attribute_source.drill_down(id_attribute_source)
|
|
29
|
+
|
|
30
|
+
GoodData::LCM.transfer_attribute_drillpaths(source_project, target_project)
|
|
31
|
+
|
|
32
|
+
name_attribute_target = target_project.attributes('attr.id.name')
|
|
33
|
+
id_attribute_target = target_project.attributes('attr.id.id')
|
|
34
|
+
name_attribute_target.drill_down(id_attribute_target)
|
|
35
|
+
expect(target_project.labels(name_attribute_target.content['drillDownStepAttributeDF']).attribute_uri).to eq id_attribute_target.meta['uri']
|
|
36
|
+
ensure
|
|
37
|
+
source_project && source_project.delete
|
|
38
|
+
target_project && target_project.delete
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|