gooddata 0.6.49 → 0.6.50

Sign up to get free protection for your applications and to get access to all the features.
Files changed (390) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -4
  3. data/CLI.md +0 -4
  4. data/DEPENDENCIES.md +0 -8
  5. data/Dockerfile.jruby +19 -0
  6. data/Dockerfile.ruby +19 -0
  7. data/LICENSE +2 -2
  8. data/LICENSE.rb +1 -1
  9. data/Rakefile +1 -1
  10. data/gooddata.gemspec +29 -28
  11. data/lib/gooddata.rb +2 -1
  12. data/lib/gooddata/app/app.rb +1 -1
  13. data/lib/gooddata/bricks/base_downloader.rb +1 -1
  14. data/lib/gooddata/bricks/brick.rb +3 -4
  15. data/lib/gooddata/bricks/bricks.rb +3 -1
  16. data/lib/gooddata/bricks/middleware/aws_middleware.rb +6 -8
  17. data/lib/gooddata/bricks/middleware/base_middleware.rb +2 -1
  18. data/lib/gooddata/bricks/middleware/bench_middleware.rb +2 -1
  19. data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +3 -3
  20. data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +3 -2
  21. data/lib/gooddata/bricks/middleware/dwh_middleware.rb +28 -0
  22. data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +2 -2
  23. data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +2 -2
  24. data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +84 -21
  25. data/lib/gooddata/bricks/middleware/logger_middleware.rb +1 -1
  26. data/lib/gooddata/bricks/middleware/middleware.rb +1 -1
  27. data/lib/gooddata/bricks/middleware/params_inspect_middleware.rb +21 -0
  28. data/lib/gooddata/bricks/middleware/restforce_middleware.rb +26 -26
  29. data/lib/gooddata/bricks/middleware/stdout_middleware.rb +1 -1
  30. data/lib/gooddata/bricks/middleware/twitter_middleware.rb +1 -1
  31. data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +1 -1
  32. data/lib/gooddata/bricks/pipeline.rb +6 -13
  33. data/lib/gooddata/bricks/utils.rb +3 -3
  34. data/lib/gooddata/cli/cli.rb +1 -1
  35. data/lib/gooddata/cli/commands/auth_cmd.rb +1 -1
  36. data/lib/gooddata/cli/commands/domain_cmd.rb +1 -1
  37. data/lib/gooddata/cli/commands/project_cmd.rb +1 -18
  38. data/lib/gooddata/cli/hooks.rb +1 -2
  39. data/lib/gooddata/cli/shared.rb +1 -1
  40. data/lib/gooddata/cli/terminal.rb +1 -1
  41. data/lib/gooddata/client.rb +1 -1
  42. data/lib/gooddata/commands/api.rb +1 -1
  43. data/lib/gooddata/commands/auth.rb +1 -1
  44. data/lib/gooddata/commands/base.rb +1 -1
  45. data/lib/gooddata/commands/commands.rb +1 -1
  46. data/lib/gooddata/commands/datasets.rb +1 -1
  47. data/lib/gooddata/commands/datawarehouse.rb +1 -1
  48. data/lib/gooddata/commands/domain.rb +1 -1
  49. data/lib/gooddata/commands/process.rb +1 -1
  50. data/lib/gooddata/commands/project.rb +2 -31
  51. data/lib/gooddata/commands/projects.rb +1 -1
  52. data/lib/gooddata/commands/role.rb +1 -1
  53. data/lib/gooddata/commands/runners.rb +1 -1
  54. data/lib/gooddata/commands/scaffold.rb +1 -1
  55. data/lib/gooddata/commands/user.rb +1 -1
  56. data/lib/gooddata/connection.rb +1 -1
  57. data/lib/gooddata/core/core.rb +1 -1
  58. data/lib/gooddata/core/logging.rb +1 -1
  59. data/lib/gooddata/core/nil_logger.rb +1 -1
  60. data/lib/gooddata/core/project.rb +1 -1
  61. data/lib/gooddata/core/rest.rb +1 -1
  62. data/lib/gooddata/core/user.rb +1 -1
  63. data/lib/gooddata/data/data.rb +1 -1
  64. data/lib/gooddata/data/guesser.rb +1 -1
  65. data/lib/gooddata/exceptions/attr_element_not_found.rb +1 -1
  66. data/lib/gooddata/exceptions/command_failed.rb +1 -1
  67. data/lib/gooddata/exceptions/exceptions.rb +1 -1
  68. data/lib/gooddata/exceptions/execution_limit_exceeded.rb +1 -1
  69. data/lib/gooddata/exceptions/export_clone.rb +4 -0
  70. data/lib/gooddata/exceptions/filter_maqlization.rb +1 -1
  71. data/lib/gooddata/exceptions/import_clone.rb +4 -0
  72. data/lib/gooddata/exceptions/malformed_user.rb +1 -1
  73. data/lib/gooddata/exceptions/maql_execution.rb +1 -1
  74. data/lib/gooddata/exceptions/no_project_error.rb +1 -1
  75. data/lib/gooddata/exceptions/object_migration.rb +1 -1
  76. data/lib/gooddata/exceptions/project_not_found.rb +1 -1
  77. data/lib/gooddata/exceptions/segment_not_empty.rb +1 -1
  78. data/lib/gooddata/exceptions/uncomputable_report.rb +1 -1
  79. data/lib/gooddata/exceptions/user_in_different_domain.rb +1 -1
  80. data/lib/gooddata/exceptions/validation_error.rb +1 -1
  81. data/lib/gooddata/extensions/big_decimal.rb +1 -1
  82. data/lib/gooddata/extensions/class.rb +11 -0
  83. data/lib/gooddata/extensions/enumerable.rb +1 -1
  84. data/lib/gooddata/extensions/extensions.rb +1 -1
  85. data/lib/gooddata/extensions/false.rb +9 -1
  86. data/lib/gooddata/extensions/hash.rb +12 -1
  87. data/lib/gooddata/extensions/integer.rb +5 -0
  88. data/lib/gooddata/extensions/nil.rb +5 -1
  89. data/lib/gooddata/extensions/numeric.rb +1 -1
  90. data/lib/gooddata/extensions/object.rb +5 -1
  91. data/lib/gooddata/extensions/symbol.rb +1 -1
  92. data/lib/gooddata/extensions/true.rb +9 -1
  93. data/lib/gooddata/extract.rb +1 -1
  94. data/lib/gooddata/goodzilla/goodzilla.rb +1 -1
  95. data/lib/gooddata/helpers/auth_helpers.rb +1 -1
  96. data/lib/gooddata/helpers/csv_helper.rb +1 -1
  97. data/lib/gooddata/helpers/data_helper.rb +19 -10
  98. data/lib/gooddata/helpers/erb_helper.rb +23 -0
  99. data/lib/gooddata/helpers/global_helpers.rb +5 -73
  100. data/lib/gooddata/helpers/global_helpers_params.rb +73 -7
  101. data/lib/gooddata/helpers/helpers.rb +1 -1
  102. data/lib/gooddata/lcm/actions/actions.rb +12 -0
  103. data/lib/gooddata/lcm/actions/associate_clients.rb +46 -0
  104. data/lib/gooddata/lcm/actions/base_action.rb +23 -0
  105. data/lib/gooddata/lcm/actions/collect_clients.rb +89 -0
  106. data/lib/gooddata/lcm/actions/collect_segment_clients.rb +103 -0
  107. data/lib/gooddata/lcm/actions/collect_segments.rb +59 -0
  108. data/lib/gooddata/lcm/actions/create_segment_masters.rb +167 -0
  109. data/lib/gooddata/lcm/actions/ensure_release_table.rb +56 -0
  110. data/lib/gooddata/lcm/actions/ensure_segments.rb +35 -0
  111. data/lib/gooddata/lcm/actions/ensure_technical_users_domain.rb +66 -0
  112. data/lib/gooddata/lcm/actions/ensure_technical_users_project.rb +68 -0
  113. data/lib/gooddata/lcm/actions/ensure_titles.rb +54 -0
  114. data/lib/gooddata/lcm/actions/hello_world.rb +44 -0
  115. data/lib/gooddata/lcm/actions/print_actions.rb +61 -0
  116. data/lib/gooddata/lcm/actions/print_modes.rb +72 -0
  117. data/lib/gooddata/lcm/actions/print_types.rb +55 -0
  118. data/lib/gooddata/lcm/actions/provision_clients.rb +80 -0
  119. data/lib/gooddata/lcm/actions/purge_clients.rb +78 -0
  120. data/lib/gooddata/lcm/actions/segments_filter.rb +50 -0
  121. data/lib/gooddata/lcm/actions/synchronize_attribute_drillpaths.rb +60 -0
  122. data/lib/gooddata/lcm/actions/synchronize_clients.rb +87 -0
  123. data/lib/gooddata/lcm/actions/synchronize_color_palette.rb +59 -0
  124. data/lib/gooddata/lcm/actions/synchronize_label_types.rb +61 -0
  125. data/lib/gooddata/lcm/actions/synchronize_ldm.rb +64 -0
  126. data/lib/gooddata/lcm/actions/synchronize_meta.rb +55 -0
  127. data/lib/gooddata/lcm/actions/synchronize_new_segments.rb +55 -0
  128. data/lib/gooddata/lcm/actions/synchronize_processes.rb +66 -0
  129. data/lib/gooddata/lcm/actions/synchronize_schedules.rb +81 -0
  130. data/lib/gooddata/lcm/actions/update_release_table.rb +80 -0
  131. data/lib/gooddata/lcm/data/create_lcm_release.sql.erb +5 -0
  132. data/lib/gooddata/lcm/data/insert_into_lcm_release.sql.erb +11 -0
  133. data/lib/gooddata/lcm/data/select_from_lcm_release.sql.erb +8 -0
  134. data/lib/gooddata/lcm/data/update_lcm_release.sql.erb +7 -0
  135. data/lib/gooddata/lcm/dsl/dsl.rb +50 -0
  136. data/lib/gooddata/lcm/dsl/params_dsl.rb +61 -0
  137. data/lib/gooddata/lcm/dsl/type_dsl.rb +61 -0
  138. data/lib/gooddata/lcm/helpers/check_helper.rb +37 -0
  139. data/lib/gooddata/lcm/helpers/helpers.rb +12 -0
  140. data/lib/gooddata/lcm/lcm.rb +161 -20
  141. data/lib/gooddata/lcm/lcm2.rb +260 -0
  142. data/lib/gooddata/lcm/types/base_type.rb +29 -0
  143. data/lib/gooddata/lcm/types/class/ads_client.rb +35 -0
  144. data/lib/gooddata/lcm/types/class/class.rb +21 -0
  145. data/lib/gooddata/lcm/types/class/gd_client.rb +35 -0
  146. data/lib/gooddata/lcm/types/class/types.rb +12 -0
  147. data/lib/gooddata/lcm/types/complex/complex.rb +33 -0
  148. data/lib/gooddata/lcm/types/complex/release_query.rb +35 -0
  149. data/lib/gooddata/lcm/types/complex/segment.rb +37 -0
  150. data/lib/gooddata/lcm/types/complex/synchronization_info.rb +32 -0
  151. data/lib/gooddata/lcm/types/complex/tokens.rb +31 -0
  152. data/lib/gooddata/lcm/types/complex/types.rb +12 -0
  153. data/lib/gooddata/lcm/types/complex/update_preference.rb +32 -0
  154. data/lib/gooddata/lcm/types/param.rb +16 -0
  155. data/lib/gooddata/lcm/types/scalar/bool.rb +22 -0
  156. data/lib/gooddata/lcm/types/scalar/hash.rb +22 -0
  157. data/lib/gooddata/lcm/types/scalar/integer.rb +22 -0
  158. data/lib/gooddata/lcm/types/scalar/object.rb +22 -0
  159. data/lib/gooddata/lcm/types/scalar/string.rb +22 -0
  160. data/lib/gooddata/lcm/types/scalar/types.rb +12 -0
  161. data/lib/gooddata/lcm/types/special/array.rb +35 -0
  162. data/lib/gooddata/lcm/types/special/enum.rb +17 -0
  163. data/lib/gooddata/lcm/types/special/types.rb +12 -0
  164. data/lib/gooddata/lcm/types/types.rb +12 -0
  165. data/lib/gooddata/mixins/author.rb +1 -1
  166. data/lib/gooddata/mixins/content_getter.rb +1 -1
  167. data/lib/gooddata/mixins/content_property_reader.rb +1 -1
  168. data/lib/gooddata/mixins/content_property_writer.rb +1 -1
  169. data/lib/gooddata/mixins/contributor.rb +1 -1
  170. data/lib/gooddata/mixins/data_getter.rb +1 -1
  171. data/lib/gooddata/mixins/data_property_reader.rb +1 -1
  172. data/lib/gooddata/mixins/data_property_writer.rb +1 -1
  173. data/lib/gooddata/mixins/inspector.rb +1 -1
  174. data/lib/gooddata/mixins/is_attribute.rb +1 -1
  175. data/lib/gooddata/mixins/is_dimension.rb +1 -1
  176. data/lib/gooddata/mixins/is_fact.rb +1 -1
  177. data/lib/gooddata/mixins/is_label.rb +1 -1
  178. data/lib/gooddata/mixins/links.rb +1 -1
  179. data/lib/gooddata/mixins/md_finders.rb +1 -1
  180. data/lib/gooddata/mixins/md_grantees.rb +1 -1
  181. data/lib/gooddata/mixins/md_id_to_uri.rb +9 -3
  182. data/lib/gooddata/mixins/md_json.rb +1 -1
  183. data/lib/gooddata/mixins/md_lock.rb +1 -1
  184. data/lib/gooddata/mixins/md_object_id.rb +1 -1
  185. data/lib/gooddata/mixins/md_object_indexer.rb +1 -1
  186. data/lib/gooddata/mixins/md_object_query.rb +1 -1
  187. data/lib/gooddata/mixins/md_relations.rb +1 -1
  188. data/lib/gooddata/mixins/meta_getter.rb +1 -1
  189. data/lib/gooddata/mixins/meta_property_reader.rb +1 -1
  190. data/lib/gooddata/mixins/meta_property_writer.rb +1 -1
  191. data/lib/gooddata/mixins/mixins.rb +1 -1
  192. data/lib/gooddata/mixins/not_attribute.rb +1 -1
  193. data/lib/gooddata/mixins/not_exportable.rb +1 -1
  194. data/lib/gooddata/mixins/not_fact.rb +1 -1
  195. data/lib/gooddata/mixins/not_group.rb +1 -1
  196. data/lib/gooddata/mixins/not_label.rb +1 -1
  197. data/lib/gooddata/mixins/not_metric.rb +1 -1
  198. data/lib/gooddata/mixins/obj_id.rb +1 -1
  199. data/lib/gooddata/mixins/rest_getters.rb +1 -1
  200. data/lib/gooddata/mixins/rest_resource.rb +1 -1
  201. data/lib/gooddata/mixins/root_key_getter.rb +1 -1
  202. data/lib/gooddata/mixins/root_key_setter.rb +1 -1
  203. data/lib/gooddata/mixins/timestamps.rb +1 -1
  204. data/lib/gooddata/models/ads_output_stage.rb +85 -0
  205. data/lib/gooddata/models/automated_data_distribution.rb +36 -0
  206. data/lib/gooddata/models/blueprint/anchor_field.rb +4 -3
  207. data/lib/gooddata/models/blueprint/attribute_field.rb +18 -2
  208. data/lib/gooddata/models/blueprint/blueprint.rb +1 -1
  209. data/lib/gooddata/models/blueprint/blueprint_field.rb +1 -1
  210. data/lib/gooddata/models/blueprint/dashboard_builder.rb +1 -1
  211. data/lib/gooddata/models/blueprint/dataset_blueprint.rb +6 -1
  212. data/lib/gooddata/models/blueprint/date_dimension.rb +1 -1
  213. data/lib/gooddata/models/blueprint/fact_field.rb +1 -1
  214. data/lib/gooddata/models/blueprint/label_field.rb +5 -1
  215. data/lib/gooddata/models/blueprint/project_blueprint.rb +1 -1
  216. data/lib/gooddata/models/blueprint/project_builder.rb +1 -1
  217. data/lib/gooddata/models/blueprint/reference_field.rb +1 -1
  218. data/lib/gooddata/models/blueprint/schema_blueprint.rb +1 -1
  219. data/lib/gooddata/models/blueprint/schema_builder.rb +1 -1
  220. data/lib/gooddata/models/blueprint/to_manifest.rb +7 -3
  221. data/lib/gooddata/models/blueprint/to_wire.rb +12 -1
  222. data/lib/gooddata/models/channel_configuration.rb +112 -0
  223. data/lib/gooddata/models/client.rb +42 -6
  224. data/lib/gooddata/models/client_synchronization_result.rb +1 -1
  225. data/lib/gooddata/models/client_synchronization_result_details.rb +1 -1
  226. data/lib/gooddata/models/datawarehouse.rb +25 -3
  227. data/lib/gooddata/models/domain.rb +29 -4
  228. data/lib/gooddata/models/execution.rb +1 -1
  229. data/lib/gooddata/models/execution_detail.rb +1 -1
  230. data/lib/gooddata/models/from_wire.rb +8 -1
  231. data/lib/gooddata/models/invitation.rb +1 -1
  232. data/lib/gooddata/models/links.rb +1 -1
  233. data/lib/gooddata/models/membership.rb +1 -1
  234. data/lib/gooddata/models/metadata.rb +3 -2
  235. data/lib/gooddata/models/metadata/attribute.rb +7 -1
  236. data/lib/gooddata/models/metadata/dashboard.rb +3 -3
  237. data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +1 -1
  238. data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +2 -2
  239. data/lib/gooddata/models/metadata/dashboard/filter_item.rb +2 -2
  240. data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +2 -2
  241. data/lib/gooddata/models/metadata/dashboard/headline_item.rb +2 -2
  242. data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +2 -2
  243. data/lib/gooddata/models/metadata/dashboard/report_item.rb +2 -2
  244. data/lib/gooddata/models/metadata/dashboard/text_item.rb +2 -2
  245. data/lib/gooddata/models/metadata/dashboard_tab.rb +2 -2
  246. data/lib/gooddata/models/metadata/dataset.rb +1 -1
  247. data/lib/gooddata/models/metadata/dimension.rb +1 -1
  248. data/lib/gooddata/models/metadata/fact.rb +1 -1
  249. data/lib/gooddata/models/metadata/folder.rb +1 -1
  250. data/lib/gooddata/models/metadata/label.rb +1 -1
  251. data/lib/gooddata/models/metadata/metadata.rb +1 -1
  252. data/lib/gooddata/models/metadata/metric.rb +1 -1
  253. data/lib/gooddata/models/metadata/report.rb +1 -1
  254. data/lib/gooddata/models/metadata/report_definition.rb +1 -1
  255. data/lib/gooddata/models/metadata/scheduled_mail.rb +2 -2
  256. data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +1 -1
  257. data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +1 -1
  258. data/lib/gooddata/models/metadata/variable.rb +1 -1
  259. data/lib/gooddata/models/model.rb +1 -1
  260. data/lib/gooddata/models/models.rb +1 -1
  261. data/lib/gooddata/models/module_constants.rb +1 -1
  262. data/lib/gooddata/models/notification_rule.rb +113 -0
  263. data/lib/gooddata/models/process.rb +10 -3
  264. data/lib/gooddata/models/profile.rb +9 -1
  265. data/lib/gooddata/models/project.rb +248 -50
  266. data/lib/gooddata/models/project_creator.rb +2 -2
  267. data/lib/gooddata/models/project_metadata.rb +1 -1
  268. data/lib/gooddata/models/project_role.rb +1 -1
  269. data/lib/gooddata/models/report_data_result.rb +1 -1
  270. data/lib/gooddata/models/schedule.rb +49 -13
  271. data/lib/gooddata/models/segment.rb +3 -3
  272. data/lib/gooddata/models/style_setting.rb +71 -0
  273. data/lib/gooddata/models/subscription.rb +181 -0
  274. data/lib/gooddata/models/tab_builder.rb +1 -1
  275. data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +1 -1
  276. data/lib/gooddata/models/user_filters/user_filter.rb +1 -1
  277. data/lib/gooddata/models/user_filters/user_filter_builder.rb +11 -5
  278. data/lib/gooddata/models/user_filters/user_filters.rb +1 -1
  279. data/lib/gooddata/models/user_filters/variable_user_filter.rb +1 -1
  280. data/lib/gooddata/models/user_group.rb +19 -12
  281. data/lib/gooddata/rest/client.rb +9 -1
  282. data/lib/gooddata/rest/connection.rb +18 -9
  283. data/lib/gooddata/rest/object.rb +1 -1
  284. data/lib/gooddata/rest/object_factory.rb +1 -1
  285. data/lib/gooddata/rest/resource.rb +1 -1
  286. data/lib/gooddata/rest/rest.rb +1 -1
  287. data/lib/gooddata/version.rb +2 -2
  288. data/spec/.rubocop.yml +16 -0
  289. data/spec/bricks/bricks_spec.rb +13 -15
  290. data/spec/data/blueprints/attribute_sort_order_blueprint.json +72 -0
  291. data/spec/data/gooddata_version_process/gooddata_version.rb +1 -1
  292. data/spec/data/hello_world_process/hello_world.rb +2 -2
  293. data/spec/data/ruby_params_process/ruby_params.rb +1 -1
  294. data/spec/data/ruby_process/process.rb +2 -2
  295. data/spec/data/wire_models/attribute_sort_by_model.json +73 -0
  296. data/spec/environment/default.rb +14 -13
  297. data/spec/environment/develop.rb +26 -11
  298. data/spec/environment/environment.rb +2 -1
  299. data/spec/environment/hotfix.rb +15 -7
  300. data/spec/environment/production.rb +6 -14
  301. data/spec/environment/staging.rb +9 -10
  302. data/spec/helpers/blueprint_helper.rb +11 -10
  303. data/spec/helpers/cli_helper.rb +26 -24
  304. data/spec/helpers/connection_helper.rb +28 -26
  305. data/spec/helpers/crypto_helper.rb +8 -6
  306. data/spec/helpers/csv_helper.rb +7 -5
  307. data/spec/helpers/process_helper.rb +13 -11
  308. data/spec/helpers/project_helper.rb +36 -34
  309. data/spec/helpers/schedule_helper.rb +13 -11
  310. data/spec/helpers/spec_helper.rb +8 -6
  311. data/spec/integration/ads_output_stage_spec.rb +55 -0
  312. data/spec/integration/blueprint_updates_spec.rb +22 -16
  313. data/spec/integration/blueprint_with_grain_spec.rb +5 -3
  314. data/spec/integration/channel_configuration_spec.rb +67 -0
  315. data/spec/integration/clients_spec.rb +31 -22
  316. data/spec/integration/command_datawarehouse_spec.rb +4 -4
  317. data/spec/integration/command_projects_spec.rb +6 -6
  318. data/spec/integration/create_from_template_spec.rb +4 -3
  319. data/spec/integration/create_project_spec.rb +7 -4
  320. data/spec/integration/date_dim_switch_spec.rb +25 -28
  321. data/spec/integration/deprecated_load_spec.rb +11 -9
  322. data/spec/integration/full_process_schedule_spec.rb +82 -13
  323. data/spec/integration/full_project_spec.rb +67 -45
  324. data/spec/integration/lcm_spec.rb +41 -0
  325. data/spec/integration/over_to_user_filters_spec.rb +14 -10
  326. data/spec/integration/partial_md_export_import_spec.rb +3 -4
  327. data/spec/integration/project_spec.rb +101 -42
  328. data/spec/integration/rest_spec.rb +5 -4
  329. data/spec/integration/schedule_spec.rb +28 -39
  330. data/spec/integration/segments_spec.rb +42 -31
  331. data/spec/integration/subscription_spec.rb +63 -0
  332. data/spec/integration/user_filters_spec.rb +49 -39
  333. data/spec/integration/user_group_spec.rb +25 -5
  334. data/spec/integration/variables_spec.rb +34 -32
  335. data/spec/logging_in_logging_out_spec.rb +6 -8
  336. data/spec/spec_helper.rb +3 -3
  337. data/spec/unit/bricks/bricks_spec.rb +3 -4
  338. data/spec/unit/bricks/middleware/aws_middelware_spec.rb +8 -15
  339. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +2 -2
  340. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +2 -2
  341. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +2 -2
  342. data/spec/unit/bricks/middleware/logger_middleware_spec.rb +2 -2
  343. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +3 -3
  344. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +3 -3
  345. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +3 -3
  346. data/spec/unit/cli/cli_spec.rb +3 -3
  347. data/spec/unit/cli/commands/cmd_auth_spec.rb +2 -2
  348. data/spec/unit/commands/command_projects_spec.rb +3 -3
  349. data/spec/unit/core/connection_spec.rb +3 -4
  350. data/spec/unit/core/logging_spec.rb +2 -5
  351. data/spec/unit/core/nil_logger_spec.rb +2 -2
  352. data/spec/unit/core/project_spec.rb +4 -4
  353. data/spec/unit/extensions/hash_spec.rb +3 -4
  354. data/spec/unit/godzilla/goodzilla_spec.rb +22 -26
  355. data/spec/unit/helpers/csv_helper_spec.rb +3 -3
  356. data/spec/unit/helpers/data_helper_spec.rb +6 -18
  357. data/spec/unit/helpers/global_helpers_spec.rb +112 -28
  358. data/spec/unit/helpers_spec.rb +139 -2
  359. data/spec/unit/models/blueprint/attribute_sort_by_spec.rb +20 -0
  360. data/spec/unit/models/blueprint/attributes_spec.rb +1 -2
  361. data/spec/unit/models/blueprint/dataset_spec.rb +2 -3
  362. data/spec/unit/models/blueprint/labels_spec.rb +1 -2
  363. data/spec/unit/models/blueprint/project_blueprint_spec.rb +34 -35
  364. data/spec/unit/models/blueprint/reference_spec.rb +1 -2
  365. data/spec/unit/models/blueprint/schema_builder_spec.rb +5 -7
  366. data/spec/unit/models/blueprint/to_wire_spec.rb +76 -55
  367. data/spec/unit/models/domain_spec.rb +4 -5
  368. data/spec/unit/models/execution_spec.rb +16 -15
  369. data/spec/unit/models/from_wire_spec.rb +24 -19
  370. data/spec/unit/models/invitation_spec.rb +1 -1
  371. data/spec/unit/models/membership_spec.rb +36 -41
  372. data/spec/unit/models/metadata_spec.rb +20 -18
  373. data/spec/unit/models/metric_spec.rb +67 -55
  374. data/spec/unit/models/model_spec.rb +32 -37
  375. data/spec/unit/models/params_spec.rb +1 -1
  376. data/spec/unit/models/profile_spec.rb +40 -45
  377. data/spec/unit/models/project_creator_spec.rb +27 -29
  378. data/spec/unit/models/project_role_spec.rb +1 -1
  379. data/spec/unit/models/project_spec.rb +65 -2
  380. data/spec/unit/models/report_result_data_spec.rb +7 -12
  381. data/spec/unit/models/schedule_spec.rb +71 -35
  382. data/spec/unit/models/to_manifest_spec.rb +69 -4
  383. data/spec/unit/models/unit_project_spec.rb +12 -12
  384. data/spec/unit/models/user_filters_spec.rb +40 -40
  385. data/spec/unit/models/variable_spec.rb +108 -93
  386. data/spec/unit/rest/polling_spec.rb +7 -7
  387. data/spec/unit/rest/resource_spec.rb +2 -2
  388. metadata +145 -228
  389. data/spec/environment/release.rb +0 -21
  390. data/spec/environment/staging_3.rb +0 -36
