gooddata 1.1.0-java → 1.2.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +144 -0
  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 +23 -452
  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