gooddata-edge 0.6.27.edge

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 (364) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.gitignore +36 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +89 -0
  6. data/.yardopts +22 -0
  7. data/CHANGELOG.md +196 -0
  8. data/CLI.md +439 -0
  9. data/DEPENDENCIES.md +817 -0
  10. data/Gemfile +4 -0
  11. data/Guardfile +5 -0
  12. data/LICENSE +22 -0
  13. data/LICENSE.rb +5 -0
  14. data/README.md +75 -0
  15. data/Rakefile +179 -0
  16. data/TODO.md +32 -0
  17. data/authors.sh +4 -0
  18. data/bin/gooddata +7 -0
  19. data/dependency_decisions.yml +104 -0
  20. data/gooddata +9 -0
  21. data/gooddata.gemspec +63 -0
  22. data/lib/gooddata.rb +31 -0
  23. data/lib/gooddata/app/app.rb +16 -0
  24. data/lib/gooddata/bricks/base_downloader.rb +86 -0
  25. data/lib/gooddata/bricks/brick.rb +38 -0
  26. data/lib/gooddata/bricks/bricks.rb +15 -0
  27. data/lib/gooddata/bricks/middleware/aws_middleware.rb +29 -0
  28. data/lib/gooddata/bricks/middleware/base_middleware.rb +56 -0
  29. data/lib/gooddata/bricks/middleware/bench_middleware.rb +24 -0
  30. data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +37 -0
  31. data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +20 -0
  32. data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +48 -0
  33. data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +36 -0
  34. data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +39 -0
  35. data/lib/gooddata/bricks/middleware/logger_middleware.rb +29 -0
  36. data/lib/gooddata/bricks/middleware/middleware.rb +12 -0
  37. data/lib/gooddata/bricks/middleware/restforce_middleware.rb +61 -0
  38. data/lib/gooddata/bricks/middleware/stdout_middleware.rb +23 -0
  39. data/lib/gooddata/bricks/middleware/twitter_middleware.rb +29 -0
  40. data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +37 -0
  41. data/lib/gooddata/bricks/pipeline.rb +32 -0
  42. data/lib/gooddata/bricks/utils.rb +18 -0
  43. data/lib/gooddata/cli/cli.rb +27 -0
  44. data/lib/gooddata/cli/commands/auth_cmd.rb +29 -0
  45. data/lib/gooddata/cli/commands/domain_cmd.rb +28 -0
  46. data/lib/gooddata/cli/commands/project_cmd.rb +45 -0
  47. data/lib/gooddata/cli/hooks.rb +57 -0
  48. data/lib/gooddata/cli/shared.rb +61 -0
  49. data/lib/gooddata/cli/terminal.rb +20 -0
  50. data/lib/gooddata/client.rb +67 -0
  51. data/lib/gooddata/commands/api.rb +64 -0
  52. data/lib/gooddata/commands/auth.rb +107 -0
  53. data/lib/gooddata/commands/base.rb +12 -0
  54. data/lib/gooddata/commands/commands.rb +12 -0
  55. data/lib/gooddata/commands/datasets.rb +148 -0
  56. data/lib/gooddata/commands/datawarehouse.rb +20 -0
  57. data/lib/gooddata/commands/domain.rb +40 -0
  58. data/lib/gooddata/commands/process.rb +67 -0
  59. data/lib/gooddata/commands/project.rb +175 -0
  60. data/lib/gooddata/commands/projects.rb +20 -0
  61. data/lib/gooddata/commands/role.rb +36 -0
  62. data/lib/gooddata/commands/runners.rb +47 -0
  63. data/lib/gooddata/commands/scaffold.rb +69 -0
  64. data/lib/gooddata/commands/user.rb +39 -0
  65. data/lib/gooddata/connection.rb +127 -0
  66. data/lib/gooddata/core/core.rb +12 -0
  67. data/lib/gooddata/core/logging.rb +105 -0
  68. data/lib/gooddata/core/nil_logger.rb +23 -0
  69. data/lib/gooddata/core/project.rb +74 -0
  70. data/lib/gooddata/core/rest.rb +149 -0
  71. data/lib/gooddata/core/user.rb +20 -0
  72. data/lib/gooddata/data/data.rb +12 -0
  73. data/lib/gooddata/data/guesser.rb +122 -0
  74. data/lib/gooddata/exceptions/attr_element_not_found.rb +16 -0
  75. data/lib/gooddata/exceptions/command_failed.rb +11 -0
  76. data/lib/gooddata/exceptions/exceptions.rb +12 -0
  77. data/lib/gooddata/exceptions/execution_limit_exceeded.rb +13 -0
  78. data/lib/gooddata/exceptions/filter_maqlization.rb +16 -0
  79. data/lib/gooddata/exceptions/malformed_user.rb +15 -0
  80. data/lib/gooddata/exceptions/no_project_error.rb +15 -0
  81. data/lib/gooddata/exceptions/object_migration.rb +32 -0
  82. data/lib/gooddata/exceptions/project_not_found.rb +13 -0
  83. data/lib/gooddata/exceptions/segment_not_empty.rb +18 -0
  84. data/lib/gooddata/exceptions/uncomputable_report.rb +13 -0
  85. data/lib/gooddata/exceptions/user_in_different_domain.rb +15 -0
  86. data/lib/gooddata/exceptions/validation_error.rb +16 -0
  87. data/lib/gooddata/extensions/big_decimal.rb +17 -0
  88. data/lib/gooddata/extensions/enumerable.rb +39 -0
  89. data/lib/gooddata/extensions/extensions.rb +10 -0
  90. data/lib/gooddata/extensions/false.rb +15 -0
  91. data/lib/gooddata/extensions/hash.rb +38 -0
  92. data/lib/gooddata/extensions/nil.rb +15 -0
  93. data/lib/gooddata/extensions/numeric.rb +15 -0
  94. data/lib/gooddata/extensions/object.rb +27 -0
  95. data/lib/gooddata/extensions/symbol.rb +15 -0
  96. data/lib/gooddata/extensions/true.rb +15 -0
  97. data/lib/gooddata/extract.rb +21 -0
  98. data/lib/gooddata/goodzilla/goodzilla.rb +159 -0
  99. data/lib/gooddata/helpers/auth_helpers.rb +75 -0
  100. data/lib/gooddata/helpers/csv_helper.rb +61 -0
  101. data/lib/gooddata/helpers/data_helper.rb +116 -0
  102. data/lib/gooddata/helpers/global_helpers.rb +331 -0
  103. data/lib/gooddata/helpers/global_helpers_params.rb +172 -0
  104. data/lib/gooddata/helpers/helpers.rb +10 -0
  105. data/lib/gooddata/mixins/author.rb +26 -0
  106. data/lib/gooddata/mixins/content_getter.rb +15 -0
  107. data/lib/gooddata/mixins/content_property_reader.rb +17 -0
  108. data/lib/gooddata/mixins/content_property_writer.rb +17 -0
  109. data/lib/gooddata/mixins/contributor.rb +20 -0
  110. data/lib/gooddata/mixins/data_getter.rb +15 -0
  111. data/lib/gooddata/mixins/data_property_reader.rb +19 -0
  112. data/lib/gooddata/mixins/data_property_writer.rb +19 -0
  113. data/lib/gooddata/mixins/inspector.rb +53 -0
  114. data/lib/gooddata/mixins/is_attribute.rb +17 -0
  115. data/lib/gooddata/mixins/is_dimension.rb +17 -0
  116. data/lib/gooddata/mixins/is_fact.rb +17 -0
  117. data/lib/gooddata/mixins/is_label.rb +19 -0
  118. data/lib/gooddata/mixins/links.rb +15 -0
  119. data/lib/gooddata/mixins/md_finders.rb +77 -0
  120. data/lib/gooddata/mixins/md_grantees.rb +42 -0
  121. data/lib/gooddata/mixins/md_id_to_uri.rb +34 -0
  122. data/lib/gooddata/mixins/md_json.rb +15 -0
  123. data/lib/gooddata/mixins/md_lock.rb +87 -0
  124. data/lib/gooddata/mixins/md_object_id.rb +15 -0
  125. data/lib/gooddata/mixins/md_object_indexer.rb +64 -0
  126. data/lib/gooddata/mixins/md_object_query.rb +128 -0
  127. data/lib/gooddata/mixins/md_relations.rb +43 -0
  128. data/lib/gooddata/mixins/meta_getter.rb +17 -0
  129. data/lib/gooddata/mixins/meta_property_reader.rb +19 -0
  130. data/lib/gooddata/mixins/meta_property_writer.rb +19 -0
  131. data/lib/gooddata/mixins/mixins.rb +19 -0
  132. data/lib/gooddata/mixins/not_attribute.rb +17 -0
  133. data/lib/gooddata/mixins/not_exportable.rb +15 -0
  134. data/lib/gooddata/mixins/not_fact.rb +17 -0
  135. data/lib/gooddata/mixins/not_group.rb +17 -0
  136. data/lib/gooddata/mixins/not_label.rb +19 -0
  137. data/lib/gooddata/mixins/not_metric.rb +19 -0
  138. data/lib/gooddata/mixins/obj_id.rb +15 -0
  139. data/lib/gooddata/mixins/rest_getters.rb +17 -0
  140. data/lib/gooddata/mixins/rest_resource.rb +47 -0
  141. data/lib/gooddata/mixins/root_key_getter.rb +15 -0
  142. data/lib/gooddata/mixins/root_key_setter.rb +15 -0
  143. data/lib/gooddata/mixins/timestamps.rb +19 -0
  144. data/lib/gooddata/mixins/to_json.rb +11 -0
  145. data/lib/gooddata/mixins/uri_getter.rb +9 -0
  146. data/lib/gooddata/models/blueprint/anchor_field.rb +64 -0
  147. data/lib/gooddata/models/blueprint/attribute_field.rb +29 -0
  148. data/lib/gooddata/models/blueprint/blueprint.rb +11 -0
  149. data/lib/gooddata/models/blueprint/blueprint_field.rb +70 -0
  150. data/lib/gooddata/models/blueprint/dashboard_builder.rb +30 -0
  151. data/lib/gooddata/models/blueprint/dataset_blueprint.rb +449 -0
  152. data/lib/gooddata/models/blueprint/date_dimension.rb +14 -0
  153. data/lib/gooddata/models/blueprint/fact_field.rb +20 -0
  154. data/lib/gooddata/models/blueprint/label_field.rb +43 -0
  155. data/lib/gooddata/models/blueprint/project_blueprint.rb +746 -0
  156. data/lib/gooddata/models/blueprint/project_builder.rb +83 -0
  157. data/lib/gooddata/models/blueprint/reference_field.rb +43 -0
  158. data/lib/gooddata/models/blueprint/schema_blueprint.rb +160 -0
  159. data/lib/gooddata/models/blueprint/schema_builder.rb +89 -0
  160. data/lib/gooddata/models/blueprint/to_manifest.rb +181 -0
  161. data/lib/gooddata/models/blueprint/to_wire.rb +154 -0
  162. data/lib/gooddata/models/client.rb +182 -0
  163. data/lib/gooddata/models/client_synchronization_result.rb +31 -0
  164. data/lib/gooddata/models/client_synchronization_result_details.rb +41 -0
  165. data/lib/gooddata/models/datawarehouse.rb +92 -0
  166. data/lib/gooddata/models/domain.rb +479 -0
  167. data/lib/gooddata/models/execution.rb +115 -0
  168. data/lib/gooddata/models/execution_detail.rb +81 -0
  169. data/lib/gooddata/models/from_wire.rb +160 -0
  170. data/lib/gooddata/models/invitation.rb +75 -0
  171. data/lib/gooddata/models/links.rb +50 -0
  172. data/lib/gooddata/models/membership.rb +441 -0
  173. data/lib/gooddata/models/metadata.rb +272 -0
  174. data/lib/gooddata/models/metadata/attribute.rb +134 -0
  175. data/lib/gooddata/models/metadata/dashboard.rb +108 -0
  176. data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +76 -0
  177. data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +37 -0
  178. data/lib/gooddata/models/metadata/dashboard/filter_item.rb +64 -0
  179. data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +56 -0
  180. data/lib/gooddata/models/metadata/dashboard/headline_item.rb +56 -0
  181. data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +46 -0
  182. data/lib/gooddata/models/metadata/dashboard/report_item.rb +92 -0
  183. data/lib/gooddata/models/metadata/dashboard/text_item.rb +55 -0
  184. data/lib/gooddata/models/metadata/dashboard_tab.rb +141 -0
  185. data/lib/gooddata/models/metadata/dataset.rb +64 -0
  186. data/lib/gooddata/models/metadata/dimension.rb +54 -0
  187. data/lib/gooddata/models/metadata/fact.rb +44 -0
  188. data/lib/gooddata/models/metadata/label.rb +128 -0
  189. data/lib/gooddata/models/metadata/metadata.rb +12 -0
  190. data/lib/gooddata/models/metadata/metric.rb +198 -0
  191. data/lib/gooddata/models/metadata/report.rb +247 -0
  192. data/lib/gooddata/models/metadata/report_definition.rb +264 -0
  193. data/lib/gooddata/models/metadata/scheduled_mail.rb +274 -0
  194. data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +62 -0
  195. data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +64 -0
  196. data/lib/gooddata/models/metadata/variable.rb +91 -0
  197. data/lib/gooddata/models/model.rb +282 -0
  198. data/lib/gooddata/models/models.rb +12 -0
  199. data/lib/gooddata/models/module_constants.rb +31 -0
  200. data/lib/gooddata/models/process.rb +316 -0
  201. data/lib/gooddata/models/profile.rb +426 -0
  202. data/lib/gooddata/models/project.rb +1514 -0
  203. data/lib/gooddata/models/project_creator.rb +126 -0
  204. data/lib/gooddata/models/project_metadata.rb +67 -0
  205. data/lib/gooddata/models/project_role.rb +79 -0
  206. data/lib/gooddata/models/report_data_result.rb +266 -0
  207. data/lib/gooddata/models/schedule.rb +518 -0
  208. data/lib/gooddata/models/segment.rb +201 -0
  209. data/lib/gooddata/models/tab_builder.rb +27 -0
  210. data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +76 -0
  211. data/lib/gooddata/models/user_filters/user_filter.rb +100 -0
  212. data/lib/gooddata/models/user_filters/user_filter_builder.rb +512 -0
  213. data/lib/gooddata/models/user_filters/user_filters.rb +13 -0
  214. data/lib/gooddata/models/user_filters/variable_user_filter.rb +31 -0
  215. data/lib/gooddata/models/user_group.rb +241 -0
  216. data/lib/gooddata/rest/README.md +37 -0
  217. data/lib/gooddata/rest/client.rb +389 -0
  218. data/lib/gooddata/rest/connection.rb +765 -0
  219. data/lib/gooddata/rest/object.rb +69 -0
  220. data/lib/gooddata/rest/object_factory.rb +76 -0
  221. data/lib/gooddata/rest/resource.rb +27 -0
  222. data/lib/gooddata/rest/rest.rb +24 -0
  223. data/lib/gooddata/version.rb +23 -0
  224. data/lib/templates/bricks/brick.rb.erb +7 -0
  225. data/lib/templates/bricks/main.rb.erb +5 -0
  226. data/lib/templates/project/Goodfile.erb +4 -0
  227. data/lib/templates/project/data/commits.csv +4 -0
  228. data/lib/templates/project/data/devs.csv +4 -0
  229. data/lib/templates/project/data/repos.csv +3 -0
  230. data/lib/templates/project/model/model.rb.erb +20 -0
  231. data/spec/bricks/bricks_spec.rb +112 -0
  232. data/spec/bricks/default-config.json +8 -0
  233. data/spec/data/.gooddata +4 -0
  234. data/spec/data/blueprints/additional_dataset_module.json +32 -0
  235. data/spec/data/blueprints/big_blueprint_not_pruned.json +2079 -0
  236. data/spec/data/blueprints/invalid_blueprint.json +103 -0
  237. data/spec/data/blueprints/m_n_model.json +104 -0
  238. data/spec/data/blueprints/model_module.json +25 -0
  239. data/spec/data/blueprints/test_blueprint.json +38 -0
  240. data/spec/data/blueprints/test_project_model_spec.json +106 -0
  241. data/spec/data/cc/data/source/commits.csv +4 -0
  242. data/spec/data/cc/data/source/devs.csv +4 -0
  243. data/spec/data/cc/data/source/repos.csv +3 -0
  244. data/spec/data/cc/devel.prm +0 -0
  245. data/spec/data/cc/graph/graph.grf +11 -0
  246. data/spec/data/cc/workspace.prm +19 -0
  247. data/spec/data/column_based_permissions.csv +7 -0
  248. data/spec/data/column_based_permissions2.csv +6 -0
  249. data/spec/data/gd_gse_data_blueprint.json +1371 -0
  250. data/spec/data/gd_gse_data_manifest.json +1424 -0
  251. data/spec/data/gd_gse_data_model.json +1772 -0
  252. data/spec/data/gooddata_version_process/gooddata_version.rb +9 -0
  253. data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
  254. data/spec/data/hello_world_process/hello_world.rb +9 -0
  255. data/spec/data/hello_world_process/hello_world.zip +0 -0
  256. data/spec/data/line_based_permissions.csv +3 -0
  257. data/spec/data/manifests/test_blueprint.json +32 -0
  258. data/spec/data/manifests/test_project.json +107 -0
  259. data/spec/data/reports/left_attr_report.json +108 -0
  260. data/spec/data/reports/metric_only_one_line.json +83 -0
  261. data/spec/data/reports/report_1.json +197 -0
  262. data/spec/data/reports/top_attr_report.json +108 -0
  263. data/spec/data/ruby_params_process/ruby_params.rb +9 -0
  264. data/spec/data/ruby_process/deep_files/deep_stuff.txt +1 -0
  265. data/spec/data/ruby_process/process.rb +8 -0
  266. data/spec/data/ruby_process/stuff.txt +1 -0
  267. data/spec/data/superfluous_titles_view.json +81 -0
  268. data/spec/data/test-ci-data.csv +2 -0
  269. data/spec/data/users.csv +12 -0
  270. data/spec/data/wire_models/model_view.json +1775 -0
  271. data/spec/data/wire_models/nu_model.json +3046 -0
  272. data/spec/data/wire_models/test_blueprint.json +63 -0
  273. data/spec/data/wire_test_project.json +150 -0
  274. data/spec/environment/default.rb +41 -0
  275. data/spec/environment/develop.rb +31 -0
  276. data/spec/environment/environment.rb +18 -0
  277. data/spec/environment/hotfix.rb +21 -0
  278. data/spec/environment/production.rb +35 -0
  279. data/spec/environment/release.rb +21 -0
  280. data/spec/environment/staging.rb +30 -0
  281. data/spec/environment/staging_3.rb +36 -0
  282. data/spec/helpers/blueprint_helper.rb +26 -0
  283. data/spec/helpers/cli_helper.rb +36 -0
  284. data/spec/helpers/connection_helper.rb +41 -0
  285. data/spec/helpers/crypto_helper.rb +17 -0
  286. data/spec/helpers/csv_helper.rb +18 -0
  287. data/spec/helpers/process_helper.rb +33 -0
  288. data/spec/helpers/project_helper.rb +59 -0
  289. data/spec/helpers/schedule_helper.rb +31 -0
  290. data/spec/helpers/spec_helper.rb +15 -0
  291. data/spec/integration/blueprint_updates_spec.rb +101 -0
  292. data/spec/integration/blueprint_with_grain_spec.rb +72 -0
  293. data/spec/integration/clients_spec.rb +134 -0
  294. data/spec/integration/command_datawarehouse_spec.rb +39 -0
  295. data/spec/integration/command_projects_spec.rb +32 -0
  296. data/spec/integration/create_from_template_spec.rb +22 -0
  297. data/spec/integration/create_project_spec.rb +24 -0
  298. data/spec/integration/date_dim_switch_spec.rb +142 -0
  299. data/spec/integration/deprecated_load_spec.rb +58 -0
  300. data/spec/integration/full_process_schedule_spec.rb +298 -0
  301. data/spec/integration/full_project_spec.rb +569 -0
  302. data/spec/integration/over_to_user_filters_spec.rb +94 -0
  303. data/spec/integration/partial_md_export_import_spec.rb +42 -0
  304. data/spec/integration/project_spec.rb +264 -0
  305. data/spec/integration/rest_spec.rb +213 -0
  306. data/spec/integration/schedule_spec.rb +626 -0
  307. data/spec/integration/segments_spec.rb +141 -0
  308. data/spec/integration/user_filters_spec.rb +290 -0
  309. data/spec/integration/user_group_spec.rb +127 -0
  310. data/spec/integration/variables_spec.rb +188 -0
  311. data/spec/logging_in_logging_out_spec.rb +93 -0
  312. data/spec/spec_helper.rb +95 -0
  313. data/spec/unit/bricks/bricks_spec.rb +35 -0
  314. data/spec/unit/bricks/middleware/aws_middelware_spec.rb +51 -0
  315. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +15 -0
  316. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +15 -0
  317. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +15 -0
  318. data/spec/unit/bricks/middleware/logger_middleware_spec.rb +15 -0
  319. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +15 -0
  320. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +15 -0
  321. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +15 -0
  322. data/spec/unit/cli/cli_spec.rb +17 -0
  323. data/spec/unit/cli/commands/cmd_auth_spec.rb +17 -0
  324. data/spec/unit/commands/command_projects_spec.rb +22 -0
  325. data/spec/unit/core/connection_spec.rb +57 -0
  326. data/spec/unit/core/logging_spec.rb +133 -0
  327. data/spec/unit/core/nil_logger_spec.rb +13 -0
  328. data/spec/unit/core/project_spec.rb +54 -0
  329. data/spec/unit/extensions/hash_spec.rb +23 -0
  330. data/spec/unit/godzilla/goodzilla_spec.rb +78 -0
  331. data/spec/unit/helpers/csv_helper_spec.rb +22 -0
  332. data/spec/unit/helpers/data_helper_spec.rb +61 -0
  333. data/spec/unit/helpers/global_helpers_spec.rb +111 -0
  334. data/spec/unit/helpers_spec.rb +86 -0
  335. data/spec/unit/models/blueprint/attributes_spec.rb +29 -0
  336. data/spec/unit/models/blueprint/dataset_spec.rb +121 -0
  337. data/spec/unit/models/blueprint/labels_spec.rb +44 -0
  338. data/spec/unit/models/blueprint/project_blueprint_spec.rb +648 -0
  339. data/spec/unit/models/blueprint/reference_spec.rb +29 -0
  340. data/spec/unit/models/blueprint/schema_builder_spec.rb +38 -0
  341. data/spec/unit/models/blueprint/to_wire_spec.rb +174 -0
  342. data/spec/unit/models/domain_spec.rb +144 -0
  343. data/spec/unit/models/execution_spec.rb +108 -0
  344. data/spec/unit/models/from_wire_spec.rb +296 -0
  345. data/spec/unit/models/invitation_spec.rb +17 -0
  346. data/spec/unit/models/membership_spec.rb +132 -0
  347. data/spec/unit/models/metadata_spec.rb +104 -0
  348. data/spec/unit/models/metric_spec.rb +117 -0
  349. data/spec/unit/models/model_spec.rb +82 -0
  350. data/spec/unit/models/params_spec.rb +118 -0
  351. data/spec/unit/models/profile_spec.rb +215 -0
  352. data/spec/unit/models/project_creator_spec.rb +127 -0
  353. data/spec/unit/models/project_role_spec.rb +94 -0
  354. data/spec/unit/models/project_spec.rb +162 -0
  355. data/spec/unit/models/report_result_data_spec.rb +199 -0
  356. data/spec/unit/models/schedule_spec.rb +418 -0
  357. data/spec/unit/models/to_manifest_spec.rb +63 -0
  358. data/spec/unit/models/unit_project_spec.rb +125 -0
  359. data/spec/unit/models/user_filters_spec.rb +95 -0
  360. data/spec/unit/models/variable_spec.rb +265 -0
  361. data/spec/unit/rest/polling_spec.rb +89 -0
  362. data/spec/unit/rest/resource_spec.rb +10 -0
  363. data/yard-server.sh +3 -0
  364. metadata +1125 -0