@@ -1,13 +1,12 @@
1
1
  # encoding: UTF-8
2
2
  #
3
- # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
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/models/project_creator'
8
8
 
9
9
  describe GoodData::Model::ProjectCreator do
10
-
11
10
  before(:each) do
12
11
  # Priority is
13
12
  #
@@ -19,38 +18,37 @@ describe GoodData::Model::ProjectCreator do
19
18
  #
20
19
  # The data is ordered in descending priority
21
20
  @chunk_a = {
22
- 'updateScript' => {
23
- 'cascadeDrops' => false,
24
- 'preserveData' => true,
25
- 'maqlDdlChunks' => 'a'
26
- }
27
- }
21
+ 'updateScript' => {
22
+ 'cascadeDrops' => false,
23
+ 'preserveData' => true,
24
+ 'maqlDdlChunks' => 'a'
25
+ }
26
+ }
28
27
 
29
28
  @chunk_b = {
30
- 'updateScript' => {
31
- 'cascadeDrops' => false,
32
- 'preserveData' => false,
33
- 'maqlDdlChunks' => 'b'
34
- }
35
- }
29
+ 'updateScript' => {
30
+ 'cascadeDrops' => false,
31
+ 'preserveData' => false,
32
+ 'maqlDdlChunks' => 'b'
33
+ }
34
+ }
36
35
  @chunk_c = {
37
- 'updateScript' => {
38
- 'cascadeDrops' => true,
39
- 'preserveData' => true,
40
- 'maqlDdlChunks' => 'c'
41
- }
42
- }
36
+ 'updateScript' => {
37
+ 'cascadeDrops' => true,
38
+ 'preserveData' => true,
39
+ 'maqlDdlChunks' => 'c'
40
+ }
41
+ }
43
42
 
