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,117 @@
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/metadata/metric'
8
+
9
+ describe GoodData::Metric do
10
+
11
+
12
+ RAW_DATA2 = {'metric' =>
13
+ {'content' =>
14
+ {'format' => '#,##0',
15
+ 'expression' => 'SELECT SUM([/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/700])'},
16
+ 'meta' =>
17
+ {'author' => '/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248',
18
+ 'uri' => '/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/70',
19
+ 'tags' => 'a b cg r t',
20
+ 'created' => '2014-04-30 22:47:57',
21
+ 'identifier' => 'afo7bx1VakCz',
22
+ 'deprecated' => '0',
23
+ 'summary' => '',
24
+ 'locked' => 0,
25
+ 'title' => 'sum of Lines changed',
26
+ 'category' => 'metric',
27
+ 'updated' => '2014-05-05 20:00:42',
28
+ 'contributor' => '/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248'}}}
29
+
30
+ RAW_DATA3 = {'metric' =>
31
+ {'content' =>
32
+ {'format' => '#,##0',
33
+ 'expression' => 'SELECT SUM([/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/710])'},
34
+ 'meta' =>
35
+ {'author' => '/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248',
36
+ 'uri' => '/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/71',
37
+ 'tags' => 'a b cg r t',
38
+ 'created' => '2014-04-30 22:47:57',
39
+ 'identifier' => 'afo7bx1VakCz',
40
+ 'deprecated' => '0',
41
+ 'summary' => '',
42
+ 'locked' => 1,
43
+ 'title' => 'sum of Lines changed',
44
+ 'category' => 'metric',
45
+ 'updated' => '2014-05-05 20:00:42',
46
+ 'contributor' => '/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248'}}}
47
+
48
+ USED_METRIC = GoodData::Metric.new(RAW_DATA2)
49
+ UNUSED_METRIC = GoodData::Metric.new(RAW_DATA3)
50
+
51
+ RAW_DATA = {'metric' =>
52
+ {'content' =>
53
+ {'format' => '#,##0',
54
+ 'expression' =>
55
+ "SELECT SUM([#{USED_METRIC.uri}])"},
56
+ 'meta' =>
57
+ {'author' => '/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248',
58
+ 'uri' => '/gdc/md/ksjy0nr3goz6k8yrpklz97l0mych7nez/obj/252',
59
+ 'tags' => 'a b cg r t',
60
+ 'created' => '2014-04-30 22:47:57',
61
+ 'identifier' => 'afo7bx1VakCz',
62
+ 'deprecated' => '0',
63
+ 'summary' => '',
64
+ 'locked' => 0,
65
+ 'title' => 'sum of Lines changed',
66
+ 'category' => 'metric',
67
+ 'updated' => '2014-05-05 20:00:42',
68
+ 'contributor' => '/gdc/account/profile/4e1e8cacc4989228e0ae531b30853248'}}}
69
+
70
+ before(:each) do
71
+ @instance = GoodData::Metric.new(RAW_DATA)
72
+ end
73
+
74
+ describe '#contain?' do
75
+ it 'should say it contains a depending metric if it does' do
76
+ expect(@instance.contain?(USED_METRIC)).to eq true
77
+ end
78
+
79
+ it 'should say it contains a depending object which is given as a string if it does' do
80
+ expect(@instance.contain?(USED_METRIC)).to eq true
81
+ end
82
+
83
+ it 'should be able to return an expression of the metric' do
84
+ expect(@instance.expression).to eq "SELECT SUM([#{USED_METRIC.uri}])"
85
+ end
86
+ end
87
+
88
+ describe "#locked?" do
89
+ it "should be able to say if an object is locked" do
90
+ expect(@instance.locked?).to eq false
91
+ end
92
+ end
93
+
94
+ describe "#unlocked?" do
95
+ it "should be able to say if an object is unlocked" do
96
+ expect(@instance.unlocked?).to eq true
97
+ end
98
+ end
99
+
100
+ describe "#lock" do
101
+ it "should be able to lock an object" do
102
+ expect(@instance.locked?).to eq false
103
+ @instance.lock
104
+ expect(@instance.locked?).to eq true
105
+ end
106
+ end
107
+
108
+ describe "#lock" do
109
+ it "should be able to unlock an object" do
110
+ @instance.lock
111
+ expect(@instance.locked?).to eq true
112
+ @instance.unlock
113
+ expect(@instance.locked?).to eq false
114
+ expect(@instance.unlocked?).to eq true
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,82 @@
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 'pry'
8
+ require 'gooddata/models/model'
9
+
10
+ describe GoodData::Model do
11
+
12
+ before(:each) do
13
+ @base_blueprint = GoodData::Model::ProjectBlueprint.from_json("./spec/data/blueprints/test_project_model_spec.json")
14
+ @additional_blueprint = GoodData::Model::ProjectBlueprint.from_json("./spec/data/blueprints/model_module.json")
15
+
16
+ @blueprint_with_duplicate = GoodData::Model::ProjectBlueprint.new(
17
+ {
18
+ title: "x",
19
+ datasets: [{
20
+ id: "dataset.commits",
21
+ type: :dataset,
22
+ columns: [
23
+ {
24
+ type: "fact",
25
+ id: "fact.lines_changed",
26
+ gd_data_type: 'INT',
27
+ description: "Fact description"
28
+ }
29
+ ]
30
+ }]
31
+ })
32
+
33
+ @conflicting_blueprint = GoodData::Model::ProjectBlueprint.new(
34
+ {
35
+ title: 'x',
36
+ datasets: [{
37
+ type: :dataset,
38
+ id: 'dataset.commits',
39
+ columns: [
40
+ {
41
+ type: 'fact',
42
+ id: 'fact.commits.lines_changed'
43
+ }
44
+ ]
45
+ }]
46
+ })
47
+ end
48
+
49
+ it "should be possible to merge Schema blueprints" do
50
+
51
+ first_dataset = @base_blueprint.find_dataset("dataset.devs").to_hash
52
+ additional_blueprint = @additional_blueprint.find_dataset("dataset.devs").to_hash
53
+ stuff = GoodData::Model.merge_dataset_columns(first_dataset, additional_blueprint)
54
+ expect(GoodData::Model::ProjectBlueprint.new(stuff)).to be_valid
55
+
56
+ expect(stuff[:columns].include?({:type => :attribute, :id => "attr.region"})).to be_truthy
57
+ expect(stuff[:columns].include?({:type => :anchor, :id => "attr.devs.dev_id", title: 'Dev', :folder=>"Anchor folder" })).to be_truthy
58
+ end
59
+
60
+ it "should pass when merging 2 columns with the same name if both columns are identical" do
61
+ first_dataset = @base_blueprint.find_dataset("dataset.commits").to_hash
62
+ additional_blueprint = @blueprint_with_duplicate.find_dataset("dataset.commits").to_hash
63
+ stuff = GoodData::Model.merge_dataset_columns(first_dataset, additional_blueprint)
64
+
65
+ expect(GoodData::Model::ProjectBlueprint.new(stuff)).to be_valid
66
+
67
+ expect(stuff[:columns].count).to eq 6
68
+ expect(stuff[:columns].include?({ type: :fact, id: "fact.lines_changed", gd_data_type: 'INT', description: "Fact description"})).to be_truthy
69
+ expect(stuff[:columns].group_by { |col| col[:id] }["fact.lines_changed"].count).to eq 1
70
+ end
71
+
72
+ it "should fail when merging" do
73
+ first_dataset = @base_blueprint.find_dataset("dataset.commits").to_hash
74
+ additional_blueprint = @conflicting_blueprint.find_dataset("dataset.commits").to_hash
75
+ expect { GoodData::Model.merge_dataset_columns(first_dataset, additional_blueprint) }.to raise_error
76
+ end
77
+
78
+ it "should be possible to merge directly whole bleuprints. Blueprint is changed in place when merge! is used" do
79
+ @base_blueprint.merge!(@additional_blueprint)
80
+ @base_blueprint.find_dataset("dataset.repos").attributes.include?({ type: "attribute", id: "some_attr_id", :title=>"Repository Name" })
81
+ end
82
+ end
@@ -0,0 +1,118 @@
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/profile'
8
+ require 'gooddata/models/domain'
9
+ require 'gooddata/models/project'
10
+
11
+ describe 'GoodData::Schedule::Params' do
12
+ before(:all) do
13
+ @deploy_dir = File.join(File.dirname(__FILE__), '..', '..', 'data/cc')
14
+ @graph_path = 'graph.grf'
15
+
16
+ @client = ConnectionHelper.create_default_connection
17
+ @project = ProjectHelper.get_default_project
18
+
19
+ @process = @project.deploy_process('./spec/data/cc/graph/graph.grf',
20
+ type: 'GRAPH',
21
+ name: 'Test ETL Process')
22
+ end
23
+
24
+ after(:all) do
25
+ @process.delete
26
+ @client.disconnect
27
+ end
28
+
29
+ describe 'params' do
30
+ it 'Works with params' do
31
+ params = {
32
+ :test => '1234'
33
+ }
34
+
35
+ begin
36
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, params: params)
37
+ expect(schedule).to be_truthy
38
+ ensure
39
+ schedule && schedule.delete
40
+ end
41
+ end
42
+
43
+ it 'Works with nested params' do
44
+ params = {
45
+ :test => '1234',
46
+ :nested => {
47
+ :name => 'joe'
48
+ }
49
+ }
50
+
51
+ begin
52
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, params: params)
53
+ expect(schedule).to be_truthy
54
+ ensure
55
+ schedule && schedule.delete
56
+ end
57
+ end
58
+
59
+ it 'Works with array in params' do
60
+ params = {
61
+ :test => '1234',
62
+ :array => [1, 2, 3, 4, 5]
63
+ }
64
+
65
+ begin
66
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, params: params)
67
+ expect(schedule).to be_truthy
68
+ ensure
69
+ schedule && schedule.delete
70
+ end
71
+ end
72
+ end
73
+
74
+ describe 'hiddenParams' do
75
+ it 'Works with hiddenParams' do
76
+ params = {
77
+ :test => '1234'
78
+ }
79
+
80
+ begin
81
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, hiddenParams: params)
82
+ expect(schedule).to be_truthy
83
+ ensure
84
+ schedule && schedule.delete
85
+ end
86
+ end
87
+
88
+ it 'Works with nested hiddenParams' do
89
+ params = {
90
+ :test => '1234',
91
+ :nested => {
92
+ :name => 'joe'
93
+ }
94
+ }
95
+
96
+ begin
97
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, hiddenParams: params)
98
+ expect(schedule).to be_truthy
99
+ ensure
100
+ schedule && schedule.delete
101
+ end
102
+ end
103
+
104
+ it 'Works with array in hiddenParams' do
105
+ params = {
106
+ :test => '1234',
107
+ :array => [1, 2, 3, 4, 5]
108
+ }
109
+
110
+ begin
111
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, hiddenParams: params)
112
+ expect(schedule).to be_truthy
113
+ ensure
114
+ schedule && schedule.delete
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,215 @@
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
+
8
+ require 'gooddata/models/profile'
9
+ require 'gooddata/models/domain'
10
+ require 'gooddata/models/project'
11
+
12
+ describe GoodData::Profile do
13
+ before(:each) do
14
+ @client = ConnectionHelper.create_default_connection
15
+ @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
16
+
17
+ @user1 = @domain.get_user(ConnectionHelper::DEFAULT_USERNAME)
18
+ @user2 = @domain.get_user(ConnectionHelper::DEFAULT_USERNAME)
19
+
20
+ @users = [
21
+ @client.create(GoodData::Profile,
22
+ {
23
+ 'accountSetting' => {
24
+ 'email' => 'petr.cvengros@gooddata.com',
25
+ 'firstName' => 'Petr',
26
+ 'lastName' => 'Cvengros'
27
+ }
28
+ }
29
+ ),
30
+
31
+ @client.create(GoodData::Profile,
32
+ {
33
+ 'accountSetting' => {
34
+ 'email' => 'tomas.korcak@gooddata.com',
35
+ 'firstName' => 'Tomas',
36
+ 'lastName' => 'Korcak'
37
+ }
38
+ }
39
+ ),
40
+
41
+ @client.create(GoodData::Profile,
42
+ {
43
+ 'accountSetting' => {
44
+ 'email' => 'patrick.mcconlogue@gooddata.com',
45
+ 'firstName' => 'Patrick',
46
+ 'lastName' => 'McConlogue'
47
+
48
+ }
49
+ }
50
+ ),
51
+
52
+ @client.create(GoodData::Profile,
53
+ {
54
+ 'accountSetting' => {
55
+ 'email' => 'tomas.svarovsky@gooddata.com',
56
+ 'firstName' => 'Tomas',
57
+ 'lastName' => 'Svarovsky'
58
+ }
59
+ }
60
+ ),
61
+ ]
62
+ end
63
+
64
+ after(:all) do
65
+ @client && @client.disconnect
66
+ end
67
+
68
+ describe '#[]' do
69
+ it 'Finds the profile by URL' do
70
+ project = ProjectHelper.get_default_project
71
+ users = project.users
72
+ user = GoodData::Profile[users.first.uri, :client => @client]
73
+ expect(user).to be_kind_of(GoodData::Profile)
74
+ end
75
+
76
+ it 'Finds the profile by ID' do
77
+ project = ProjectHelper.get_default_project
78
+ users = project.users
79
+ user = GoodData::Profile[users.first.uri.split('/').last, :client => @client]
80
+ expect(user).to be_kind_of(GoodData::Profile)
81
+ end
82
+ end
83
+
84
+ describe '#==' do
85
+ it 'Returns true for same objects' do
86
+ expect(@user1).to eq @user2
87
+ expect(@user1.to_hash).to eq @user2.to_hash
88
+ end
89
+
90
+ it 'Returns false for different objects' do
91
+ # Do some little modification
92
+ @user2.first_name = 'kokos'
93
+ expect(@user1).not_to eq @user2
94
+ expect(@user1.to_hash).not_to eq @user2.to_hash
95
+ end
96
+ end
97
+
98
+ describe '#!=' do
99
+ it 'Returns false for same objects' do
100
+ res = @user1 != @user2
101
+ res.should be_falsey
102
+ end
103
+
104
+ it 'Returns true for different objects' do
105
+ # Do some little modification
106
+ @user2.first_name = 'kokos'
107
+
108
+ res = @user1 != @user2
109
+ res.should be_truthy
110
+ end
111
+ end
112
+
113
+ describe '#apply' do
114
+ it 'When diff of two objects applied to first result should be same as second object' do
115
+ # Do some little modification
116
+ @user2.first_name = 'kokos'
117
+ expect(@user1).not_to eq @user2
118
+
119
+ diff = @user1.diff(@user2)
120
+ expect(diff).to be_instance_of(Hash)
121
+
122
+ updated_user = GoodData::Profile.create_object(@user1.to_hash.merge(diff))
123
+
124
+ expect(updated_user.first_name).to eq @user2.first_name
125
+ expect(@user2).not_to eq updated_user
126
+ end
127
+ end
128
+
129
+ describe '#diff' do
130
+ it 'Returns empty hash for same objects' do
131
+ res = @user1.diff(@user2)
132
+ expect(res).to be_instance_of(Hash)
133
+ res.length.should eql(0)
134
+ end
135
+
136
+ it 'Returns non empty hash for different objects' do
137
+ # Do some little modification
138
+ @user2.first_name = 'kokos'
139
+
140
+ res = @user1.diff(@user2)
141
+ expect(res).to be_instance_of(Hash)
142
+ res.length.should_not eql(0)
143
+ end
144
+ end
145
+
146
+ describe '#diff_list' do
147
+ it 'Returns empty diff for same arrays' do
148
+ l1 = [
149
+ @users[0]
150
+ ]
151
+
152
+ l2 = [
153
+ @users[0]
154
+ ]
155
+
156
+ diff = GoodData::Profile.diff_list(l1, l2)
157
+ diff[:added].length.should eql(0)
158
+ diff[:changed].length.should eql(0)
159
+ diff[:removed].length.should eql(0)
160
+ end
161
+
162
+ it 'Recognizes added element' do
163
+ l1 = []
164
+
165
+ l2 = [
166
+ @users[0]
167
+ ]
168
+
169
+ diff = GoodData::Profile.diff_list(l1, l2)
170
+ diff[:added].length.should eql(1)
171
+ diff[:changed].length.should eql(0)
172
+ diff[:removed].length.should eql(0)
173
+ end
174
+
175
+ it 'Recognizes changed element' do
176
+ l1 = [
177
+ @users[0]
178
+ ]
179
+
180
+ l2 = [
181
+ GoodData::Profile.new(GoodData::Helpers.deep_dup(@users[0].json))
182
+ ]
183
+ l2[0].first_name = 'Peter'
184
+
185
+ diff = GoodData::Profile.diff_list(l1, l2)
186
+ diff[:added].length.should eql(0)
187
+ diff[:changed].length.should eql(1)
188
+ diff[:removed].length.should eql(0)
189
+ end
190
+
191
+ it 'Recognizes removed element' do
192
+ l1 = [
193
+ @users[0]
194
+ ]
195
+
196
+ l2 = []
197
+
198
+ diff = GoodData::Profile.diff_list(l1, l2)
199
+ diff[:added].length.should eql(0)
200
+ diff[:changed].length.should eql(0)
201
+ diff[:removed].length.should eql(1)
202
+ end
203
+ end
204
+
205
+ describe '#projects' do
206
+ it 'Returns user projects as array of GoodData::Project' do
207
+ projects = @user1.projects
208
+ expect(projects).to be_an_instance_of(Array)
209
+
210
+ projects.each do |project|
211
+ expect(project).to be_an_instance_of(GoodData::Project)
212
+ end
213
+ end
214
+ end
215
+ end