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,127 @@
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/project_creator'
8
+
9
+ describe GoodData::Model::ProjectCreator do
10
+
11
+ it 'should pick correct update chunk based on priority' do
12
+ # Priority is
13
+ #
14
+ # [cascadeDrops, preserveData],
15
+ # [false, true],
16
+ # [false, false],
17
+ # [true, true],
18
+ # [true, false]
19
+ data = [
20
+ { 'updateScript' => {
21
+ 'cascadeDrops' => false,
22
+ 'preserveData' => true,
23
+ 'maqlDdlChunks' => "a"
24
+ }},
25
+ { 'updateScript' => {
26
+ 'cascadeDrops' => false,
27
+ 'preserveData' => false,
28
+ 'maqlDdlChunks' => "b"
29
+ }}
30
+ ]
31
+ chunk = GoodData::Model::ProjectCreator.pick_correct_chunks(data)
32
+ chunk.should == {
33
+ 'updateScript' => {
34
+ 'cascadeDrops' => false,
35
+ 'preserveData' => true,
36
+ 'maqlDdlChunks' => "a"
37
+ }}
38
+
39
+
40
+ data = [
41
+ { 'updateScript' => {
42
+ 'cascadeDrops' => true,
43
+ 'preserveData' => true,
44
+ 'maqlDdlChunks' => "a"
45
+ }},
46
+ { 'updateScript' => {
47
+ 'cascadeDrops' => true,
48
+ 'preserveData' => false,
49
+ 'maqlDdlChunks' => "b"
50
+ }}
51
+ ]
52
+ chunk = GoodData::Model::ProjectCreator.pick_correct_chunks(data)
53
+ chunk.should == {
54
+ 'updateScript' => {
55
+ 'cascadeDrops' => true,
56
+ 'preserveData' => true,
57
+ 'maqlDdlChunks' => "a"
58
+ }}
59
+
60
+
61
+ data = [
62
+ { 'updateScript' => {
63
+ 'cascadeDrops' => true,
64
+ 'preserveData' => false,
65
+ 'maqlDdlChunks' => "a"
66
+ }},
67
+ { 'updateScript' => {
68
+ 'cascadeDrops' => true,
69
+ 'preserveData' => true,
70
+ 'maqlDdlChunks' => "b"
71
+ }}
72
+ ]
73
+ chunk = GoodData::Model::ProjectCreator.pick_correct_chunks(data)
74
+ chunk.should == {
75
+ 'updateScript' => {
76
+ 'cascadeDrops' => true,
77
+ 'preserveData' => true,
78
+ 'maqlDdlChunks' => "b"
79
+ }}
80
+ end
81
+
82
+ it 'should pick correct update chunk based on your preference if it is possible to satisfy it' do
83
+ data = [
84
+ { 'updateScript' => {
85
+ 'cascadeDrops' => true,
86
+ 'preserveData' => false,
87
+ 'maqlDdlChunks' => "a"
88
+ }},
89
+ { 'updateScript' => {
90
+ 'cascadeDrops' => true,
91
+ 'preserveData' => true,
92
+ 'maqlDdlChunks' => "b"
93
+ }}
94
+ ]
95
+
96
+ chunk = GoodData::Model::ProjectCreator.pick_correct_chunks(data, preference: { cascade_drops: true, preserve_data: false})
97
+ chunk.should == {
98
+ 'updateScript' => {
99
+ 'cascadeDrops' => true,
100
+ 'preserveData' => false,
101
+ 'maqlDdlChunks' => "a"
102
+ }}
103
+ end
104
+
105
+ it 'should pick correct update chunk based on your preference if it is not possible to satisfy it' do
106
+ data = [
107
+ { 'updateScript' => {
108
+ 'cascadeDrops' => true,
109
+ 'preserveData' => true,
110
+ 'maqlDdlChunks' => "a"
111
+ }},
112
+ { 'updateScript' => {
113
+ 'cascadeDrops' => false,
114
+ 'preserveData' => true,
115
+ 'maqlDdlChunks' => "b"
116
+ }}
117
+ ]
118
+
119
+ chunk = GoodData::Model::ProjectCreator.pick_correct_chunks(data, preference: { cascade_drops: true, preserve_data: false})
120
+ chunk.should == {
121
+ 'updateScript' => {
122
+ 'cascadeDrops' => false,
123
+ 'preserveData' => true,
124
+ 'maqlDdlChunks' => "b"
125
+ }}
126
+ end
127
+ end
@@ -0,0 +1,94 @@
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/project'
8
+ require 'gooddata/models/project_role'
9
+
10
+ describe GoodData::ProjectRole do
11
+ before(:all) do
12
+ @client = ConnectionHelper.create_default_connection
13
+ @project = ProjectHelper.get_default_project(:client => @client)
14
+ @roles = @project.roles
15
+ @role = @roles.first
16
+ end
17
+
18
+ after(:all) do
19
+ @client.disconnect
20
+ end
21
+
22
+ describe '#author' do
23
+ it 'Returns author as GoodData::Profile' do
24
+ res = @role.author
25
+ expect(res).to be_an_instance_of(GoodData::Profile)
26
+ end
27
+ end
28
+
29
+ describe '#contributor' do
30
+ it 'Returns contributor as GoodData::Profile' do
31
+ res = @role.contributor
32
+ expect(res).to be_an_instance_of(GoodData::Profile)
33
+ end
34
+ end
35
+
36
+ describe '#created' do
37
+ it 'Returns created date as Time' do
38
+ res = @role.created
39
+ expect(res).to be_an_instance_of(Time)
40
+ end
41
+ end
42
+
43
+ describe '#identifier' do
44
+ it 'Returns identifier as String' do
45
+ res = @role.identifier
46
+ expect(res).to be_an_instance_of(String)
47
+ end
48
+ end
49
+
50
+ describe '#permissions' do
51
+ it 'Returns summary as Hash' do
52
+ res = @role.permissions
53
+ expect(res).to be_an_instance_of(Hash)
54
+ end
55
+ end
56
+
57
+ describe '#summary' do
58
+ it 'Returns summary as String' do
59
+ res = @role.summary
60
+ expect(res).to be_an_instance_of(String)
61
+ end
62
+ end
63
+
64
+ describe '#title' do
65
+ it 'Returns title as String' do
66
+ res = @role.title
67
+ expect(res).to be_an_instance_of(String)
68
+ end
69
+ end
70
+
71
+ describe '#updated' do
72
+ it 'Returns updated date as Time' do
73
+ res = @role.updated
74
+ expect(res).to be_an_instance_of(Time)
75
+ end
76
+ end
77
+
78
+ describe '#uri' do
79
+ it 'Returns URI as String' do
80
+ res = @role.uri
81
+ expect(res).to be_an_instance_of(String)
82
+ end
83
+ end
84
+
85
+ describe '#users' do
86
+ it 'Returns users as Array<GoodData::Profile>' do
87
+ res = @role.users
88
+ expect(res).to be_an_instance_of(Array)
89
+ res.each do |user|
90
+ expect(user).to be_an_instance_of(GoodData::Profile)
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,162 @@
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
+ describe GoodData::Project, :constraint => 'slow' do
10
+ before(:all) do
11
+ @client = ConnectionHelper::create_default_connection
12
+ @project = ProjectHelper.get_default_project(:client => @client)
13
+ @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
14
+ end
15
+
16
+ after(:all) do
17
+ @client.disconnect
18
+ end
19
+
20
+ describe 'projects' do
21
+ it 'Can get all projects' do
22
+ projects = @client.projects
23
+ expect(projects).to_not be_nil
24
+ expect(projects).to be_a_kind_of(Array)
25
+ projects.pmap do |project|
26
+ expect(project).to be_an_instance_of(GoodData::Project)
27
+ end
28
+ end
29
+
30
+ it 'Returns project if ID passed' do
31
+ expect(@project).to_not be_nil
32
+ expect(@project).to be_a_kind_of(GoodData::Project)
33
+ expect(@project.pid).to eq @project.pid
34
+ end
35
+
36
+ it 'Returns project if URL passed' do
37
+ expect(@project).to_not be_nil
38
+ expect(@project).to be_a_kind_of(GoodData::Project)
39
+ expect(@project.pid).to eq @project.pid
40
+ end
41
+
42
+ it 'Throws an exception when invalid format of URL passed' do
43
+ invalid_url = '/gdc/invalid_url'
44
+ expect { GoodData::Project[invalid_url] }.to raise_error
45
+ end
46
+ end
47
+
48
+ describe '#all' do
49
+ it 'Returns all projects' do
50
+ projects = GoodData::Project.all(:client => @client)
51
+ expect(projects).to_not be_nil
52
+ expect(projects).to be_a_kind_of(Array)
53
+ end
54
+ end
55
+
56
+ describe '#get_role_by_identifier' do
57
+ it 'Looks up for role by identifier' do
58
+ role = @project.get_role_by_identifier('readOnlyUserRole')
59
+ expect(role).to_not be_nil
60
+ expect(role).to be_a_kind_of(GoodData::ProjectRole)
61
+ end
62
+ end
63
+
64
+ describe '#get_role_by_summary' do
65
+ it 'Looks up for role by summary' do
66
+ role = @project.get_role_by_summary('read only user role')
67
+ expect(role).to_not be_nil
68
+ expect(role).to be_a_kind_of(GoodData::ProjectRole)
69
+ end
70
+ end
71
+
72
+ describe '#get_role_by_title' do
73
+ it 'Looks up for role by title' do
74
+ role = @project.get_role_by_title('Viewer')
75
+ expect(role).to_not be_nil
76
+ expect(role).to be_a_kind_of(GoodData::ProjectRole)
77
+ end
78
+ end
79
+
80
+ describe "#member" do
81
+ it 'Returns GoodData::Membership when looking for existing user using login' do
82
+ res = @project.get_user(ConnectionHelper::DEFAULT_USERNAME)
83
+ expect(res).to be_instance_of(GoodData::Membership)
84
+ end
85
+
86
+ it 'Returns GoodData::Membership when looking for existing user using URL' do
87
+ res = @project.get_user(ConnectionHelper::DEFAULT_USER_URL)
88
+ expect(res).to be_instance_of(GoodData::Membership)
89
+ end
90
+
91
+ it 'Returns GoodData::Membership when looking for existing user using GoodData::Profile' do
92
+ user = @project.members.first
93
+ res = @project.get_user(user)
94
+ expect(res).to be_instance_of(GoodData::Membership)
95
+ end
96
+
97
+ it 'Returns null for non-existing user' do
98
+ res = @project.get_user(ConnectionHelper::TEST_USERNAME)
99
+ expect(res).to be_nil
100
+ end
101
+ end
102
+
103
+ describe "#member?" do
104
+ it 'Returns true when looking for existing user using login' do
105
+ res = @project.member?(ConnectionHelper::DEFAULT_USERNAME)
106
+ expect(res).to be_truthy
107
+ end
108
+
109
+ it 'Returns true when looking for existing user using URL' do
110
+ res = @project.member?(ConnectionHelper::DEFAULT_USER_URL)
111
+ expect(res).to be_truthy
112
+ end
113
+
114
+ it 'Returns true when looking for existing user using GoodData::Profile' do
115
+ user = @project.members.first
116
+ res = @project.member?(user)
117
+ expect(res).to be_truthy
118
+ end
119
+
120
+ it 'Returns false for non-existing user' do
121
+ res = @project.member?(ConnectionHelper::TEST_USERNAME)
122
+ expect(res).to be_falsey
123
+ end
124
+
125
+ it 'Returns true for existing user when using optional list' do
126
+ list = @project.members
127
+ res = @project.member?(ConnectionHelper::DEFAULT_USERNAME, list)
128
+ expect(res).to be_truthy
129
+ end
130
+
131
+ it 'Returns false for non-existing user when using optional list' do
132
+ list = []
133
+ res = @project.member?(ConnectionHelper::DEFAULT_USERNAME, list)
134
+ expect(res).to be_falsey
135
+ end
136
+ end
137
+
138
+ describe '#members?' do
139
+ it 'Returns array of bools when looking for existing users using GoodData::Profile' do
140
+ users = @project.members.take(10)
141
+ res = @project.members?(users)
142
+ expect(res.all?).to be_truthy
143
+ end
144
+
145
+ it 'Support variety of inputs' do
146
+ users = @project.members.take(1)
147
+ res = @project.members?(users + [ConnectionHelper::TEST_USERNAME])
148
+ expect(res).to eq [true, false]
149
+ end
150
+ end
151
+
152
+ describe '#roles' do
153
+ it 'Returns array of GoodData::ProjectRole' do
154
+ roles = @project.roles
155
+ expect(roles).to be_instance_of(Array)
156
+
157
+ roles.each do |role|
158
+ expect(role).to be_instance_of(GoodData::ProjectRole)
159
+ end
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,199 @@
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/report_data_result'
8
+
9
+ describe GoodData::ReportDataResult do
10
+
11
+ before(:each) do
12
+ data = JSON.parse(File.read('./spec/data/reports/report_1.json'))
13
+ @result = GoodData::ReportDataResult.from_xtab(data)
14
+ @result2 = GoodData::ReportDataResult.from_xtab(data)
15
+ end
16
+
17
+ it 'should compute columns' do
18
+ expect(@result.to_a).to eq [[nil, "kolin", "praha", "varsava"],
19
+ [nil, "sum of Age", "sum of Age", "sum of Age"],
20
+ ["jirka", 25, nil, nil],
21
+ ["petr", nil, nil, 15],
22
+ ["tomas", nil, 25, nil]]
23
+ end
24
+
25
+ it 'should compute columns' do
26
+ expect(@result.left_headers).to eq [["jirka"],
27
+ ["petr"],
28
+ ["tomas"]]
29
+ end
30
+
31
+ 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"]]
34
+ end
35
+
36
+ describe '#slice' do
37
+ it 'slice on zeroes should be equal to original' do
38
+ expect(@result.slice(0, 0)).to eq @result
39
+ end
40
+
41
+ it 'slice on data should return just data' do
42
+ expect(@result.slice(2, 1).to_a).to eq [[25, nil, nil],
43
+ [nil, nil, 15],
44
+ [nil, 25, nil]]
45
+ end
46
+
47
+ it 'should return data result with correct size' do
48
+ expect(@result.slice(2, 1).size).to eq [3, 3]
49
+ end
50
+
51
+ it 'should return data result with correct headers' do
52
+ 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"]]
55
+ end
56
+
57
+ end
58
+
59
+ describe '#without_left_headers' do
60
+ it 'should return data result without left headers' do
61
+ expect(@result.without_left_headers.to_a).to eq [["kolin", "praha", "varsava"],
62
+ ["sum of Age", "sum of Age", "sum of Age"],
63
+ [25, nil, nil],
64
+ [nil, nil, 15],
65
+ [nil, 25, nil]]
66
+ end
67
+
68
+ it 'should return correct size' do
69
+ expect(@result.without_left_headers.size).to eq [5, 3]
70
+ end
71
+
72
+ it 'should return correct left headers' do
73
+ expect(@result.without_top_headers.top_headers).to eq nil
74
+ end
75
+ end
76
+
77
+ describe '#without_top_headers' do
78
+ it 'should return data result without left headers' do
79
+ expect(@result.without_top_headers.to_a).to eq [["jirka", 25, nil, nil],
80
+ ["petr", nil, nil, 15],
81
+ ["tomas", nil, 25, nil]]
82
+ end
83
+
84
+ it 'should return correct size' do
85
+ expect(@result.without_top_headers.size).to eq [3, 4]
86
+ end
87
+
88
+ it 'should return correct left headers' do
89
+ expect(@result.without_top_headers.left_headers).to eq [["jirka"],
90
+ ["petr"],
91
+ ["tomas"]]
92
+ end
93
+
94
+ it 'should return correct top headers' do
95
+ expect(@result.without_top_headers.top_headers).to eq nil
96
+ end
97
+ end
98
+
99
+ it 'should work with left attribute reports' do
100
+ data = JSON.parse(File.read('./spec/data/reports/left_attr_report.json'))
101
+ result = GoodData::ReportDataResult.from_xtab(data)
102
+ expect(result.left_headers).to eq [["jirka"], ["petr"], ["tomas"]]
103
+ expect(result.size).to eq [4, 2]
104
+ expect(result.data_size).to eq [3, 1]
105
+ end
106
+
107
+ it 'should work with left attribute reports' do
108
+ data = JSON.parse(File.read('./spec/data/reports/top_attr_report.json'))
109
+ result = GoodData::ReportDataResult.from_xtab(data)
110
+ expect(result.size).to eq [2, 4]
111
+ expect(result.data_size).to eq [1, 3]
112
+ expect(result.left_headers).to eq [["Values"]]
113
+ expect(result.top_headers).to eq [["jirka", "petr", "tomas"]]
114
+ end
115
+
116
+ it 'should fail when comparing two different reports' do
117
+ data = JSON.parse(File.read('./spec/data/reports/left_attr_report.json'))
118
+ a = GoodData::ReportDataResult.from_xtab(data)
119
+ data = JSON.parse(File.read('./spec/data/reports/top_attr_report.json'))
120
+ b = GoodData::ReportDataResult.from_xtab(data)
121
+ expect(a == b).to be_falsey
122
+ end
123
+
124
+ describe '#size' do
125
+ it 'should compute columns' do
126
+ expect(@result.size).to eq [5, 4]
127
+ end
128
+
129
+ it 'should compute columns' do
130
+ expect(@result.size).to eq @result2.size
131
+ end
132
+ end
133
+
134
+ describe '#data' do
135
+ it 'should return just data portion' do
136
+ expect(@result.data.is_a?(GoodData::ReportDataResult)).to be_truthy
137
+ expect(@result.data.to_a).to eq [[25, nil, nil],
138
+ [nil, nil, 15],
139
+ [nil, 25, nil]]
140
+ end
141
+ end
142
+
143
+ describe '#[]' do
144
+ it 'should return correct line' do
145
+ expect(@result[2]).to eq ['jirka', 25, nil, nil]
146
+ end
147
+ end
148
+
149
+ describe '#column' do
150
+ it 'should return correct line' do
151
+ expect(@result.column(2)).to eq ["praha", "sum of Age", nil, nil, 25]
152
+ end
153
+ end
154
+
155
+ describe '#map' do
156
+ it 'should iterate over rows' do
157
+ expect(@result.each.map {|row| [1]}).to eq [[1], [1], [1], [1], [1]]
158
+ end
159
+ end
160
+
161
+ describe '#transpose' do
162
+ it 'should transpose' do
163
+ expect(@result.transpose.to_a).to eq @result.to_a.transpose
164
+ expect(@result.transpose.to_a).to eq [[nil, nil, "jirka", "petr", "tomas"],
165
+ ["kolin", "sum of Age", 25, nil, nil],
166
+ ["praha", "sum of Age", nil, nil, 25],
167
+ ["varsava", "sum of Age", nil, 15, nil]]
168
+ end
169
+ end
170
+
171
+ describe '#diff' do
172
+ it 'should support diffing' do
173
+ data = JSON.parse(File.read('./spec/data/reports/left_attr_report.json'))
174
+ a = GoodData::ReportDataResult.from_xtab(data)
175
+ c = GoodData::ReportDataResult.from_xtab(data)
176
+ data = JSON.parse(File.read('./spec/data/reports/top_attr_report.json'))
177
+ b = GoodData::ReportDataResult.from_xtab(data)
178
+ expect {a - b}.to raise_exception
179
+ expect(a - c).to be_empty
180
+ end
181
+ end
182
+
183
+ describe 'one line reports' do
184
+ it 'should work with one line metric. No attribtues.' do
185
+ data = JSON.parse(File.read('./spec/data/reports/metric_only_one_line.json'))
186
+ a = GoodData::ReportDataResult.from_xtab(data)
187
+ expect(a.to_a).to eq [[nil, "sum of Age"],
188
+ ["sum of Age", 65]]
189
+
190
+ expect(a.data.to_a).to eq [[65]]
191
+ expect(a.left_headers).to eq [["sum of Age"]]
192
+ expect(a.top_headers).to eq [["sum of Age"]]
193
+
194
+ expect(a.without_top_headers.to_a).to eq [["sum of Age", 65]]
195
+ expect(a.without_left_headers.to_a).to eq [["sum of Age"], [65]]
196
+ end
197
+ end
198
+ end
199
+