44
43
  @chunk_d = {
45
- 'updateScript' => {
46
- 'cascadeDrops' => true,
47
- 'preserveData' => false,
48
- 'maqlDdlChunks' => 'd'
49
- }
50
- }
44
+ 'updateScript' => {
45
+ 'cascadeDrops' => true,
46
+ 'preserveData' => false,
47
+ 'maqlDdlChunks' => 'd'
48
+ }
49
+ }
51
50
 
52
51
  @data = [@chunk_a, @chunk_b, @chunk_c, @chunk_d]
53
-
54
52
  end
55
53
 
56
54
  it 'should pick correct update chunk based on priority' do
@@ -59,7 +57,7 @@ describe GoodData::Model::ProjectCreator do
59
57
  end
60
58
 
61
59
  it 'should pick correct update chunk based on your preference if it is possible to satisfy it' do
62
- chunk = GoodData::Model::ProjectCreator.pick_correct_chunks(@data, update_preference: { cascade_drops: true, preserve_data: false})
60
+ chunk = GoodData::Model::ProjectCreator.pick_correct_chunks(@data, update_preference: { cascade_drops: true, preserve_data: false })
63
61
  expect(chunk).to eq [@chunk_d]
64
62
  end
65
63
 
@@ -69,7 +67,7 @@ describe GoodData::Model::ProjectCreator do
69
67
  end
