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
data/spec/unit/helpers_spec.rb
CHANGED
|
@@ -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
|
|
|
@@ -17,14 +17,18 @@ describe GoodData::Helpers do
|
|
|
17
17
|
describe '#running_on_windows?' do
|
|
18
18
|
it 'works' do
|
|
19
19
|
result = GoodData::Helpers.running_on_windows?
|
|
20
|
+
# rubocop:disable Style/DoubleNegation
|
|
20
21
|
!!result.should == result
|
|
22
|
+
# rubocop:enable Style/DoubleNegation
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
describe '#running_on_mac?' do
|
|
25
27
|
it 'works' do
|
|
26
28
|
result = GoodData::Helpers.running_on_a_mac?
|
|
29
|
+
# rubocop:disable Style/DoubleNegation
|
|
27
30
|
!!result.should == result
|
|
31
|
+
# rubocop:enable Style/DoubleNegation
|
|
28
32
|
end
|
|
29
33
|
end
|
|
30
34
|
|
|
@@ -45,7 +49,7 @@ describe GoodData::Helpers do
|
|
|
45
49
|
params = {
|
|
46
50
|
'param' => 'value',
|
|
47
51
|
'number_param' => 5,
|
|
48
|
-
'gd_encoded_params' => '{"deep": {"deeper": "deep value"}}'
|
|
52
|
+
'gd_encoded_params' => '{"deep": {"deeper": "deep value"}}'
|
|
49
53
|
}
|
|
50
54
|
expected_result = {
|
|
51
55
|
'param' => 'value',
|
|
@@ -74,6 +78,139 @@ describe GoodData::Helpers do
|
|
|
74
78
|
result = GoodData::Helpers.decode_params(params)
|
|
75
79
|
expect(result).to eq(expected_result)
|
|
76
80
|
end
|
|
81
|
+
|
|
82
|
+
it 'decodes the reference parameters in gd_encoded_params in String form' do
|
|
83
|
+
params = {
|
|
84
|
+
'param' => 'value',
|
|
85
|
+
'number_param' => 5,
|
|
86
|
+
'ads_password' => 'ads_123',
|
|
87
|
+
'my_password' => 'login_123',
|
|
88
|
+
'gd_encoded_params' => '{"login_username": "login_user", "login_password": "${my_password}", "data01": "\\\\${my_password}", "data02":"abc\\\\def"}'
|
|
89
|
+
}
|
|
90
|
+
expected_result = {
|
|
91
|
+
'param' => 'value',
|
|
92
|
+
'number_param' => 5,
|
|
93
|
+
'ads_password' => 'ads_123',
|
|
94
|
+
'my_password' => 'login_123',
|
|
95
|
+
'login_username' => 'login_user',
|
|
96
|
+
'login_password' => 'login_123',
|
|
97
|
+
'data01' => '\\login_123',
|
|
98
|
+
'data02' => 'abc\\def'
|
|
99
|
+
}
|
|
100
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
101
|
+
expect(result).to eq(expected_result)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it 'decodes the reference parameters in gd_encoded_params in Hash form' do
|
|
105
|
+
params = {
|
|
106
|
+
'param' => 'value',
|
|
107
|
+
'number_param' => 5,
|
|
108
|
+
'ads_password' => 'ads_123',
|
|
109
|
+
'my_password' => 'login_123',
|
|
110
|
+
'gd_encoded_params' => { "login_username" => "login_user", "login_password" => "${my_password}", "data01" => "\\\\${my_password}", "data02" => "abc\\def" }
|
|
111
|
+
}
|
|
112
|
+
expected_result = {
|
|
113
|
+
'param' => 'value',
|
|
114
|
+
'number_param' => 5,
|
|
115
|
+
'ads_password' => 'ads_123',
|
|
116
|
+
'my_password' => 'login_123',
|
|
117
|
+
'login_username' => 'login_user',
|
|
118
|
+
'login_password' => 'login_123',
|
|
119
|
+
'data01' => '\\login_123',
|
|
120
|
+
'data02' => 'abc\\def'
|
|
121
|
+
}
|
|
122
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
123
|
+
expect(result).to eq(expected_result)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it 'decodes escape the reference parameters in gd_encoded_params in String form' do
|
|
127
|
+
params = {
|
|
128
|
+
'param' => 'value',
|
|
129
|
+
'number_param' => 5,
|
|
130
|
+
'ads_password' => 'ads_123',
|
|
131
|
+
'my_password' => 'login_123',
|
|
132
|
+
'gd_encoded_params' => '{"login_username": "login_user", "data01": "\\${abc}"}'
|
|
133
|
+
}
|
|
134
|
+
expected_result = {
|
|
135
|
+
'param' => 'value',
|
|
136
|
+
'number_param' => 5,
|
|
137
|
+
'ads_password' => 'ads_123',
|
|
138
|
+
'my_password' => 'login_123',
|
|
139
|
+
'login_username' => 'login_user',
|
|
140
|
+
'data01' => '${abc}'
|
|
141
|
+
}
|
|
142
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
143
|
+
expect(result).to eq(expected_result)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it 'decodes escape the reference parameters in gd_encoded_params in Hash form' do
|
|
147
|
+
params = {
|
|
148
|
+
'param' => 'value',
|
|
149
|
+
'number_param' => 5,
|
|
150
|
+
'ads_password' => 'ads_123',
|
|
151
|
+
'my_password' => 'login_123',
|
|
152
|
+
'gd_encoded_params' => { "login_username" => "login_user", "data01" => "\\${abc}" }
|
|
153
|
+
}
|
|
154
|
+
expected_result = {
|
|
155
|
+
'param' => 'value',
|
|
156
|
+
'number_param' => 5,
|
|
157
|
+
'ads_password' => 'ads_123',
|
|
158
|
+
'my_password' => 'login_123',
|
|
159
|
+
'login_username' => 'login_user',
|
|
160
|
+
'data01' => '${abc}'
|
|
161
|
+
}
|
|
162
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
163
|
+
expect(result).to eq(expected_result)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it 'decodes the reference parameters in nested block in gd_encoded_params in String form' do
|
|
167
|
+
params = {
|
|
168
|
+
'param' => 'value',
|
|
169
|
+
'number_param' => 5,
|
|
170
|
+
'ads_password' => 'ads_123',
|
|
171
|
+
'my_password' => 'login_123',
|
|
172
|
+
'gd_encoded_params' => '{"login_username": "login_user", "login_password": "${my_password}", "ads_client": {"username": "ads_user", "password": "${ads_password}"}}'
|
|
173
|
+
}
|
|
174
|
+
expected_result = {
|
|
175
|
+
'param' => 'value',
|
|
176
|
+
'number_param' => 5,
|
|
177
|
+
'ads_password' => 'ads_123',
|
|
178
|
+
'my_password' => 'login_123',
|
|
179
|
+
'login_username' => 'login_user',
|
|
180
|
+
'login_password' => 'login_123',
|
|
181
|
+
'ads_client' => {
|
|
182
|
+
'username' => 'ads_user',
|
|
183
|
+
'password' => 'ads_123'
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
187
|
+
expect(result).to eq(expected_result)
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
it 'decodes the reference parameters in nested block in gd_encoded_params in Hash form' do
|
|
191
|
+
params = {
|
|
192
|
+
'param' => 'value',
|
|
193
|
+
'number_param' => 5,
|
|
194
|
+
'ads_password' => 'ads_123',
|
|
195
|
+
'my_password' => 'login_123',
|
|
196
|
+
'gd_encoded_params' => { "login_username" => "login_user", "login_password" => "${my_password}", "ads_client" => { "username" => "ads_user", "password" => "${ads_password}" } }
|
|
197
|
+
}
|
|
198
|
+
expected_result = {
|
|
199
|
+
'param' => 'value',
|
|
200
|
+
'number_param' => 5,
|
|
201
|
+
'ads_password' => 'ads_123',
|
|
202
|
+
'my_password' => 'login_123',
|
|
203
|
+
'login_username' => 'login_user',
|
|
204
|
+
'login_password' => 'login_123',
|
|
205
|
+
'ads_client' => {
|
|
206
|
+
'username' => 'ads_user',
|
|
207
|
+
'password' => 'ads_123'
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
result = GoodData::Helpers.decode_params(params, :resolve_reference_params => true)
|
|
211
|
+
expect(result).to eq(expected_result)
|
|
212
|
+
end
|
|
213
|
+
|
|
77
214
|
it 'throws an error when data params is not a valid json' do
|
|
78
215
|
params = {
|
|
79
216
|
'param' => 'value',
|
|
@@ -0,0 +1,20 @@
|
|
|
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::Model::AttributeBlueprintField do
|
|
10
|
+
before(:each) do
|
|
11
|
+
@model_view = MultiJson.load(File.read('./spec/data/wire_models/attribute_sort_by_model.json'))
|
|
12
|
+
@blueprint = GoodData::Model::FromWire.from_wire(@model_view)
|
|
13
|
+
@dataset = @blueprint.datasets('dataset.id')
|
|
14
|
+
@attribute = @dataset.attributes('attr.id.name')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'should return label id and direction of sorted attribute' do
|
|
18
|
+
expect(@attribute.order_by).to eq 'label.id.name.name_label_2 - DESC'
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -1,13 +1,12 @@
|
|
|
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
|
|
|
7
7
|
require 'gooddata'
|
|
8
8
|
|
|
9
9
|
describe GoodData::Model::AttributeBlueprintField do
|
|
10
|
-
|
|
11
10
|
before(:each) do
|
|
12
11
|
@model_view = MultiJson.load(File.read('./spec/data/wire_models/model_view.json'))
|
|
13
12
|
@blueprint = GoodData::Model::FromWire.from_wire(@model_view)
|
|
@@ -1,13 +1,12 @@
|
|
|
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
|
|
|
7
7
|
require 'gooddata'
|
|
8
8
|
|
|
9
9
|
describe GoodData::Model::DatasetBlueprint do
|
|
10
|
-
|
|
11
10
|
before(:each) do
|
|
12
11
|
@model_view = MultiJson.load(File.read('./spec/data/wire_models/model_view.json'))
|
|
13
12
|
@blueprint = GoodData::Model::FromWire.from_wire(@model_view)
|
|
@@ -80,7 +79,7 @@ describe GoodData::Model::DatasetBlueprint do
|
|
|
80
79
|
describe '#references' do
|
|
81
80
|
it 'should return references on dataset' do
|
|
82
81
|
expect(@dataset.references.count).to eq 2
|
|
83
|
-
expect(@dataset.references.map {|r| r.data[:dataset]}).to eq [
|
|
82
|
+
expect(@dataset.references.map { |r| r.data[:dataset] }).to eq [
|
|
84
83
|
'dataset.opp_records',
|
|
85
84
|
'dataset.consolidatedmarketingstatus'
|
|
86
85
|
]
|
|
@@ -1,13 +1,12 @@
|
|
|
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
|
|
|
7
7
|
require 'gooddata'
|
|
8
8
|
|
|
9
9
|
describe GoodData::Model::LabelBlueprintField do
|
|
10
|
-
|
|
11
10
|
before(:each) do
|
|
12
11
|
@model_view = MultiJson.load(File.read('./spec/data/wire_models/model_view.json'))
|
|
13
12
|
@blueprint = GoodData::Model::FromWire.from_wire(@model_view)
|
|
@@ -1,13 +1,12 @@
|
|
|
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
|
|
|
7
7
|
require 'gooddata'
|
|
8
8
|
|
|
9
9
|
describe GoodData::Model::ProjectBlueprint do
|
|
10
|
-
|
|
11
10
|
before(:each) do
|
|
12
11
|
@blueprint = GoodData::Model::ProjectBlueprint.from_json('./spec/data/blueprints/test_project_model_spec.json')
|
|
13
12
|
@invalid_blueprint = GoodData::Model::ProjectBlueprint.from_json('./spec/data/blueprints/invalid_blueprint.json')
|
|
@@ -38,7 +37,7 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
38
37
|
end
|
|
39
38
|
expect(bp.valid?).to be_falsey
|
|
40
39
|
errors = bp.validate
|
|
41
|
-
expect(errors.map {|x| x[:type]}.to_set).to eq [:attribute_without_label, :more_than_on_anchor].to_set
|
|
40
|
+
expect(errors.map { |x| x[:type] }.to_set).to eq [:attribute_without_label, :more_than_on_anchor].to_set
|
|
42
41
|
expect(errors.count).to eq 2
|
|
43
42
|
end
|
|
44
43
|
|
|
@@ -80,7 +79,7 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
80
79
|
d.add_fact('more_numbers')
|
|
81
80
|
end
|
|
82
81
|
end
|
|
83
|
-
bp.valid?.should
|
|
82
|
+
bp.valid?.should be_truthy
|
|
84
83
|
errors = bp.validate
|
|
85
84
|
expect(errors.count).to eq 0
|
|
86
85
|
facts = bp.to_wire[:diffRequest][:targetModel][:projectModel][:datasets].first[:dataset][:facts]
|
|
@@ -92,7 +91,7 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
92
91
|
expect(@invalid_blueprint.valid?).to eq false
|
|
93
92
|
end
|
|
94
93
|
end
|
|
95
|
-
|
|
94
|
+
|
|
96
95
|
describe '#validate' do
|
|
97
96
|
it 'valid blueprint should give you empty array of errors' do
|
|
98
97
|
expect(@blueprint.validate).to be_empty
|
|
@@ -101,11 +100,13 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
101
100
|
it 'invalid blueprint should give you list of violating references' do
|
|
102
101
|
errors = @invalid_blueprint.validate
|
|
103
102
|
expect(errors.size).to eq 1
|
|
104
|
-
expect(errors).to eq([
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
expect(errors).to eq([
|
|
104
|
+
{
|
|
105
|
+
:type => :wrong_label_reference,
|
|
106
|
+
:label => "some_label_id",
|
|
107
|
+
:wrong_reference => "attr.repos.repo_id ERROR"
|
|
108
|
+
}
|
|
109
|
+
])
|
|
109
110
|
end
|
|
110
111
|
|
|
111
112
|
it 'invalid label is caught correctly' do
|
|
@@ -124,18 +125,18 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
124
125
|
expect(errors.count).to eq 3
|
|
125
126
|
expect(errors).to eq [
|
|
126
127
|
{
|
|
127
|
-
:type
|
|
128
|
-
:label=>"label.attribute1.name",
|
|
129
|
-
:wrong_reference=>"attr.attribute23123"
|
|
128
|
+
:type => :wrong_label_reference,
|
|
129
|
+
:label => "label.attribute1.name",
|
|
130
|
+
:wrong_reference => "attr.attribute23123"
|
|
130
131
|
},
|
|
131
132
|
{
|
|
132
|
-
:type
|
|
133
|
-
:label=>"label.attribute1.ssn",
|
|
134
|
-
:wrong_reference=>"attr.attribute23123"
|
|
133
|
+
:type => :wrong_label_reference,
|
|
134
|
+
:label => "label.attribute1.ssn",
|
|
135
|
+
:wrong_reference => "attr.attribute23123"
|
|
135
136
|
},
|
|
136
137
|
{
|
|
137
|
-
:type
|
|
138
|
-
:attribute=>"attr.attribute1"
|
|
138
|
+
:type => :attribute_without_label,
|
|
139
|
+
:attribute => "attr.attribute1"
|
|
139
140
|
}
|
|
140
141
|
]
|
|
141
142
|
end
|
|
@@ -274,7 +275,7 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
274
275
|
expect(@blueprint.facts.count).to eq 1
|
|
275
276
|
end
|
|
276
277
|
end
|
|
277
|
-
|
|
278
|
+
|
|
278
279
|
describe '#labels' do
|
|
279
280
|
it 'Anchor on repos should have a label' do
|
|
280
281
|
expect(@repos.anchor.labels.size).to eq 1
|
|
@@ -286,7 +287,7 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
286
287
|
|
|
287
288
|
it "should return labels form all datasets" do
|
|
288
289
|
expect(@blueprint.labels.count).to eq 4
|
|
289
|
-
end
|
|
290
|
+
end
|
|
290
291
|
end
|
|
291
292
|
|
|
292
293
|
describe '#attributes_and_anchors' do
|
|
@@ -297,7 +298,7 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
297
298
|
|
|
298
299
|
describe '#merge' do
|
|
299
300
|
it "should be able to merge models without mutating the original" do
|
|
300
|
-
additional_blueprint = GoodData::Model::ProjectBlueprint.from_json("./spec/data/blueprints/additional_dataset_module.json")
|
|
301
|
+
additional_blueprint = GoodData::Model::ProjectBlueprint.from_json("./spec/data/blueprints/additional_dataset_module.json")
|
|
301
302
|
expect(@blueprint.datasets.count).to eq 3
|
|
302
303
|
new_bp = @blueprint.merge(additional_blueprint)
|
|
303
304
|
expect(@blueprint.datasets.count).to eq 3
|
|
@@ -373,15 +374,15 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
373
374
|
d.add_date('created_on')
|
|
374
375
|
end
|
|
375
376
|
end
|
|
376
|
-
expect
|
|
377
|
-
|
|
378
|
-
|
|
377
|
+
expect do
|
|
378
|
+
a.merge(b)
|
|
379
|
+
end.to raise_exception 'Unable to merge date dimensions created_on with defintion {:type=>:date_dimension, :urn=>nil, :id=>"created_on", :title=>"title B"} with {:type=>:date_dimension, :urn=>nil, :id=>"created_on", :title=>"title A"}'
|
|
379
380
|
end
|
|
380
381
|
end
|
|
381
382
|
|
|
382
383
|
describe '#merge!' do
|
|
383
384
|
it "should be able to merge models" do
|
|
384
|
-
additional_blueprint = GoodData::Model::ProjectBlueprint.from_json("./spec/data/blueprints/additional_dataset_module.json")
|
|
385
|
+
additional_blueprint = GoodData::Model::ProjectBlueprint.from_json("./spec/data/blueprints/additional_dataset_module.json")
|
|
385
386
|
expect(@blueprint.datasets.count).to eq 3
|
|
386
387
|
@blueprint.merge!(additional_blueprint)
|
|
387
388
|
expect(@blueprint.datasets.count).to eq 4
|
|
@@ -399,8 +400,6 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
399
400
|
expect(@blueprint.datasets.count).to eq 4
|
|
400
401
|
end
|
|
401
402
|
|
|
402
|
-
|
|
403
|
-
|
|
404
403
|
it "should be able to serialize itself to a hash" do
|
|
405
404
|
ser = @blueprint.to_hash
|
|
406
405
|
ser.is_a?(Hash)
|
|
@@ -440,7 +439,7 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
440
439
|
d.add_date('opportunity_comitted', dataset: 'committed_on')
|
|
441
440
|
end
|
|
442
441
|
end
|
|
443
|
-
expect(bp.datasets.flat_map { |d| d.find_columns_by_type(:date) }.map
|
|
442
|
+
expect(bp.datasets.flat_map { |d| d.find_columns_by_type(:date) }.map(&:format)).to eq [GoodData::Model::DEFAULT_DATE_FORMAT]
|
|
444
443
|
end
|
|
445
444
|
|
|
446
445
|
it 'blueprint can be set with explicit date' do
|
|
@@ -458,7 +457,7 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
458
457
|
end
|
|
459
458
|
end
|
|
460
459
|
expect(bp.valid?).to be_truthy
|
|
461
|
-
expect(bp.datasets.flat_map { |d| d.find_columns_by_type(:date) }.map
|
|
460
|
+
expect(bp.datasets.flat_map { |d| d.find_columns_by_type(:date) }.map(&:format)).to eq ['yyyy/MM/dd']
|
|
462
461
|
end
|
|
463
462
|
|
|
464
463
|
describe '#remove' do
|
|
@@ -501,21 +500,21 @@ describe GoodData::Model::ProjectBlueprint do
|
|
|
501
500
|
end
|
|
502
501
|
|
|
503
502
|
it 'crashes gracefully when nonexistent field is being moved' do
|
|
504
|
-
expect
|
|
503
|
+
expect do
|
|
505
504
|
@blueprint.move!('nonexistent_field', 'dataset.commits', 'dataset.repos')
|
|
506
|
-
|
|
505
|
+
end.to raise_exception 'Column nonexistent_field cannot be found in dataset dataset.commits'
|
|
507
506
|
end
|
|
508
507
|
|
|
509
508
|
it 'crashes gracefully when datasets does not exist' do
|
|
510
|
-
expect
|
|
509
|
+
expect do
|
|
511
510
|
@blueprint.move!('nonexistent_field', 'dataset.A', 'dataset.repos')
|
|
512
|
-
|
|
511
|
+
end.to raise_exception 'Dataset "dataset.A" could not be found'
|
|
513
512
|
end
|
|
514
513
|
|
|
515
514
|
it 'crashes gracefully when datasets does not exist' do
|
|
516
|
-
expect
|
|
515
|
+
expect do
|
|
517
516
|
@blueprint.move!('nonexistent_field', 'dataset.commits', 'dataset.B')
|
|
518
|
-
|
|
517
|
+
end.to raise_exception 'Dataset "dataset.B" could not be found'
|
|
519
518
|
end
|
|
520
519
|
end
|
|
521
520
|
|
|
@@ -1,13 +1,12 @@
|
|
|
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
|
|
|
7
7
|
require 'gooddata'
|
|
8
8
|
|
|
9
9
|
describe GoodData::Model::ReferenceBlueprintField do
|
|
10
|
-
|
|
11
10
|
before(:each) do
|
|
12
11
|
@model_view = MultiJson.load(File.read('./spec/data/wire_models/model_view.json'))
|
|
13
12
|
@blueprint = GoodData::Model::FromWire.from_wire(@model_view)
|