gooddata 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (285) hide show
  1. checksums.yaml +4 -4
  2. data/.document +0 -0
  3. data/.flayignore +2 -0
  4. data/.travis.yml +24 -7
  5. data/.yardopts +0 -0
  6. data/CHANGELOG.md +125 -1
  7. data/CLI.md +0 -0
  8. data/Dockerfile.jruby +7 -2
  9. data/Dockerfile.ruby +1 -1
  10. data/Gemfile +0 -0
  11. data/Guardfile +0 -0
  12. data/Rakefile +23 -9
  13. data/TODO.md +0 -0
  14. data/bin/gitflow-init.sh +8 -0
  15. data/ci.rake +3 -3
  16. data/data/2008.crt +39 -0
  17. data/data/new_ca.cer +22 -0
  18. data/dependency_decisions.yml +0 -0
  19. data/docker-compose.lcm.yml +31 -0
  20. data/docker-compose.yml +4 -2
  21. data/gooddata.gemspec +3 -3
  22. data/lcm.rake +288 -0
  23. data/lib/gooddata.rb +1 -0
  24. data/lib/gooddata/bricks/base_downloader.rb +1 -1
  25. data/lib/gooddata/bricks/brick.rb +0 -1
  26. data/lib/gooddata/bricks/middleware/aws_middleware.rb +1 -1
  27. data/lib/gooddata/bricks/middleware/logger_middleware.rb +1 -1
  28. data/lib/gooddata/bricks/pipeline.rb +67 -0
  29. data/lib/gooddata/bricks/provisioning_brick.rb +18 -0
  30. data/lib/gooddata/bricks/release_brick.rb +18 -0
  31. data/lib/gooddata/bricks/rollout_brick.rb +14 -0
  32. data/lib/gooddata/bricks/user_filters_brick.rb +13 -0
  33. data/lib/gooddata/bricks/users_brick.rb +13 -0
  34. data/lib/gooddata/core/logging.rb +1 -1
  35. data/lib/gooddata/exceptions/maql_execution.rb +1 -1
  36. data/lib/gooddata/extensions/string.rb +0 -0
  37. data/lib/gooddata/lcm/actions/associate_clients.rb +34 -8
  38. data/lib/gooddata/lcm/actions/collect_data_product.rb +8 -1
  39. data/lib/gooddata/lcm/actions/collect_segment_clients.rb +13 -23
  40. data/lib/gooddata/lcm/actions/collect_segments.rb +10 -0
  41. data/lib/gooddata/lcm/actions/synchronize_clients.rb +3 -1
  42. data/lib/gooddata/lcm/actions/synchronize_ldm.rb +61 -34
  43. data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +6 -4
  44. data/lib/gooddata/lcm/actions/update_release_table.rb +4 -12
  45. data/lib/gooddata/lcm/dsl/params_dsl.rb +0 -4
  46. data/lib/gooddata/lcm/dsl/type_dsl.rb +0 -4
  47. data/lib/gooddata/lcm/helpers/check_helper.rb +1 -1
  48. data/lib/gooddata/lcm/lcm2.rb +0 -2
  49. data/lib/gooddata/lcm/types/special/enum.rb +6 -0
  50. data/lib/gooddata/lcm/types/special/enum/synchronize_ldm.rb +20 -0
  51. data/lib/gooddata/lcm/types/special/types.rb +1 -1
  52. data/lib/gooddata/mixins/is_folder.rb +0 -0
  53. data/lib/gooddata/mixins/to_json.rb +0 -0
  54. data/lib/gooddata/mixins/uri_getter.rb +0 -0
  55. data/lib/gooddata/models/project_creator.rb +38 -30
  56. data/lib/gooddata/models/user_filters/user_filter_builder.rb +1 -0
  57. data/lib/gooddata/rest/README.md +0 -0
  58. data/lib/gooddata/version.rb +1 -1
  59. data/lib/templates/bricks/brick.rb.erb +0 -0
  60. data/lib/templates/bricks/main.rb.erb +0 -0
  61. data/lib/templates/project/Goodfile.erb +0 -0
  62. data/lib/templates/project/data/commits.csv +0 -0
  63. data/lib/templates/project/data/devs.csv +0 -0
  64. data/lib/templates/project/data/repos.csv +0 -0
  65. data/lib/templates/project/model/model.rb.erb +0 -0
  66. metadata +21 -451
  67. data/lib/gooddata/lcm/actions/ensure_data_product.rb +0 -63
  68. data/spec/.rubocop.yml +0 -16
  69. data/spec/bricks/bricks_spec.rb +0 -110
  70. data/spec/bricks/default-config.json +0 -8
  71. data/spec/data/.gooddata +0 -4
  72. data/spec/data/blueprints/additional_dataset_module.json +0 -32
  73. data/spec/data/blueprints/attribute_sort_order_blueprint.json +0 -72
  74. data/spec/data/blueprints/big_blueprint_not_pruned.json +0 -2079
  75. data/spec/data/blueprints/invalid_blueprint.json +0 -103
  76. data/spec/data/blueprints/m_n_model.json +0 -104
  77. data/spec/data/blueprints/model_module.json +0 -25
  78. data/spec/data/blueprints/test_blueprint.json +0 -39
  79. data/spec/data/blueprints/test_project_model_spec.json +0 -106
  80. data/spec/data/cc/data/source/commits.csv +0 -4
  81. data/spec/data/cc/data/source/devs.csv +0 -4
  82. data/spec/data/cc/data/source/repos.csv +0 -3
  83. data/spec/data/cc/devel.prm +0 -0
  84. data/spec/data/cc/graph/graph.grf +0 -11
  85. data/spec/data/cc/workspace.prm +0 -19
  86. data/spec/data/column_based_permissions.csv +0 -7
  87. data/spec/data/column_based_permissions2.csv +0 -6
  88. data/spec/data/dynamic_schedule_params_table.csv +0 -7
  89. data/spec/data/gd_gse_data_blueprint.json +0 -1371
  90. data/spec/data/gd_gse_data_manifest.json +0 -1424
  91. data/spec/data/gd_gse_data_model.json +0 -1772
  92. data/spec/data/gooddata_version_process/gooddata_version.rb +0 -9
  93. data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
  94. data/spec/data/hello_world_process/hello_world.rb +0 -9
  95. data/spec/data/hello_world_process/hello_world.zip +0 -0
  96. data/spec/data/integration_model.json +0 -252
  97. data/spec/data/integration_policies.csv +0 -9134
  98. data/spec/data/line_based_permissions.csv +0 -3
  99. data/spec/data/manifests/test_blueprint.json +0 -32
  100. data/spec/data/manifests/test_project.json +0 -107
  101. data/spec/data/reports/left_attr_report.json +0 -108
  102. data/spec/data/reports/metric_only_one_line.json +0 -83
  103. data/spec/data/reports/report_1.json +0 -197
  104. data/spec/data/reports/top_attr_report.json +0 -108
  105. data/spec/data/ruby_params_process/ruby_params.rb +0 -9
  106. data/spec/data/ruby_process/deep_files/deep_stuff.txt +0 -1
  107. data/spec/data/ruby_process/process.rb +0 -8
  108. data/spec/data/ruby_process/stuff.txt +0 -1
  109. data/spec/data/superfluous_titles_view.json +0 -81
  110. data/spec/data/test-ci-data.csv +0 -2
  111. data/spec/data/user_filters.csv +0 -2
  112. data/spec/data/users.csv +0 -12
  113. data/spec/data/wire_models/attribute_sort_by_model.json +0 -73
  114. data/spec/data/wire_models/model_view.json +0 -1775
  115. data/spec/data/wire_models/nu_model.json +0 -3046
  116. data/spec/data/wire_models/test_blueprint.json +0 -66
  117. data/spec/data/wire_test_project.json +0 -150
  118. data/spec/data/workspace_table.csv +0 -3
  119. data/spec/environment/default.rb +0 -43
  120. data/spec/environment/development.rb +0 -32
  121. data/spec/environment/environment.rb +0 -38
  122. data/spec/environment/production.rb +0 -27
  123. data/spec/environment/staging.rb +0 -32
  124. data/spec/environment/testing.rb +0 -32
  125. data/spec/helpers/appstore_project_helper.rb +0 -221
  126. data/spec/helpers/blueprint_helper.rb +0 -27
  127. data/spec/helpers/cli_helper.rb +0 -38
  128. data/spec/helpers/connection_helper.rb +0 -43
  129. data/spec/helpers/constants.rb +0 -32
  130. data/spec/helpers/crypto_helper.rb +0 -19
  131. data/spec/helpers/csv_helper.rb +0 -20
  132. data/spec/helpers/process_helper.rb +0 -35
  133. data/spec/helpers/project_helper.rb +0 -74
  134. data/spec/helpers/schedule_helper.rb +0 -33
  135. data/spec/helpers/spec_helper.rb +0 -17
  136. data/spec/integration/ads_output_stage_spec.rb +0 -45
  137. data/spec/integration/blueprint_updates_spec.rb +0 -107
  138. data/spec/integration/blueprint_with_ca_spec.rb +0 -56
  139. data/spec/integration/blueprint_with_grain_spec.rb +0 -74
  140. data/spec/integration/channel_configuration_spec.rb +0 -67
  141. data/spec/integration/clients_spec.rb +0 -164
  142. data/spec/integration/command_datawarehouse_spec.rb +0 -45
  143. data/spec/integration/command_projects_spec.rb +0 -32
  144. data/spec/integration/commands/command_projects_spec.rb +0 -22
  145. data/spec/integration/connection_spec.rb +0 -37
  146. data/spec/integration/core/connection_spec.rb +0 -56
  147. data/spec/integration/core/logging_spec.rb +0 -132
  148. data/spec/integration/core/project_spec.rb +0 -54
  149. data/spec/integration/create_from_template_spec.rb +0 -29
  150. data/spec/integration/create_project_spec.rb +0 -27
  151. data/spec/integration/date_dim_switch_spec.rb +0 -154
  152. data/spec/integration/deprecated_load_spec.rb +0 -60
  153. data/spec/integration/full_process_schedule_spec.rb +0 -367
  154. data/spec/integration/full_project_spec.rb +0 -592
  155. data/spec/integration/helpers_spec.rb +0 -16
  156. data/spec/integration/lcm_spec.rb +0 -54
  157. data/spec/integration/mandatory_user_filter_spec.rb +0 -53
  158. data/spec/integration/mixins/id_to_uri_spec.rb +0 -56
  159. data/spec/integration/models/data_product_spec.rb +0 -71
  160. data/spec/integration/models/domain_spec.rb +0 -162
  161. data/spec/integration/models/invitation_spec.rb +0 -17
  162. data/spec/integration/models/label_spec.rb +0 -49
  163. data/spec/integration/models/membership_spec.rb +0 -127
  164. data/spec/integration/models/metadata/report_spec.rb +0 -54
  165. data/spec/integration/models/metric_spec.rb +0 -24
  166. data/spec/integration/models/params_spec.rb +0 -118
  167. data/spec/integration/models/process_spec.rb +0 -35
  168. data/spec/integration/models/profile_spec.rb +0 -210
  169. data/spec/integration/models/project_role_spec.rb +0 -94
  170. data/spec/integration/models/project_spec.rb +0 -225
  171. data/spec/integration/models/schedule_spec.rb +0 -477
  172. data/spec/integration/models/unit_project_spec.rb +0 -130
  173. data/spec/integration/over_to_user_filters_spec.rb +0 -98
  174. data/spec/integration/partial_md_export_import_spec.rb +0 -41
  175. data/spec/integration/project_spec.rb +0 -381
  176. data/spec/integration/rest_spec.rb +0 -214
  177. data/spec/integration/schedule_spec.rb +0 -611
  178. data/spec/integration/segments_spec.rb +0 -100
  179. data/spec/integration/subscription_spec.rb +0 -88
  180. data/spec/integration/urn_date_dim_spec.rb +0 -53
  181. data/spec/integration/user_filters_spec.rb +0 -310
  182. data/spec/integration/user_group_spec.rb +0 -147
  183. data/spec/integration/variables_spec.rb +0 -189
  184. data/spec/integration/vcr_cassettes/GoodData_-_logging/_logger/can_assign_a_custom_logger.yml +0 -2287
  185. data/spec/integration/vcr_cassettes/GoodData_-_logging/_logger/client_logs_when_given_custom_message.yml +0 -2287
  186. data/spec/integration/vcr_cassettes/GoodData_-_logging/_logger/has_the_request_id_logged_when_I_passed_it.yml +0 -2287
  187. data/spec/integration/vcr_cassettes/GoodData_-_logging/_logging_off/Disables_logging.yml +0 -2287
  188. data/spec/integration/vcr_cassettes/GoodData_-_logging/_logging_on/Enables_logging.yml +0 -2287
  189. data/spec/integration/vcr_cassettes/GoodData_-_project/_project/Returns_project_assigned.yml +0 -354
  190. data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_nil.yml +0 -299
  191. data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_project_directly.yml +0 -354
  192. data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_project_using_project_ID.yml +0 -354
  193. data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_project_using_project_URL.yml +0 -354
  194. data/spec/integration/vcr_cassettes/GoodData_-_project/_with_project/Uses_project_specified.yml +0 -354
  195. data/spec/integration/vcr_cassettes/GoodData_Metric/all.yml +0 -2065
  196. data/spec/integration/vcr_cassettes/GoodData_Metric/should_be_able_to_update_folders.yml +0 -119
  197. data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/all.yml +0 -9812
  198. data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/should_get_json_containing_correct_id.yml +0 -174
  199. data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/should_return_nil_for_unknown_id.yml +0 -58
  200. data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/should_throw_BadRequest_for_-1.yml +0 -63
  201. data/spec/integration/vcr_cassettes/GoodData_Rest_Connection/_connect/Connects_using_username_and_password.yml +0 -299
  202. data/spec/integration/vcr_cassettes/GoodData_Rest_Connection/_disconnect/Connects_using_username_and_password.yml +0 -299
  203. data/spec/integration/vcr_cassettes/GoodData_Rest_Connection/_generate_request_id/Generates_a_non-empty_string.yml +0 -2287
  204. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_/Should_list_user_groups_as_Array.yml +0 -56
  205. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_add_members/Should_add_member.yml +0 -315
  206. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_members/Should_return_members_as_array.yml +0 -54
  207. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_remove_members/Should_remove_existing_members.yml +0 -258
  208. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_save/updates_existing_group.yml +0 -159
  209. data/spec/integration/vcr_cassettes/GoodData_UserGroup/_set_members/Should_set_new_members.yml +0 -158
  210. data/spec/integration/vcr_cassettes/GoodData_UserGroup/all.yml +0 -809
  211. data/spec/logging_in_logging_out_spec.rb +0 -91
  212. data/spec/spec_helper.rb +0 -110
  213. data/spec/unit/actions/associate_clients_spec.rb +0 -48
  214. data/spec/unit/actions/collect_client_projects_spec.rb +0 -47
  215. data/spec/unit/actions/collect_clients_spec.rb +0 -65
  216. data/spec/unit/actions/collect_data_product_spec.rb +0 -58
  217. data/spec/unit/actions/collect_dynamic_schedule_params_spec.rb +0 -56
  218. data/spec/unit/actions/collect_meta_spec.rb +0 -88
  219. data/spec/unit/actions/collect_segment_clients_spec.rb +0 -82
  220. data/spec/unit/actions/collect_tagged_objects_spec.rb +0 -126
  221. data/spec/unit/actions/collect_users_brick_users_spec.rb +0 -36
  222. data/spec/unit/actions/create_segment_masters_spec.rb +0 -65
  223. data/spec/unit/actions/ensure_data_product_spec.rb +0 -39
  224. data/spec/unit/actions/ensure_technical_users_domain_spec.rb +0 -53
  225. data/spec/unit/actions/ensure_technical_users_project_spec.rb +0 -76
  226. data/spec/unit/actions/execute_schedules_spec.rb +0 -94
  227. data/spec/unit/actions/provision_clients_spec.rb +0 -46
  228. data/spec/unit/actions/purge_clients_spec.rb +0 -47
  229. data/spec/unit/actions/rename_existing_client_projects_spec.rb +0 -54
  230. data/spec/unit/actions/segments_filter_spec.rb +0 -46
  231. data/spec/unit/actions/shared_examples_for_user_actions.rb +0 -43
  232. data/spec/unit/actions/synchronize_cas_spec.rb +0 -58
  233. data/spec/unit/actions/synchronize_clients_spec.rb +0 -71
  234. data/spec/unit/actions/synchronize_etls_in_segment_spec.rb +0 -206
  235. data/spec/unit/actions/synchronize_ldm_spec.rb +0 -70
  236. data/spec/unit/actions/synchronize_user_filters_spec.rb +0 -208
  237. data/spec/unit/actions/synchronize_user_groups_spec.rb +0 -49
  238. data/spec/unit/actions/synchronize_users_spec.rb +0 -180
  239. data/spec/unit/bricks/bricks_spec.rb +0 -34
  240. data/spec/unit/bricks/middleware/aws_middelware_spec.rb +0 -98
  241. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +0 -15
  242. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +0 -15
  243. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +0 -15
  244. data/spec/unit/bricks/middleware/logger_middleware_spec.rb +0 -30
  245. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +0 -15
  246. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +0 -15
  247. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +0 -15
  248. data/spec/unit/cli/cli_spec.rb +0 -17
  249. data/spec/unit/cli/commands/cmd_auth_spec.rb +0 -17
  250. data/spec/unit/core/nil_logger_spec.rb +0 -13
  251. data/spec/unit/extensions/hash_spec.rb +0 -22
  252. data/spec/unit/godzilla/goodzilla_spec.rb +0 -74
  253. data/spec/unit/helpers/check_helper_production_spec.rb +0 -34
  254. data/spec/unit/helpers/check_helper_spec.rb +0 -134
  255. data/spec/unit/helpers/csv_helper_spec.rb +0 -22
  256. data/spec/unit/helpers/data_helper_spec.rb +0 -67
  257. data/spec/unit/helpers/global_helpers_spec.rb +0 -264
  258. data/spec/unit/helpers_spec.rb +0 -254
  259. data/spec/unit/lcm/lcm2_spec.rb +0 -100
  260. data/spec/unit/lcm/user_bricks_helper_spec.rb +0 -58
  261. data/spec/unit/models/blueprint/attribute_sort_by_spec.rb +0 -20
  262. data/spec/unit/models/blueprint/attributes_spec.rb +0 -28
  263. data/spec/unit/models/blueprint/dataset_spec.rb +0 -120
  264. data/spec/unit/models/blueprint/label_blueprint_field_spec.rb +0 -43
  265. data/spec/unit/models/blueprint/project_blueprint_spec.rb +0 -642
  266. data/spec/unit/models/blueprint/reference_spec.rb +0 -28
  267. data/spec/unit/models/blueprint/schema_builder_spec.rb +0 -36
  268. data/spec/unit/models/blueprint/to_wire_spec.rb +0 -196
  269. data/spec/unit/models/dataset_blueprint.rb +0 -14
  270. data/spec/unit/models/execution_spec.rb +0 -109
  271. data/spec/unit/models/from_wire_spec.rb +0 -321
  272. data/spec/unit/models/metadata_spec.rb +0 -140
  273. data/spec/unit/models/metric_spec.rb +0 -129
  274. data/spec/unit/models/model_spec.rb +0 -87
  275. data/spec/unit/models/project_creator_spec.rb +0 -90
  276. data/spec/unit/models/project_spec.rb +0 -94
  277. data/spec/unit/models/report_result_data_spec.rb +0 -194
  278. data/spec/unit/models/to_manifest_spec.rb +0 -165
  279. data/spec/unit/models/user_filters/user_filter_builder_spec.rb +0 -149
  280. data/spec/unit/models/user_filters_spec.rb +0 -95
  281. data/spec/unit/models/variable_spec.rb +0 -280
  282. data/spec/unit/rest/phmap_spec.rb +0 -117
  283. data/spec/unit/rest/polling_spec.rb +0 -101
  284. data/spec/unit/rest/resource_spec.rb +0 -10
  285. data/spec/vcr_configurer.rb +0 -63
