gooddata 0.6.49 → 0.6.50

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