@@ -0,0 +1,418 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 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
+
24
+ @project_executable = 'graph/graph.grf'
25
+ @test_cron = '0 15 27 7 *'
26
+ @test_data = {
27
+ :timezone => 'UTC',
28
+ :cron => '2 2 2 2 *',
29
+ :client => @client,
30
+ :project => @project,
31
+ :params => {
32
+ 'a' => 'b',
33
+ 'b' => 'c'
34
+ }
35
+ }
36
+
37
+ @test_data_with_optional_param = {
38
+ :timezone => 'UTC',
39
+ :cron => '2 2 2 2 *',
40
+ :reschedule => 15,
41
+ :client => @client,
42
+ :project => @project
43
+ }
44
+ end
45
+
46
+ describe '#create' do
47
+ it 'Creates new schedule if mandatory params passed' do
48
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
49
+ expect(schedule).to be_truthy
50
+ end
51
+
52
+ it 'Creates new schedule if mandatory params passed and optional params are present' do
53
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
54
+ expect(schedule).to be_truthy
55
+ end
56
+
57
+ 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'
62
+ end
63
+
64
+ 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'
69
+ end
70
+
71
+ it 'Throws exception when no cron is specified' do
72
+ data = GoodData::Helpers.deep_dup(@test_data)
73
+ 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'
78
+ end
79
+ end
80
+
81
+ describe '#cron' do
82
+ it 'Should return cron as string' do
83
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
84
+ res = schedule.cron
85
+ expect(res).not_to be_nil
86
+ expect(res).not_to be_empty
87
+ expect(res).to be_a_kind_of(String)
88
+ expect(schedule.time_based?).to be_truthy
89
+ end
90
+ end
91
+
92
+ describe '#cron=' do
93
+ it 'Assigns the cron and marks the object dirty' do
94
+ test_cron = '2 2 2 2 *'
95
+
96
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
97
+ schedule.cron = test_cron
98
+ expect(schedule.cron).to eq(test_cron)
99
+ expect(schedule.dirty).to eq(true)
100
+ expect(schedule.to_hash[:cron]).to eq test_cron
101
+ expect(schedule.to_update_payload['schedule']['cron']).to eq test_cron
102
+ end
103
+ end
104
+
105
+ describe '#executable' do
106
+ it 'Should return executable as string' do
107
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
108
+ res = schedule.executable
109
+ expect(res).not_to be_nil
110
+ expect(res).not_to be_empty
111
+ expect(res).to be_a_kind_of(String)
112
+ end
113
+ end
114
+
115
+ describe '#executable=' do
116
+ it 'Assigns the executable and marks the object dirty' do
117
+ test_executable = 'this/is/test.grf'
118
+
119
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
120
+ schedule.executable = test_executable
121
+ expect(schedule.executable).to eq(test_executable)
122
+ expect(schedule.dirty).to eq(true)
123
+ expect(schedule.to_hash[:executable]).to eq test_executable
124
+ expect(schedule.to_update_payload['schedule']['params']['EXECUTABLE']).to eq test_executable
125
+ end
126
+ end
127
+
128
+ describe '#execute' do
129
+ it 'Cannot be executed if not saved' do
130
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
131
+ expect(schedule.execute).to be_nil
132
+ end
133
+ end
134
+
135
+ describe '#execution_url' do
136
+ it 'Should return execution URL as string' do
137
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
138
+ expect(schedule.execution_url).to be_nil
139
+ end
140
+ end
141
+
142
+ describe '#type' do
143
+ it 'Should return execution type as string' do
144
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
145
+ expect(schedule.type).to eq 'MSETL'
146
+ expect(schedule.to_hash[:type]).to eq 'MSETL'
147
+ expect(schedule.to_update_payload['schedule']['type']).to eq 'MSETL'
148
+ end
149
+ end
150
+
151
+ describe '#type=' do
152
+ it 'Assigns the type the object dirty' do
153
+ test_type = 'TEST'
154
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
155
+ schedule.type = test_type
156
+ expect(schedule.type).to eq(test_type)
157
+ expect(schedule.dirty).to eq(true)
158
+ expect(schedule.to_hash[:type]).to eq test_type
159
+ expect(schedule.to_update_payload['schedule']['type']).to eq test_type
160
+ end
161
+ end
162
+
163
+ describe '#hidden_params' do
164
+ it 'Should return hidden_params as hash. Empty by default.' do
165
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
166
+ res = schedule.hidden_params
167
+ expect(res).not_to be_nil
168
+ expect(res).to be_a_kind_of(Hash)
169
+ end
170
+
171
+ 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'}))
173
+ res = schedule.hidden_params
174
+ expect(res).not_to be_nil
175
+ expect(res).to be_a_kind_of(Hash)
176
+ expect(res['a']).to eq 'b'
177
+ end
178
+ end
179
+
180
+ describe '#hidden_params=' do
181
+ it 'Assigns the hidden params and marks the object dirty' do
182
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
183
+ old_params = schedule.hidden_params
184
+
185
+ test_params = {
186
+ 'PROCESS_ID' => '1-2-3-4'
187
+ }
188
+
189
+ schedule.hidden_params = test_params
190
+ expect(schedule.hidden_params).to eq(old_params.merge(test_params))
191
+ expect(schedule.dirty).to eq(true)
192
+ expect(schedule.to_hash[:hidden_params]).to eq(test_params)
193
+ expect(schedule.to_update_payload['schedule']['hiddenParams']).to eq(test_params)
194
+ end
195
+ end
196
+
197
+ describe '#set_hidden_parameter' do
198
+ it 'Assigns the hidden parameter and marks the object dirty' do
199
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
200
+ old_params = schedule.hidden_params
201
+
202
+ test_parameter = {'test_parameter' => 'just_testing' }
203
+ schedule.set_hidden_parameter(test_parameter.keys.first, test_parameter.values.first)
204
+ expect(schedule.hidden_params).to eq(old_params.merge(test_parameter))
205
+ expect(schedule.dirty).to eq(true)
206
+ expect(schedule.to_hash[:hidden_params]).to eq(test_parameter)
207
+ expect(schedule.to_update_payload['schedule']['hiddenParams']).to eq(test_parameter)
208
+ end
209
+ end
210
+
211
+ describe '#set_parameter' do
212
+ it 'Assigns the parameter and marks the object dirty' do
213
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
214
+ old_params = schedule.params
215
+
216
+ test_parameter = {'test_parameter' => 'just_testing' }
217
+ schedule.set_parameter(test_parameter.keys.first, test_parameter.values.first)
218
+ expect(schedule.params).to eq(old_params.merge(test_parameter))
219
+ expect(schedule.dirty).to eq(true)
220
+ expect(schedule.to_hash[:params]).to eq(old_params.merge(test_parameter))
221
+ expect(schedule.to_update_payload['schedule']['params']).to eq(old_params.merge(test_parameter))
222
+ end
223
+ end
224
+
225
+
226
+ describe '#params' do
227
+ it 'Should return execution params as hash' do
228
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
229
+ res = schedule.params
230
+ expect(res).not_to be_nil
231
+ expect(res).to be_a_kind_of(Hash)
232
+ end
233
+ end
234
+
235
+ describe '#params=' do
236
+ it 'Updates the params and marks the object dirty' do
237
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
238
+ old_params = schedule.params
239
+
240
+ test_params = {
241
+ 'some_new_param' => '1-2-3-4'
242
+ }
243
+
244
+ schedule.params = test_params
245
+ expect(schedule.params.keys).to eq(%w(PROCESS_ID EXECUTABLE some_new_param))
246
+ expect(schedule.params['some_new_param']).to eq '1-2-3-4'
247
+ expect(schedule.dirty).to eq(true)
248
+ end
249
+ end
250
+
251
+ describe '#update_params' do
252
+ 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
255
+
256
+ test_params = {
257
+ 'some_new_param' => '1-2-3-4',
258
+ 'a' => 'c'
259
+ }
260
+
261
+ schedule.update_params(test_params)
262
+ expect(schedule.params.keys).to eq(%w(PROCESS_ID EXECUTABLE a some_new_param))
263
+ expect(schedule.params['some_new_param']).to eq '1-2-3-4'
264
+ expect(schedule.params['a']).to eq 'c'
265
+ expect(schedule.dirty).to eq(true)
266
+ end
267
+ end
268
+
269
+ describe '#update_hidden_params' do
270
+ 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
273
+
274
+ schedule.update_hidden_params({
275
+ 'some_new_param' => '1-2-3-4',
276
+ 'a' => 'c',
277
+ 'x' => ''
278
+ })
279
+ expect(schedule.hidden_params.keys.to_set).to eq(%w(x a some_new_param).to_set)
280
+ expect(schedule.hidden_params['some_new_param']).to eq '1-2-3-4'
281
+ expect(schedule.hidden_params['a']).to eq 'c'
282
+ expect(schedule.dirty).to eq(true)
283
+
284
+ schedule.update_hidden_params({
285
+ 'some_new_param' => '1-2-3-4',
286
+ 'a' => 'd'
287
+ })
288
+ expect(schedule.hidden_params.keys.to_set).to eq(%w(x a some_new_param).to_set)
289
+ expect(schedule.hidden_params['some_new_param']).to eq '1-2-3-4'
290
+ expect(schedule.hidden_params['a']).to eq 'd'
291
+ expect(schedule.hidden_params['x']).to eq ''
292
+ expect(schedule.dirty).to eq(true)
293
+ end
294
+ end
295
+
296
+ describe '#process_id' do
297
+ it 'Should return process id as string' do
298
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
299
+ res = schedule.process_id
300
+ res.should_not be_nil
301
+ res.should_not be_empty
302
+ res.should be_a_kind_of(String)
303
+ end
304
+ end
305
+
306
+ describe '#process_id=' do
307
+ it 'Assigns the process_id and marks the object dirty' do
308
+ test_process_id = '1-2-3-4'
309
+
310
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
311
+ schedule.process_id = test_process_id
312
+ expect(schedule.process_id).to eq(test_process_id)
313
+ expect(schedule.dirty).to eq(true)
314
+ expect(schedule.to_hash[:process_id]).to eq test_process_id
315
+ expect(schedule.to_update_payload['schedule']['params']['PROCESS_ID']).to eq test_process_id
316
+ end
317
+ end
318
+
319
+
320
+ describe '#state' do
321
+ it 'Should return schedule state as string' do
322
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
323
+ res = schedule.state
324
+ expect(res).not_to be_nil
325
+ expect(res).to eq 'ENABLED'
326
+ expect(schedule.to_hash[:state]).to eq 'ENABLED'
327
+ expect(schedule.to_update_payload['schedule']['state']).to eq 'ENABLED'
328
+ end
329
+
330
+ it 'Should return schedule state as string as provided' do
331
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data.merge(:state => 'DISABLED'))
332
+ res = schedule.state
333
+ expect(res).not_to be_nil
334
+ expect(res).to eq 'DISABLED'
335
+ expect(schedule.to_hash[:state]).to eq 'DISABLED'
336
+ expect(schedule.to_update_payload['schedule']['state']).to eq 'DISABLED'
337
+ end
338
+ end
339
+
340
+ describe '#timezone' do
341
+ it 'Should return timezone as string' do
342
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
343
+ res = schedule.timezone
344
+ expect(res).not_to be_nil
345
+ expect(res).to be_a_kind_of(String)
346
+ end
347
+ end
348
+
349
+ describe '#timezone=' do
350
+ it 'Assigns the timezone and marks the object dirty' do
351
+ test_timezone = 'PST'
352
+
353
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
354
+ schedule.timezone = test_timezone
355
+ expect(schedule.timezone).to eq(test_timezone)
356
+ expect(schedule.dirty).to eq(true)
357
+ end
358
+ end
359
+
360
+ describe '#reschedule' do
361
+ it 'Should return reschedule nil if not provided' do
362
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
363
+ expect(schedule.reschedule).to eq nil
364
+ end
365
+
366
+ it 'Should return reschedule as integer' do
367
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
368
+ expect(schedule.reschedule).to eq @test_data_with_optional_param[:reschedule]
369
+ expect(schedule.reschedule).to be_a_kind_of(Integer)
370
+ end
371
+ end
372
+
373
+ describe '#reschedule=' do
374
+ it 'Assigns the reschedule and marks the object dirty' do
375
+ test_reschedule = 45
376
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
377
+ expect(schedule.reschedule).to eq @test_data_with_optional_param[:reschedule]
378
+ schedule.reschedule = test_reschedule
379
+ expect(schedule.reschedule).to eq(test_reschedule)
380
+ expect(schedule.dirty).to eq(true)
381
+ expect(schedule.to_hash[:reschedule]).to eq test_reschedule
382
+ expect(schedule.to_update_payload['schedule']['reschedule']).to eq test_reschedule
383
+ end
384
+ end
385
+
386
+ describe '#name' do
387
+ it 'Name is nil if not specified and not saved.' do
388
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
389
+ expect(schedule.name).to eq nil
390
+ expect(schedule.saved?).to eq false
391
+ schedule.name = 'MY NAME'
392
+ expect(schedule.name).to eq 'MY NAME'
393
+ end
394
+
395
+ it 'should be able to return your name if specified during creation.' do
396
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param.merge(name: 'My schedule name'))
397
+ expect(schedule.name).to eq 'My schedule name'
398
+ end
399
+ end
400
+
401
+ describe '#trigger_id=' do
402
+ it 'should be able to set trigger_id of the schedule.' do
403
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
404
+ expect(schedule.dirty).to be_truthy
405
+ schedule.trigger_id = 'some_other_id'
406
+ expect(schedule.dirty).to be_truthy
407
+ expect(schedule.trigger_id).to eq 'some_other_id'
408
+ end
409
+ end
410
+
411
+ describe '#name=' do
412
+ it 'should be able to set name of the schedule.' do
413
+ schedule = GoodData::Schedule.create(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
414
+ schedule.name = 'MY NAME'
415
+ expect(schedule.name).to eq 'MY NAME'
416
+ end
417
+ end
418
+ end
@@ -0,0 +1,63 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 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
+ include GoodData::Model
10
+
11
+ describe GoodData::Model::ToManifest do
12
+
13
+ before(:each) do
14
+ @spec = JSON.parse(File.read("./spec/data/blueprints/test_project_model_spec.json"), :symbolize_names => true)
15
+ @result = JSON.parse(File.read("./spec/data/manifests/test_project.json"))
16
+ end
17
+
18
+ it "should parse the model view and return the blueprint" do
19
+ expect(ToManifest.to_manifest(@spec)).to eq @result
20
+ end
21
+
22
+ it 'blueprint can be set with date reference and default format is set' do
23
+ blueprint = GoodData::Model::ProjectBlueprint.build("my_bp") do |p|
24
+ p.add_date_dimension("committed_on")
25
+
26
+ p.add_dataset("repos") do |d|
27
+ d.add_anchor("repo_id")
28
+ d.add_attribute("name")
29
+ d.add_date('opportunity_comitted', dataset: 'committed_on')
30
+ end
31
+ end
32
+ expect(blueprint.to_manifest.first['dataSetSLIManifest']['parts'][0]['constraints']).to eq ({ "date" => GoodData::Model::DEFAULT_DATE_FORMAT })
33
+ end
34
+
35
+ it 'blueprint can be set with date reference and default format is set' do
36
+ blueprint = GoodData::Model::ProjectBlueprint.build("my_bp") do |p|
37
+ p.add_date_dimension("committed_on")
38
+
39
+ p.add_dataset("repos") do |d|
40
+ d.add_anchor("repo_id")
41
+ d.add_attribute("name")
42
+ d.add_date('opportunity_comitted', dataset: 'committed_on', format: 'yyyy/MM/dd')
43
+ end
44
+ end
45
+ expect(blueprint.to_manifest.first['dataSetSLIManifest']['parts'][0]['constraints']).to eq ({ "date" => "yyyy/MM/dd" })
46
+ end
47
+
48
+ it 'blueprint can handle date fact during creation of manifest' do
49
+ blueprint = GoodData::Model::ProjectBlueprint.build("my_bp") do |p|
50
+ p.add_date_dimension("committed_on")
51
+
52
+ p.add_dataset("repos") do |d|
53
+ d.add_anchor("repo_id")
54
+ d.add_label("repo_label", reference: "repo_id")
55
+ d.add_attribute("name")
56
+ d.add_label("name_label", reference: "name")
57
+ d.add_date('opportunity_comitted', dataset: 'committed_on', format: 'yyyy/MM/dd')
58
+ d.add_column(type: :date_fact, id: 'dt.date_fact')
59
+ end
60
+ end
61
+ expect(blueprint.to_manifest.first['dataSetSLIManifest']['parts'].count).to eq 4
62
+ end
63
+ end