70
68
 
71
69
  it 'should not pick a chunk if it is not possible to satisfy it based on your preference' do
72
- chunk = GoodData::Model::ProjectCreator.pick_correct_chunks(@data, update_preference: { cascade_drops: true, preserve_data: false, unmeetable_condition: true})
70
+ chunk = GoodData::Model::ProjectCreator.pick_correct_chunks(@data, update_preference: { cascade_drops: true, preserve_data: false, unmeetable_condition: true })
73
71
  expect(chunk).to eq []
74
72
  end
75
73
  end
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
  #
3
- # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
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
 
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
  #
3
- # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
3
+ # Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
4
4
  # This source code is licensed under the BSD-style license found in the
5
5
  # LICENSE file in the root directory of this source tree.
6
6
 
@@ -8,7 +8,7 @@ require 'gooddata'
8
8
 
9
9
  describe GoodData::Project, :constraint => 'slow' do
10
10
  before(:all) do
11
- @client = ConnectionHelper::create_default_connection
11
+ @client = ConnectionHelper.create_default_connection
12
12
  @project = ProjectHelper.get_default_project(:client => @client)
13
13
  @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
14
14
  end
@@ -159,4 +159,67 @@ describe GoodData::Project, :constraint => 'slow' do
159
159
  end
160
160
  end