@@ -1,94 +0,0 @@
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/models/project'
8
- require 'gooddata/models/project_role'
9
-
10
- describe GoodData::ProjectRole do
11
- before(:all) do
12
- @client = ConnectionHelper.create_default_connection
13
- @project, * = ProjectHelper.load_full_project_implementation(@client)
14
- @roles = @project.roles
15
- @role = @roles.first
16
- end
17
-
18
- after(:all) do
19
- @client.disconnect
20
- end
21
-
22
- describe '#author' do
23
- it 'Returns author as GoodData::Profile' do
24
- res = @role.author
25
- expect(res).to be_an_instance_of(GoodData::Profile)
26
- end
27
- end
28
-
29
- describe '#contributor' do
30
- it 'Returns contributor as GoodData::Profile' do
31
- res = @role.contributor
32
- expect(res).to be_an_instance_of(GoodData::Profile)
33
- end
34
- end
35
-
36
- describe '#created' do
37
- it 'Returns created date as Time' do
38
- res = @role.created
39
- expect(res).to be_an_instance_of(Time)
40
- end
41
- end
42
-
43
- describe '#identifier' do
44
- it 'Returns identifier as String' do
45
- res = @role.identifier
46
- expect(res).to be_an_instance_of(String)
47
- end
48
- end
49
-
50
- describe '#permissions' do
51
- it 'Returns summary as Hash' do
52
- res = @role.permissions
53
- expect(res).to be_an_instance_of(Hash)
54
- end
55
- end
56
-
57
- describe '#summary' do
58
- it 'Returns summary as String' do
59
- res = @role.summary
60
- expect(res).to be_an_instance_of(String)
61
- end
62
- end
63
-
64
- describe '#title' do
65
- it 'Returns title as String' do
66
- res = @role.title
67
- expect(res).to be_an_instance_of(String)
68
- end
69
- end
70
-
71
- describe '#updated' do
72
- it 'Returns updated date as Time' do
73
- res = @role.updated
74
- expect(res).to be_an_instance_of(Time)
75
- end
76
- end
77
-
78
- describe '#uri' do
79
- it 'Returns URI as String' do
80
- res = @role.uri
81
- expect(res).to be_an_instance_of(String)
82
- end
83
- end
84
-
85
- describe '#users' do
86
- it 'Returns users as Array<GoodData::Profile>' do
87
- res = @role.users
88
- expect(res).to be_an_instance_of(Array)
89
- res.each do |user|
90
- expect(user).to be_an_instance_of(GoodData::Profile)
91
- end
92
- end
93
- end
94
- end
@@ -1,225 +0,0 @@
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::Project, :constraint => 'slow' do
10
- before(:all) do
11
- @client = ConnectionHelper.create_default_connection
12
- @project = ProjectHelper.get_default_project(:client => @client)
13
- @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
14
- end
15
-
16
- after(:all) do
17
- @client.disconnect
18
- end
19
-
20
- describe 'projects' do
21
- it 'Can get all projects' do
22
- projects = @client.projects
23
- expect(projects).to_not be_nil
24
- expect(projects).to be_a_kind_of(Array)
25
- projects.pmap do |project|
26
- expect(project).to be_an_instance_of(GoodData::Project)
27
- end
28
- end
29
-
30
- it 'Returns project if ID passed' do
31
- expect(@project).to_not be_nil
32
- expect(@project).to be_a_kind_of(GoodData::Project)
33
- expect(@project.pid).to eq @project.pid
34
- end
35
-
36
- it 'Returns project if URL passed' do
37
- expect(@project).to_not be_nil
38
- expect(@project).to be_a_kind_of(GoodData::Project)
39
- expect(@project.pid).to eq @project.pid
40
- end
41
-
42
- it 'Throws an exception when invalid format of URL passed' do
43
- invalid_url = '/gdc/invalid_url'
44
- expect { GoodData::Project[invalid_url] }.to raise_error
45
- end
46
- end
47
-
48
- describe '#all' do
49
- it 'Returns all projects' do
50
- projects = GoodData::Project.all(:client => @client)
51
- expect(projects).to_not be_nil
52
- expect(projects).to be_a_kind_of(Array)
53
- end
54
- end
55
-
56
- describe '#get_role_by_identifier' do
57
- it 'Looks up for role by identifier' do
58
- role = @project.get_role_by_identifier('readOnlyUserRole')
59
- expect(role).to_not be_nil
60
- expect(role).to be_a_kind_of(GoodData::ProjectRole)
61
- end
62
- end
63
-
64
- describe '#get_role_by_summary' do
65
- it 'Looks up for role by summary' do
66
- role = @project.get_role_by_summary('read only user role')
67
- expect(role).to_not be_nil
68
- expect(role).to be_a_kind_of(GoodData::ProjectRole)
69
- end
70
- end
71
-
72
- describe '#get_role_by_title' do
73
- it 'Looks up for role by title' do
74
- role = @project.get_role_by_title('Viewer')
75
- expect(role).to_not be_nil
76
- expect(role).to be_a_kind_of(GoodData::ProjectRole)
77
- end
78
- end
79
-
80
- describe "#member" do
81
- it 'Returns GoodData::Membership when looking for existing user using login' do
82
- res = @project.get_user(ConnectionHelper::DEFAULT_USERNAME)
83
- expect(res).to be_instance_of(GoodData::Membership)
84
- end
85
-
86
- it 'Returns GoodData::Membership when looking for existing user using URL' do
87
- res = @project.get_user(ConnectionHelper::DEFAULT_USER_URL)
88
- expect(res).to be_instance_of(GoodData::Membership)
89
- end
90
-
91
- it 'Returns GoodData::Membership when looking for existing user using GoodData::Profile' do
92
- user = @project.members.first
93
- res = @project.get_user(user)
94
- expect(res).to be_instance_of(GoodData::Membership)
95
- end
96
-
97
- it 'Returns null for non-existing user' do
98
- res = @project.get_user(ConnectionHelper::TEST_USERNAME)
99
- expect(res).to be_nil
100
- end
101
- end
102
-
103
- describe "#member?" do
104
- it 'Returns true when looking for existing user using login' do
105
- res = @project.member?(ConnectionHelper::DEFAULT_USERNAME)
106
- expect(res).to be_truthy
107
- end
108
-
109
- it 'Returns true when looking for existing user using URL' do
110
- res = @project.member?(ConnectionHelper::DEFAULT_USER_URL)
111
- expect(res).to be_truthy
112
- end
113
-
114
- it 'Returns true when looking for existing user using GoodData::Profile' do
115
- user = @project.members.first
116
- res = @project.member?(user)
117
- expect(res).to be_truthy
118
- end
119
-
120
- it 'Returns false for non-existing user' do
121
- res = @project.member?(ConnectionHelper::TEST_USERNAME)
122
- expect(res).to be_falsey
123
- end
124
-
125
- it 'Returns true for existing user when using optional list' do
126
- list = @project.members
127
- res = @project.member?(ConnectionHelper::DEFAULT_USERNAME, list)
128
- expect(res).to be_truthy
129
- end
130
-
131
- it 'Returns false for non-existing user when using optional list' do
132
- list = []
133
- res = @project.member?(ConnectionHelper::DEFAULT_USERNAME, list)
134
- expect(res).to be_falsey
135
- end
136
- end
137
-
138
- describe '#members?' do
139
- it 'Returns array of bools when looking for existing users using GoodData::Profile' do
140
- users = @project.members.take(10)
141
- res = @project.members?(users)
142
- expect(res.all?).to be_truthy
143
- end
144
-
145
- it 'Support variety of inputs' do
146
- users = @project.members.take(1)
147
- res = @project.members?(users + [ConnectionHelper::TEST_USERNAME])
148
- expect(res).to eq [true, false]
149
- end
150
- end
151
-
152
- describe '#roles' do
153
- it 'Returns array of GoodData::ProjectRole' do
154
- roles = @project.roles
155
- expect(roles).to be_instance_of(Array)
156
-
157
- roles.each do |role|
158
- expect(role).to be_instance_of(GoodData::ProjectRole)
159
- end
160
- end
161
- end
162
-
163
- describe '#export_clone' do
164
- context 'when exclude_schedule is true' do
165
- let(:options) { { exclude_schedules: true } }
166
- let(:clone) { GoodData::Project.create(title: 'project clone', client: @client, auth_token: ConnectionHelper::GD_PROJECT_TOKEN) }
167
-
168
- after do
169
- clone.delete if clone
170
- end
171
-
172
- it 'excludes scheduled emails' do
173
- @project.schedule_mail.save
174
- export_token = @project.export_clone(options)
175
- clone.import_clone(export_token)
176
- expect(@project.scheduled_mails.to_a).not_to be_empty
177
- expect(clone.scheduled_mails.to_a).to be_empty
178
- end
179
- end
180
-
181
- context 'when cross_data_center_export is true' do
182
- it 'is ok' do
183
- # there are no staging environments on other datacenters
184
- # so just checking if the parameter gets accepted
185
- @project.export_clone(cross_data_center_export: true)
186
- end
187
- end
188
-
189
- context 'when export task fails' do
190
- let(:fail_response) do
191
- response = { taskState: { status: 'ERROR' } }
192
- GoodData::Helpers.stringify_keys(response)
193
- end
194
-
195
- before do
196
- allow(@client)
197
- .to receive(:poll_on_response).and_return(fail_response)
198
- end
199
-
200
- it 'raises ExportCloneError' do
201
- expect { @project.export_clone }.to raise_error(GoodData::ExportCloneError)
202
- end
203
- end
204
- end
205
-
206
- describe '#import_clone' do
207
- let(:clone) { GoodData::Project.create(title: 'import clone test', client: @client, auth_token: ConnectionHelper::GD_PROJECT_TOKEN) }
208
- let(:fail_response) do
209
- response = { taskState: { status: 'ERROR' } }
210
- GoodData::Helpers.stringify_keys(response)
211
- end
212
-
213
- after do
214
- clone.delete if clone
215
- end
216
-
217
- context 'when import task fails' do
218
- it 'raises ImportCloneError' do
219
- export_token = @project.export_clone
220
- allow(@client).to receive(:poll_on_response).and_return(fail_response)
221
- expect { clone.import_clone(export_token) }.to raise_error(GoodData::ImportCloneError)
222
- end
223
- end
224
- end
225
- end
@@ -1,477 +0,0 @@
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/models/schedule'
8
-
9
- describe GoodData::Schedule do
10
- SCHEDULE_ID = ScheduleHelper::SCHEDULE_ID
11
- SCHEDULE_URL = "/gdc/projects/#{ProjectHelper::PROJECT_ID}/schedules/#{SCHEDULE_ID}"
12
-
13
- before(:all) do
14
- @client = ConnectionHelper.create_default_connection
15
-
16
- @project = ProjectHelper.get_default_project(:client => @client)
17
-
18
- # ScheduleHelper.remove_old_schedules(@project)
19
- # ProcessHelper.remove_old_processes(@project)
20
- end
21
-
22
- before(:each) do
23
- @project_executable = 'graph/graph.grf'
24
- @test_cron = '0 15 27 7 *'
25
- @test_data = {
26
- :timezone => 'UTC',
27
- :cron => '2 2 2 2 *',
28
- :client => @client,
29
- :project => @project,
30
- :params => {
31
- 'a' => 'b',
32
- 'b' => 'c'
33
- }
34
- }
35
-
36
- @test_data_with_optional_param = {
37
- :timezone => 'UTC',
38
- :cron => '2 2 2 2 *',
39
- :reschedule => 15,
40
- :client => @client,
41
- :project => @project
42
- }
43
- end
44
-
45
- describe '#create' do
46
- it 'Creates new schedule if mandatory params passed' do
47
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
48
- expect(schedule).to be_truthy
49
- end
50
-
51
- it 'Creates new schedule if mandatory params passed and optional params are present' do
52
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
53
- expect(schedule).to be_truthy
54
- end
55
-
56
- it 'Throws exception when no process ID specified' do
57
- expect do
58
- GoodData::Schedule.create(nil, @test_cron, @project_executable, @test_data)
59
- end.to raise_error 'Process ID has to be provided'
60
- end
61
-
62
- it 'Throws exception when no executable specified' do
63
- expect do
64
- GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, nil, @test_data)
65
- end.to raise_error 'Executable has to be provided'
66
- end
67
- end
68
-
69
- describe '#cron' do
70
- it 'Should return cron as string' do
71
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
72
- res = schedule.cron
73
- expect(res).not_to be_nil
74
- expect(res).not_to be_empty
75
- expect(res).to be_a_kind_of(String)
76
- expect(schedule.time_based?).to be_truthy
77
- end
78
- end
79
-
80
- describe '#cron=' do
81
- it 'Assigns the cron and marks the object dirty' do
82
- test_cron = '2 2 2 2 *'
83
-
84
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
85
- schedule.cron = test_cron
86
- expect(schedule.cron).to eq(test_cron)
87
- expect(schedule.dirty).to eq(true)
88
- expect(schedule.to_hash[:cron]).to eq test_cron
89
- expect(schedule.to_update_payload['schedule']['cron']).to eq test_cron
90
- end
91
- end
92
-
93
- describe '#executable' do
94
- it 'Should return executable as string' do
95
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
96
- res = schedule.executable
97
- expect(res).not_to be_nil
98
- expect(res).not_to be_empty
99
- expect(res).to be_a_kind_of(String)
100
- end
101
- end
102
-
103
- describe '#executable=' do
104
- it 'Assigns the executable and marks the object dirty' do
105
- test_executable = 'this/is/test.grf'
106
-
107
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
108
- schedule.executable = test_executable
109
- expect(schedule.executable).to eq(test_executable)
110
- expect(schedule.dirty).to eq(true)
111
- expect(schedule.to_hash[:executable]).to eq test_executable
112
- expect(schedule.to_update_payload['schedule']['params']['EXECUTABLE']).to eq test_executable
113
- end
114
- end
115
-
116
- describe '#execute' do
117
- it 'Cannot be executed if not saved' do
118
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
119
- expect(schedule.execute).to be_nil
120
- end
121
- end
122
-
123
- describe '#execution_url' do
124
- it 'Should return execution URL as string' do
125
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
126
- expect(schedule.execution_url).to be_nil
127
- end
128
- end
129
-
130
- describe '#type' do
131
- it 'Should return execution type as string' do
132
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
133
- expect(schedule.type).to eq 'MSETL'
134
- expect(schedule.to_hash[:type]).to eq 'MSETL'
135
- expect(schedule.to_update_payload['schedule']['type']).to eq 'MSETL'
136
- end
137
- end
138
-
139
- describe '#type=' do
140
- it 'Assigns the type the object dirty' do
141
- test_type = 'TEST'
142
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
143
- schedule.type = test_type
144
- expect(schedule.type).to eq(test_type)
145
- expect(schedule.dirty).to eq(true)
146
- expect(schedule.to_hash[:type]).to eq test_type
147
- expect(schedule.to_update_payload['schedule']['type']).to eq test_type
148
- end
149
- end
150
-
151
- describe '#hidden_params' do
152
- it 'Should return hidden_params as hash. Empty by default.' do
153
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
154
- res = schedule.hidden_params
155
- expect(res).not_to be_nil
156
- expect(res).to be_a_kind_of(Hash)
157
- end
158
-
159
- it 'Should return hidden_params as hash. Filled by default if provided.' do
160
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge(hidden_params: { 'a' => 'b' }))
161
- res = schedule.hidden_params
162
- expect(res).not_to be_nil
163
- expect(res).to be_a_kind_of(Hash)
164
- expect(res['a']).to eq 'b'
165
- end
166
- end
167
-
168
- describe '#hidden_params=' do
169
- it 'Assigns the hidden params and marks the object dirty' do
170
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
171
- old_params = schedule.hidden_params
172
-
173
- test_params = {
174
- 'PROCESS_ID' => '1-2-3-4'
175
- }
176
-
177
- schedule.hidden_params = test_params
178
- expect(schedule.hidden_params).to eq(old_params.merge(test_params))
179
- expect(schedule.dirty).to eq(true)
180
- expect(schedule.to_hash[:hidden_params]).to eq(test_params)
181
- expect(schedule.to_update_payload['schedule']['hiddenParams']).to eq(test_params)
182
- end
183
- end
184
-
185
- describe '#set_hidden_parameter' do
186
- it 'Assigns the hidden parameter and marks the object dirty' do
187
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
188
- old_params = schedule.hidden_params
189
-
190
- test_parameter = { 'test_parameter' => 'just_testing' }
191
- schedule.set_hidden_parameter(test_parameter.keys.first, test_parameter.values.first)
192
- expect(schedule.hidden_params).to eq(old_params.merge(test_parameter))
193
- expect(schedule.dirty).to eq(true)
194
- expect(schedule.to_hash[:hidden_params]).to eq(test_parameter)
195
- expect(schedule.to_update_payload['schedule']['hiddenParams']).to eq(test_parameter)
196
- end
197
- end
198
-
199
- describe '#set_parameter' do
200
- it 'Assigns the parameter and marks the object dirty' do
201
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
202
- old_params = schedule.params
203
-
204
- test_parameter = { 'test_parameter' => 'just_testing' }
205
- schedule.set_parameter(test_parameter.keys.first, test_parameter.values.first)
206
- expect(schedule.params).to eq(old_params.merge(test_parameter))
207
- expect(schedule.dirty).to eq(true)
208
- expect(schedule.to_hash[:params]).to eq(old_params.merge(test_parameter))
209
- expect(schedule.to_update_payload['schedule']['params']).to eq(old_params.merge(test_parameter))
210
- end
211
- end
212
-
213
- describe '#params' do
214
- it 'Should return execution params as hash' do
215
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
216
- res = schedule.params
217
- expect(res).not_to be_nil
218
- expect(res).to be_a_kind_of(Hash)
219
- end
220
- end
221
-
222
- describe '#params=' do
223
- it 'Updates the params and marks the object dirty' do
224
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
225
-
226
- test_params = {
227
- 'some_new_param' => '1-2-3-4'
228
- }
229
-
230
- schedule.params = test_params
231
- expect(schedule.params.keys).to eq(%w(PROCESS_ID EXECUTABLE some_new_param))
232
- expect(schedule.params['some_new_param']).to eq '1-2-3-4'
233
- expect(schedule.dirty).to eq(true)
234
- end
235
- end
236
-
237
- describe '#update_params' do
238
- it 'Updates the params and marks the object dirty' do
239
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge(params: { 'a' => 'b' }))
240
-
241
- test_params = {
242
- 'some_new_param' => '1-2-3-4',
243
- 'a' => 'c'
244
- }
245
-
246
- schedule.update_params(test_params)
247
- expect(schedule.params.keys).to eq(%w(PROCESS_ID EXECUTABLE a some_new_param))
248
- expect(schedule.params['some_new_param']).to eq '1-2-3-4'
249
- expect(schedule.params['a']).to eq 'c'
250
- expect(schedule.dirty).to eq(true)
251
- end
252
- end
253
-
254
- describe '#update_hidden_params' do
255
- it 'Updates the hidden params and marks the object dirty' do
256
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge(params: { 'a' => 'b' }))
257
-
258
- schedule.update_hidden_params('some_new_param' => '1-2-3-4', 'a' => 'c', 'x' => '')
259
- expect(schedule.hidden_params.keys.to_set).to eq(%w(x a some_new_param).to_set)
260
- expect(schedule.hidden_params['some_new_param']).to eq '1-2-3-4'
261
- expect(schedule.hidden_params['a']).to eq 'c'
262
- expect(schedule.dirty).to eq(true)
263
-
264
- schedule.update_hidden_params('some_new_param' => '1-2-3-4', 'a' => 'd')
265
- expect(schedule.hidden_params.keys.to_set).to eq(%w(x a some_new_param).to_set)
266
- expect(schedule.hidden_params['some_new_param']).to eq '1-2-3-4'
267
- expect(schedule.hidden_params['a']).to eq 'd'
268
- expect(schedule.hidden_params['x']).to eq ''
269
- expect(schedule.dirty).to eq(true)
270
- end
271
- end
272
-
273
- describe '#process_id' do
274
- it 'Should return process id as string' do
275
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
276
- res = schedule.process_id
277
- res.should_not be_nil
278
- res.should_not be_empty
279
- res.should be_a_kind_of(String)
280
- end
281
- end
282
-
283
- describe '#process_id=' do
284
- it 'Assigns the process_id and marks the object dirty' do
285
- test_process_id = '1-2-3-4'
286
-
287
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
288
- schedule.process_id = test_process_id
289
- expect(schedule.process_id).to eq(test_process_id)
290
- expect(schedule.dirty).to eq(true)
291
- expect(schedule.to_hash[:process_id]).to eq test_process_id
292
- expect(schedule.to_update_payload['schedule']['params']['PROCESS_ID']).to eq test_process_id
293
- end
294
- end
295
-
296
- describe '#state' do
297
- it 'Should return schedule state as string' do
298
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
299
- res = schedule.state
300
- expect(res).not_to be_nil
301
- expect(res).to eq 'ENABLED'
302
- expect(schedule.to_hash[:state]).to eq 'ENABLED'
303
- expect(schedule.to_update_payload['schedule']['state']).to eq 'ENABLED'
304
- end
305
-
306
- it 'Should return schedule state as string as provided' do
307
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge(:state => 'DISABLED'))
308
- res = schedule.state
309
- expect(res).not_to be_nil
310
- expect(res).to eq 'DISABLED'
311
- expect(schedule.to_hash[:state]).to eq 'DISABLED'
312
- expect(schedule.to_update_payload['schedule']['state']).to eq 'DISABLED'
313
- end
314
- end
315
-
316
- describe '#timezone' do
317
- it 'Should return timezone as string' do
318
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
319
- res = schedule.timezone
320
- expect(res).not_to be_nil
321
- expect(res).to be_a_kind_of(String)
322
- end
323
- end
324
-
325
- describe '#timezone=' do
326
- it 'Assigns the timezone and marks the object dirty' do
327
- test_timezone = 'PST'
328
-
329
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
330
- schedule.timezone = test_timezone
331
- expect(schedule.timezone).to eq(test_timezone)
332
- expect(schedule.dirty).to eq(true)
333
- end
334
- end
335
-
336
- describe '#reschedule' do
337
- it 'Should return reschedule nil if not provided' do
338
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
339
- expect(schedule.reschedule).to eq nil
340
- end
341
-
342
- it 'Should return reschedule as integer' do
343
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
344
- expect(schedule.reschedule).to eq @test_data_with_optional_param[:reschedule]
345
- expect(schedule.reschedule).to be_a_kind_of(Integer)
346
- end
347
- end
348
-
349
- describe '#reschedule=' do
350
- it 'Assigns the reschedule and marks the object dirty' do
351
- test_reschedule = 45
352
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
353
- expect(schedule.reschedule).to eq @test_data_with_optional_param[:reschedule]
354
- schedule.reschedule = test_reschedule
355
- expect(schedule.reschedule).to eq(test_reschedule)
356
- expect(schedule.dirty).to eq(true)
357
- expect(schedule.to_hash[:reschedule]).to eq test_reschedule
358
- expect(schedule.to_update_payload['schedule']['reschedule']).to eq test_reschedule
359
- end
360
- end
361
-
362
- describe '#name' do
363
- it 'Name is nil if not specified and not saved.' do
364
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
365
- expect(schedule.name).to eq nil
366
- expect(schedule.saved?).to eq false
367
- schedule.name = 'MY NAME'
368
- expect(schedule.name).to eq 'MY NAME'
369
- end
370
-
371
- it 'should be able to return your name if specified during creation.' do
372
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param.merge(name: 'My schedule name'))
373
- expect(schedule.name).to eq 'My schedule name'
374
- end
375
- end
376
-
377
- describe '#trigger_id=' do
378
- it 'should be able to set trigger_id of the schedule.' do
379
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
380
- expect(schedule.dirty).to be_truthy
381
- schedule.trigger_id = 'some_other_id'
382
- expect(schedule.dirty).to be_truthy
383
- expect(schedule.trigger_id).to eq 'some_other_id'
384
- end
385
- end
386
-
387
- describe '#name=' do
388
- it 'should be able to set name of the schedule.' do
389
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
390
- schedule.name = 'MY NAME'
391
- expect(schedule.name).to eq 'MY NAME'
392
- end
393
- end
394
-
395
- describe '#after' do
396
- context 'when after is not set' do
397
- it 'returns nil' do
398
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
399
- expect(schedule.after).to be_nil
400
- end
401
- end
402
-
403
- context 'when after is set' do
404
- before do
405
- @after_process = @project.deploy_process(
406
- './spec/data/hello_world_process/hello_world.rb',
407
- type: 'RUBY',
408
- name: 'After Process'
409
- )
410
- @after_schedule = @after_process.create_schedule(
411
- @test_cron,
412
- @after_process.executables.first
413
- )
414
- @process = @project.deploy_process(
415
- './spec/data/hello_world_process/hello_world.rb',
416
- type: 'RUBY',
417
- name: 'Main Process'
418
- )
419
- @schedule = @process.create_schedule(
420
- @after_schedule,
421
- @process.executables.first
422
- )
423
- end
424
-
425
- after do
426
- [@schedule, @process, @after_schedule, @after_process].each do |e|
427
- e && e.delete
428
- end
429
- end
430
-
431
- it 'returns the after schedule' do
432
- expect(@schedule.after).to eq @after_schedule
433
- end
434
-
435
- it 'returns an updated after schedule' do
436
- new_schedule = @process.create_schedule(
437
- '0 0 1 1 *',
438
- @process.executables.first
439
- )
440
- @schedule.after = new_schedule
441
- expect(@schedule.after).not_to eq @after_schedule
442
- expect(@schedule.after).to eq new_schedule
443
- end
444
- end
445
- end
446
-
447
- describe '#save' do
448
- let(:model) do
449
- {
450
- schedule: {
451
- params: { GRAPH: 'graph.grf' },
452
- cron: 'foo',
453
- timezone: 'bar',
454
- type: 'baz',
455
- links: { self: 'qux' }
456
- }
457
- }
458
- end
459
- let(:client) { double('client') }
460
-
461
- subject { GoodData::Schedule.new(model) }
462
-
463
- before do
464
- allow(subject).to receive(:client)
465
- .and_return(client)
466
- end
467
-
468
- it 'rewrites deprecated parameter GRAPH' do
469
- expect(client).to receive(:put) do |_, body|
470
- executable = body['schedule']['params']['EXECUTABLE']
471
- expect(executable).to eq('graph.grf')
472
- model
473
- end
474
- subject.save
475
- end
476
- end
477
- end