161
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
162
225
  end
@@ -1,13 +1,12 @@
1
1
  # encoding: UTF-8
2
2
  #
3
- # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
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/models/report_data_result'
8
8
 
9
9
  describe GoodData::ReportDataResult do
10
-
11
10
  before(:each) do
12
11
  data = JSON.parse(File.read('./spec/data/reports/report_1.json'))
13
12
  @result = GoodData::ReportDataResult.from_xtab(data)
@@ -29,8 +28,7 @@ describe GoodData::ReportDataResult do
29
28
  end
30
29
 
31
30
  it 'should compute columns' do
32
- expect(@result.top_headers).to eq [["kolin", "praha", "varsava"],
33
- ["sum of Age", "sum of Age", "sum of Age"]]
31
+ expect(@result.top_headers).to eq [%w(kolin praha varsava), ["sum of Age", "sum of Age", "sum of Age"]]
34
32
  end
35
33
 
36
34
  describe '#slice' do
@@ -50,15 +48,13 @@ describe GoodData::ReportDataResult do
50
48
 
51
49
  it 'should return data result with correct headers' do
52
50
  expect(@result.left_headers).to eq [["jirka"], ["petr"], ["tomas"]]
53
- expect(@result.top_headers).to eq [["kolin", "praha", "varsava"],
54
- ["sum of Age", "sum of Age", "sum of Age"]]
51
+ expect(@result.top_headers).to eq [%w(kolin praha varsava), ["sum of Age", "sum of Age", "sum of Age"]]
55
52
  end
56
-
57
53
  end
58
54
 
59
55
  describe '#without_left_headers' do
60
56
  it 'should return data result without left headers' do
61
- expect(@result.without_left_headers.to_a).to eq [["kolin", "praha", "varsava"],
57
+ expect(@result.without_left_headers.to_a).to eq [%w(kolin praha varsava),
62
58
  ["sum of Age", "sum of Age", "sum of Age"],
63
59
  [25, nil, nil],
64
60
  [nil, nil, 15],
@@ -110,7 +106,7 @@ describe GoodData::ReportDataResult do
110
106
  expect(result.size).to eq [2, 4]
111
107
  expect(result.data_size).to eq [1, 3]
112
108
  expect(result.left_headers).to eq [["Values"]]
113
- expect(result.top_headers).to eq [["jirka", "petr", "tomas"]]
109
+ expect(result.top_headers).to eq [%w(jirka petr tomas)]
114
110
  end
115
111
 
116
112
  it 'should fail when comparing two different reports' do
@@ -154,7 +150,7 @@ describe GoodData::ReportDataResult do
154
150
 
155
151
  describe '#map' do
156
152
  it 'should iterate over rows' do
157
- expect(@result.each.map {|row| [1]}).to eq [[1], [1], [1], [1], [1]]
153
+ expect(@result.each.map { [1] }).to eq [[1], [1], [1], [1], [1]]
158
154
  end
159
155
  end
160
156
 
@@ -175,7 +171,7 @@ describe GoodData::ReportDataResult do
175
171
  c = GoodData::ReportDataResult.from_xtab(data)
176
172
  data = JSON.parse(File.read('./spec/data/reports/top_attr_report.json'))
177
173
  b = GoodData::ReportDataResult.from_xtab(data)
178
- expect {a - b}.to raise_exception
174
+ expect { a - b }.to raise_exception
179
175
  expect(a - c).to be_empty
180
176
  end
181
177
  end
@@ -196,4 +192,3 @@ describe GoodData::ReportDataResult do
196
192
  end
197
193
  end
198
194
  end
199
-
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
  #
3
- # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
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
 
@@ -20,7 +20,6 @@ describe GoodData::Schedule do
20
20
  end
21
21
 
22
22
  before(:each) do
23
-
24
23
  @project_executable = 'graph/graph.grf'
25
24
  @test_cron = '0 15 27 7 *'
26
25
  @test_data = {
@@ -55,26 +54,23 @@ describe GoodData::Schedule do
55
54
  end
56
55
 
57
56
  it 'Throws exception when no process ID specified' do
58
- schedule = nil
59
- expect {
60
- schedule = GoodData::Schedule.create(nil, @test_cron, @project_executable, @test_data)
61
- }.to raise_error 'Process ID has to be provided'
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'
62
60
  end
63
61
 
64
62
  it 'Throws exception when no executable specified' do
65
- schedule = nil
66
- expect {
67
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, nil, @test_data)
68
- }.to raise_error 'Executable has to be provided'
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'
69
66
  end
70
67
 
71
68
  it 'Throws exception when no cron is specified' do
72
69
  data = GoodData::Helpers.deep_dup(@test_data)
73
70
  data[:cron] = nil
74
- schedule = nil
75
- expect {
76
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, nil, @project_executable, data)
77
- }.to raise_error 'Trigger schedule has to be provided'
71
+ expect do
72
+ GoodData::Schedule.create(ProcessHelper::PROCESS_ID, nil, @project_executable, data)
73
+ end.to raise_error 'Trigger schedule has to be provided'
78
74
  end
79
75
  end
80
76
 
@@ -169,7 +165,7 @@ describe GoodData::Schedule do
169
165
  end
170
166
 
171
167
  it 'Should return hidden_params as hash. Filled by default if provided.' do
172
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge(hidden_params: {'a' => 'b'}))
168
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge(hidden_params: { 'a' => 'b' }))
173
169
  res = schedule.hidden_params
174
170
  expect(res).not_to be_nil
175
171
  expect(res).to be_a_kind_of(Hash)
@@ -199,7 +195,7 @@ describe GoodData::Schedule do
199
195
  schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
200
196
  old_params = schedule.hidden_params
201
197
 
202
- test_parameter = {'test_parameter' => 'just_testing' }
198
+ test_parameter = { 'test_parameter' => 'just_testing' }
203
199
  schedule.set_hidden_parameter(test_parameter.keys.first, test_parameter.values.first)
204
200
  expect(schedule.hidden_params).to eq(old_params.merge(test_parameter))
205
201
  expect(schedule.dirty).to eq(true)
@@ -213,7 +209,7 @@ describe GoodData::Schedule do
213
209
  schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
214
210
  old_params = schedule.params
215
211
 
216
- test_parameter = {'test_parameter' => 'just_testing' }
212
+ test_parameter = { 'test_parameter' => 'just_testing' }
217
213
  schedule.set_parameter(test_parameter.keys.first, test_parameter.values.first)
218
214
  expect(schedule.params).to eq(old_params.merge(test_parameter))
219
215
  expect(schedule.dirty).to eq(true)
@@ -222,7 +218,6 @@ describe GoodData::Schedule do
222
218
  end
223
219
  end
224
220
 
225
-
226
221
  describe '#params' do
227
222
  it 'Should return execution params as hash' do
228
223
  schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
@@ -235,7 +230,6 @@ describe GoodData::Schedule do
235
230
  describe '#params=' do
236
231
  it 'Updates the params and marks the object dirty' do
237
232
  schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
238
- old_params = schedule.params
239
233
 
240
234
  test_params = {
241
235
  'some_new_param' => '1-2-3-4'
@@ -250,8 +244,7 @@ describe GoodData::Schedule do
250
244
 
251
245
  describe '#update_params' do
252
246
  it 'Updates the params and marks the object dirty' do
253
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge({ params: { 'a' => 'b' } }))
254
- old_params = schedule.params
247
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge(params: { 'a' => 'b' }))
255
248
 
256
249
  test_params = {
257
250
  'some_new_param' => '1-2-3-4',
@@ -268,23 +261,15 @@ describe GoodData::Schedule do
268
261
 
269
262
  describe '#update_hidden_params' do
270
263
  it 'Updates the hidden params and marks the object dirty' do
271
- schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge({ params: { 'a' => 'b' } }))
272
- old_params = schedule.hidden_params
264
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge(params: { 'a' => 'b' }))
273
265
 
274
- schedule.update_hidden_params({
275
- 'some_new_param' => '1-2-3-4',
276
- 'a' => 'c',
277
- 'x' => ''
278
- })
266
+ schedule.update_hidden_params('some_new_param' => '1-2-3-4', 'a' => 'c', 'x' => '')
279
267
  expect(schedule.hidden_params.keys.to_set).to eq(%w(x a some_new_param).to_set)
280
268
  expect(schedule.hidden_params['some_new_param']).to eq '1-2-3-4'
281
269
  expect(schedule.hidden_params['a']).to eq 'c'
282
270
  expect(schedule.dirty).to eq(true)
283
271
 
284
- schedule.update_hidden_params({
285
- 'some_new_param' => '1-2-3-4',
286
- 'a' => 'd'
287
- })
272
+ schedule.update_hidden_params('some_new_param' => '1-2-3-4', 'a' => 'd')
288
273
  expect(schedule.hidden_params.keys.to_set).to eq(%w(x a some_new_param).to_set)
289
274
  expect(schedule.hidden_params['some_new_param']).to eq '1-2-3-4'
290
275
  expect(schedule.hidden_params['a']).to eq 'd'
@@ -316,14 +301,13 @@ describe GoodData::Schedule do
316
301
  end
317
302
  end
318
303
 
319
-
320
304
  describe '#state' do
321
305
  it 'Should return schedule state as string' do
322
306
  schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
323
307
  res = schedule.state
324
308
  expect(res).not_to be_nil
325
309
  expect(res).to eq 'ENABLED'
326
- expect(schedule.to_hash[:state]).to eq 'ENABLED'
310
+ expect(schedule.to_hash[:state]).to eq 'ENABLED'
327
311
  expect(schedule.to_update_payload['schedule']['state']).to eq 'ENABLED'
328
312
  end
329
313
 
@@ -356,7 +340,7 @@ describe GoodData::Schedule do
356
340
  expect(schedule.dirty).to eq(true)
357
341
  end
358
342
  end
359
-
343
+
360
344
  describe '#reschedule' do
361
345
  it 'Should return reschedule nil if not provided' do
362
346
  schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
@@ -415,4 +399,56 @@ describe GoodData::Schedule do
415
399
  expect(schedule.name).to eq 'MY NAME'
416
400
  end
417
401
  end
402
+
403
+ describe '#after' do
404
+ context 'when after is not set' do
405
+ it 'returns nil' do
406
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
407
+ expect(schedule.after).to be_nil
408
+ end
409
+ end
410
+
411
+ context 'when after is set' do
412
+ before do
413
+ @after_process = @project.deploy_process(
414
+ './spec/data/hello_world_process/hello_world.rb',
415
+ type: 'RUBY',
416
+ name: 'After Process'
417
+ )
418
+ @after_schedule = @after_process.create_schedule(
419
+ @test_cron,
420
+ @after_process.executables.first
421
+ )
422
+ @process = @project.deploy_process(
423
+ './spec/data/hello_world_process/hello_world.rb',
424
+ type: 'RUBY',
425
+ name: 'Main Process'
426
+ )
427
+ @schedule = @process.create_schedule(
428
+ @after_schedule,
429
+ @process.executables.first
430
+ )
431
+ end
432
+
433
+ after do
434
+ [@schedule, @process, @after_schedule, @after_process].each do |e|
435
+ e && e.delete
436
+ end
437
+ end
438
+
439
+ it 'returns the after schedule' do
440
+ expect(@schedule.after).to eq @after_schedule
441
+ end
442
+
443
+ it 'returns an updated after schedule' do
444
+ new_schedule = @process.create_schedule(
445
+ '0 0 1 1 *',
446
+ @process.executables.first
447
+ )
448
+ @schedule.after = new_schedule
449
+ expect(@schedule.after).not_to eq @after_schedule
450
+ expect(@schedule.after).to eq new_schedule
451
+ end
452
+ end
453
+ end
418
454
  end