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,78 @@
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::SmallGoodZilla do
10
+
11
+ MAQL_EXAMPLE = 'SELECT SUM(#"Amount") WHERE @"Date"=#"X" AND ?"Snapshot EOP"=1'
12
+ FACTS = {
13
+ "Amount" => "a",
14
+ "X" => "x"
15
+ }
16
+ ATTRIBUTES = {
17
+ "Date" => "d"
18
+ }
19
+ METRICS = {
20
+ "Snapshot EOP" => "snap"
21
+ }
22
+ DICT = {
23
+ :facts => FACTS,
24
+ :attributes => ATTRIBUTES,
25
+ :metrics => METRICS,
26
+ }
27
+
28
+ it "should parse metrics out of the string" do
29
+ x = GoodData::SmallGoodZilla.get_facts(MAQL_EXAMPLE)
30
+ x.should == ["Amount", "X"]
31
+ end
32
+
33
+ it "should parse attributes out of the string" do
34
+ x = GoodData::SmallGoodZilla.get_attributes(MAQL_EXAMPLE)
35
+ x.should == ["Date"]
36
+ end
37
+
38
+ it "should parse metrics out of the string" do
39
+ x = GoodData::SmallGoodZilla.get_metrics(MAQL_EXAMPLE)
40
+ x.should == ["Snapshot EOP"]
41
+ end
42
+
43
+ it "should interpolate the values" do
44
+
45
+ interpolated = GoodData::SmallGoodZilla.interpolate({
46
+ :facts => ["Amount", "X"],
47
+ :attributes => ["Date"],
48
+ :metrics => ["Snapshot EOP"]
49
+ }, DICT)
50
+
51
+ interpolated.should == {
52
+ :facts => [["Amount", "a"], ["X", "x"]],
53
+ :attributes => [["Date", "d"]],
54
+ :metrics => [["Snapshot EOP", "snap"]]
55
+ }
56
+ end
57
+
58
+ it "should return interpolated metric" do
59
+ interpolated = GoodData::SmallGoodZilla.interpolate_metric(MAQL_EXAMPLE, DICT)
60
+ interpolated.should == "SELECT SUM([a]) WHERE [d]=[x] AND [snap]=1"
61
+ end
62
+
63
+ it "should be able to parse several ids correctly." do
64
+ metric = "SELECT SUM(
65
+ CASE
66
+ WHEN ![attr.customer_profiles.profile_id] = [/gdc/md/pxa3aic06undadkc5s7t5lxpne11vgyt/obj/257/elements?id=65] THEN ![fact.perfomance_by_campaign_id.general_score_1]
67
+ WHEN ![attr.customer_profiles.profile_id] = [/gdc/md/pxa3aic06undadkc5s7t5lxpne11vgyt/obj/257/elements?id=50] THEN ![fact.perfomance_by_campaign_id.general_score_5]
68
+ WHEN ![attr.customer_profiles.profile_id] = [/gdc/md/pxa3aic06undadkc5s7t5lxpne11vgyt/obj/257/elements?id=20] THEN ![fact.perfomance_by_campaign_id.general_score_12]
69
+ END)"
70
+ GoodData::SmallGoodZilla.get_ids(metric).should == [
71
+ "attr.customer_profiles.profile_id",
72
+ "fact.perfomance_by_campaign_id.general_score_1",
73
+ "fact.perfomance_by_campaign_id.general_score_5",
74
+ "fact.perfomance_by_campaign_id.general_score_12"
75
+ ]
76
+ end
77
+
78
+ end
@@ -0,0 +1,22 @@
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/helpers/csv_helper'
8
+
9
+ describe GoodData::Helpers::Csv do
10
+ describe '#read' do
11
+ it 'Reads data from CSV file' do
12
+ data = GoodData::Helpers::Csv.read(:path => CsvHelper::CSV_PATH_IMPORT)
13
+ end
14
+ end
15
+
16
+ describe '#write' do
17
+ it 'Writes data to CSV' do
18
+ data = []
19
+ GoodData::Helpers::Csv.write(:path => CsvHelper::CSV_PATH_EXPORT, :data => data)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,61 @@
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/helpers/data_helper'
8
+
9
+ describe GoodData::Helpers::DataSource do
10
+ before :each do
11
+ @s3_client = double('s3_client')
12
+ @buckets = double('buckets')
13
+ @bucket = double('bucket')
14
+
15
+ allow(@s3_client).to receive(:bucket) { @bucket }
16
+ allow(@bucket).to receive(:object) { StringIO.new('aaa') }
17
+
18
+ @ds = GoodData::Helpers::DataSource.new({
19
+ type: :s3,
20
+ bucket: 'some_bucket',
21
+ key: 'some_key'
22
+ })
23
+ end
24
+
25
+ it 'should be able to handle AWS' do
26
+ expect(@ds.realized?).to be_falsey
27
+ params = { 'aws_client' => { 's3_client' => @s3_client } }
28
+ expect(@ds.realize(params)).to eq '2bdc6c8a02b2bd1d7997cf17f0848ecfcbceba25ca184e2676f19c054db7139b'
29
+ expect(@ds.realized?).to be_truthy
30
+ end
31
+
32
+ it 'should gracefully handle missing aws client' do
33
+ expect do
34
+ @ds.realize({
35
+ 'aws_client' => nil
36
+ })
37
+ end.to raise_exception "AWS client not present. Perhaps S3Middleware is missing in the brick definition?"
38
+ end
39
+
40
+ it 'should gracefully handle missing data source params - bucket' do
41
+ ds = GoodData::Helpers::DataSource.new({
42
+ type: :s3,
43
+ key: 'some_key'
44
+ })
45
+ params = { 'aws_client' => { 's3_client' => @s3_client } }
46
+ expect do
47
+ ds.realize(params)
48
+ end.to raise_exception 'Key "bucket" is missing in S3 datasource'
49
+ end
50
+
51
+ it 'should gracefully handle missing data source params - key' do
52
+ ds = GoodData::Helpers::DataSource.new({
53
+ type: :s3,
54
+ bucket: 'some_bucket'
55
+ })
56
+ params = { 'aws_client' => { 's3_client' => @s3_client } }
57
+ expect do
58
+ ds.realize(params)
59
+ end.to raise_exception 'Key "key" is missing in S3 datasource'
60
+ end
61
+ end
@@ -0,0 +1,111 @@
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/helpers/csv_helper'
8
+
9
+ describe GoodData::Helpers do
10
+ describe '#diff' do
11
+
12
+ before :each do
13
+
14
+ @old_tomas = { id: 1, name: 'Tomas', age: 28 }
15
+ @new_tomas = { id: 1, name: "Lil'Tomas", age: 28 }
16
+ @patrick = { id: 4, name: 'Patrick', age: 24 }
17
+ @old_korczis = { id: 3, name: 'Korczis', age: 23 }
18
+ @new_korczis = { id: 3, name: "Korczis", age: 22 }
19
+ @petr = { id: 2, name: 'Petr', age: 32 }
20
+ @cvengy = { id: 5, name: 'Petr', age: 30 }
21
+
22
+ @old_list = [@cvengy, @old_tomas, @patrick, @old_korczis]
23
+ @new_list = [@cvengy, @new_tomas, @petr, @new_korczis]
24
+ end
25
+
26
+ it 'diffs two lists of hashes' do
27
+ diff = GoodData::Helpers.diff(@old_list, @new_list, key: :id)
28
+
29
+ expect(diff[:same]).to eq [@cvengy]
30
+ expect(diff[:added]).to eq [@petr]
31
+ expect(diff[:removed]).to eq [@patrick]
32
+ expect(diff[:changed]).to eq([
33
+ {
34
+ old_obj: @old_tomas,
35
+ new_obj: @new_tomas,
36
+ diff: { name: "Lil'Tomas"}
37
+ },
38
+ {
39
+ old_obj: @old_korczis,
40
+ new_obj: @new_korczis,
41
+ diff: { age: 22 }
42
+ }
43
+ ])
44
+ end
45
+
46
+ it 'diffs two lists of hashes on subset of fields' do
47
+ diff = GoodData::Helpers.diff(@old_list, @new_list, key: :id, fields: [:id, :age])
48
+
49
+ expect(diff[:same]).to eq [@cvengy, @old_tomas]
50
+ expect(diff[:added]).to eq [@petr]
51
+ expect(diff[:removed]).to eq [@patrick]
52
+ expect(diff[:changed]).to eq([
53
+ {
54
+ old_obj: @old_korczis,
55
+ new_obj: @new_korczis,
56
+ diff: { age: 22 }
57
+ }
58
+ ])
59
+ end
60
+
61
+ it 'should encode params and preserve the nil in hidden' do
62
+ x = GoodData::Helpers.decode_params({ "x" => "y", GoodData::Helpers::ENCODED_HIDDEN_PARAMS_KEY.to_s => '{"a":{"b": "c"}}'})
63
+ expect(x).to eq({"x"=>"y", "a"=>{"b"=>"c"}, "gd_encoded_hidden_params"=>nil})
64
+ end
65
+
66
+ it 'should encode params and preserve the nil in hidden' do
67
+ x = GoodData::Helpers.decode_params({GoodData::Helpers::ENCODED_HIDDEN_PARAMS_KEY.to_s => nil})
68
+ expect(x).to eq({"gd_encoded_hidden_params" =>nil})
69
+ end
70
+
71
+ it 'should encode params and preserve the nil in hidden' do
72
+ x = GoodData::Helpers.decode_params({
73
+ "x" => "y",
74
+ GoodData::Helpers::ENCODED_PARAMS_KEY.to_s => '{"d":{"b": "c"}}',
75
+ GoodData::Helpers::ENCODED_HIDDEN_PARAMS_KEY.to_s => '{"a":{"b": "c"}}'
76
+ })
77
+ expect(x).to eq({
78
+ "x"=>"y",
79
+ "a"=>{"b"=>"c"},
80
+ "d" => {"b" => "c"},
81
+ "gd_encoded_hidden_params"=>nil
82
+ })
83
+ end
84
+
85
+ it 'should encode params and note preserve the nil in public' do
86
+ x = GoodData::Helpers.decode_params({
87
+ "x" => "y",
88
+ GoodData::Helpers::ENCODED_PARAMS_KEY.to_s => '{"d":{"b": "c"}}'
89
+ })
90
+ expect(x).to eq({
91
+ "x"=>"y",
92
+ "d" => {"b" => "c"}
93
+ })
94
+ end
95
+
96
+ it 'should be abe to join datasets' do
97
+ master = [{ id: 'a', x: 1 },
98
+ { id: 'b', x: 1 },
99
+ { id: 'c', x: 2 }]
100
+
101
+ lookup = [{ id: 1, y: 'FOO' },
102
+ { id: 2, y: 'BAR' }]
103
+
104
+ results = GoodData::Helpers.join(master, lookup, [:x], [:id])
105
+ expect(results).to eq [{:id=>"a", :y=>"FOO", :x=>1},
106
+ {:id=>"b", :y=>"FOO", :x=>1},
107
+ {:id=>"c", :y=>"BAR", :x=>2}]
108
+ end
109
+
110
+ end
111
+ end
@@ -0,0 +1,86 @@
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/client'
8
+ require 'gooddata/models/model'
9
+
10
+ describe GoodData::Helpers do
11
+ describe '#home_directory' do
12
+ it 'works' do
13
+ GoodData::Helpers.home_directory
14
+ end
15
+ end
16
+
17
+ describe '#running_on_windows?' do
18
+ it 'works' do
19
+ result = GoodData::Helpers.running_on_windows?
20
+ !!result.should == result
21
+ end
22
+ end
23
+
24
+ describe '#running_on_mac?' do
25
+ it 'works' do
26
+ result = GoodData::Helpers.running_on_a_mac?
27
+ !!result.should == result
28
+ end
29
+ end
30
+
31
+ describe '#error' do
32
+ it 'works' do
33
+ expect { GoodData::Helpers.error('Test Error') }.to raise_error(SystemExit)
34
+ end
35
+ end
36
+
37
+ describe '#find_goodfile' do
38
+ it 'works' do
39
+ GoodData::Helpers.find_goodfile.should_not be_nil
40
+ end
41
+ end
42
+
43
+ describe "#decode_params" do
44
+ it 'decodes the data params from json' do
45
+ params = {
46
+ 'param' => 'value',
47
+ 'number_param' => 5,
48
+ 'gd_encoded_params' => '{"deep": {"deeper": "deep value"}}',
49
+ }
50
+ expected_result = {
51
+ 'param' => 'value',
52
+ 'number_param' => 5,
53
+ 'deep' => {
54
+ 'deeper' => 'deep value'
55
+ }
56
+ }
57
+ result = GoodData::Helpers.decode_params(params)
58
+ expect(result).to eq(expected_result)
59
+ end
60
+ it 'decodes the hidden_data in hidden params' do
61
+ params = {
62
+ 'param' => 'value',
63
+ 'number_param' => 5,
64
+ 'gd_encoded_hidden_params' => '{"deep_secret": {"deeper_secret": "hidden value"}}'
65
+ }
66
+ expected_result = {
67
+ 'param' => 'value',
68
+ 'number_param' => 5,
69
+ "gd_encoded_hidden_params" => nil,
70
+ "deep_secret" => {
71
+ "deeper_secret" => "hidden value"
72
+ }
73
+ }
74
+ result = GoodData::Helpers.decode_params(params)
75
+ expect(result).to eq(expected_result)
76
+ end
77
+ it 'throws an error when data params is not a valid json' do
78
+ params = {
79
+ 'param' => 'value',
80
+ 'number_param' => 5,
81
+ 'gd_encoded_params' => 'This is no json.'
82
+ }
83
+ expect { GoodData::Helpers.decode_params(params) }.to raise_error(JSON::ParserError)
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,29 @@
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::Model::AttributeBlueprintField do
10
+
11
+ before(:each) do
12
+ @model_view = MultiJson.load(File.read('./spec/data/wire_models/model_view.json'))
13
+ @blueprint = GoodData::Model::FromWire.from_wire(@model_view)
14
+ @dataset = @blueprint.datasets('dataset.account')
15
+ @attribute = @dataset.attributes('attr.account.region')
16
+ end
17
+
18
+ describe '#labels' do
19
+ it 'should return labels on dataset' do
20
+ expect(@attribute.labels.count).to eq 1
21
+ end
22
+ end
23
+
24
+ describe '#dataset' do
25
+ it 'should return dataset of the attribtue field' do
26
+ expect(@attribute.dataset_blueprint).to eq @dataset
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,121 @@
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::Model::DatasetBlueprint do
10
+
11
+ before(:each) do
12
+ @model_view = MultiJson.load(File.read('./spec/data/wire_models/model_view.json'))
13
+ @blueprint = GoodData::Model::FromWire.from_wire(@model_view)
14
+ @dataset = @blueprint.datasets('dataset.opportunityanalysis')
15
+ @small_blueprint = GoodData::Model::ProjectBlueprint.build('my_bp') do |p|
16
+ p.add_dataset('dataset.countries') do |d|
17
+ d.add_anchor('attr.country')
18
+ d.add_label('label.country.name', reference: 'attr.country')
19
+ end
20
+ p.add_dataset('dataset.repos') do |d|
21
+ d.add_anchor('attr.repository')
22
+ d.add_label('label.repo.name', reference: 'attr.repository')
23
+ d.add_reference('dataset.countries')
24
+ end
25
+ p.add_dataset('dataset.devs') do |d|
26
+ d.add_anchor('attr.dev')
27
+ d.add_label('label.dev.name', reference: 'attr.dev')
28
+ end
29
+ p.add_dataset('dataset.commits') do |d|
30
+ d.add_anchor('attr.commits')
31
+ d.add_attribute('attr.quality')
32
+ d.add_label('label.quality', reference: 'attr.quality')
33
+ d.add_fact('more_numbers')
34
+ d.add_reference('dataset.repos')
35
+ d.add_reference('dataset.devs')
36
+ end
37
+ end
38
+ end
39
+
40
+ describe '#facts' do
41
+ it 'should return facts on dataset' do
42
+ expect(@dataset.facts.count).to eq 2
43
+ expect(@dataset.facts.map(&:id).to_set).to eq [
44
+ 'fact.opportunityanalysis.buckets_to_display',
45
+ 'fact.opportunityanalysis.month_fact'
46
+ ].to_set
47
+ end
48
+
49
+ it 'should be able to pick specific fact' do
50
+ expect(@dataset.facts('fact.opportunityanalysis.buckets_to_display').id).to eq 'fact.opportunityanalysis.buckets_to_display'
51
+ end
52
+ end
53
+
54
+ describe '#attributes' do
55
+ it 'should return attributes on dataset' do
56
+ expect(@dataset.attributes.count).to eq 2
57
+ expect(@dataset.attributes.map(&:id).to_set).to eq [
58
+ 'attr.opportunityanalysis.month',
59
+ 'attr.opportunityanalysis.cohorttype'
60
+ ].to_set
61
+ end
62
+
63
+ it 'should return attributes on dataset' do
64
+ expect(@dataset.attributes('attr.opportunityanalysis.cohorttype').id).to eq 'attr.opportunityanalysis.cohorttype'
65
+ end
66
+ end
67
+
68
+ describe '#labels' do
69
+ it 'should return labels on dataset' do
70
+ expect(@dataset.labels.count).to eq 4
71
+ expect(@dataset.labels.map(&:id).to_set).to eq [
72
+ 'label.opportunityanalysis.month.monthsortingnew',
73
+ 'label.opportunityanalysis.month',
74
+ 'label.opportunityanalysis.cohorttype',
75
+ 'label.opportunityanalysis.techoppanalysis'
76
+ ].to_set
77
+ end
78
+ end
79
+
80
+ describe '#references' do
81
+ it 'should return references on dataset' do
82
+ expect(@dataset.references.count).to eq 2
83
+ expect(@dataset.references.map {|r| r.data[:dataset]}).to eq [
84
+ 'dataset.opp_records',
85
+ 'dataset.consolidatedmarketingstatus'
86
+ ]
87
+ end
88
+ end
89
+
90
+ describe '#referenced_by' do
91
+ it 'should return datasets that are referencing this one' do
92
+ expect(@dataset.referenced_by).to eq []
93
+ dimension = @blueprint.datasets('dataset.opp_records')
94
+ expect(dimension.referenced_by.map(&:id)).to eq ['dataset.opportunityanalysis']
95
+ end
96
+ end
97
+
98
+ describe '#referencing' do
99
+ it 'should return datasets that are referenced by this one (the references in the dataset leads to those datasets)' do
100
+ expect(@dataset.referencing.map(&:id)).to eq ['dataset.opp_records', 'dataset.consolidatedmarketingstatus']
101
+ dimension = @blueprint.datasets('dataset.productline')
102
+ expect(dimension.referencing.map(&:id)).to be_empty
103
+ dimension = @blueprint.datasets('dataset.opp_records')
104
+ expect(dimension.referencing.map(&:id).count).to eq 28
105
+ end
106
+ end
107
+
108
+ describe '#breaks' do
109
+ it 'should return attributes that the dataset can break' do
110
+ expect(@small_blueprint.datasets('dataset.countries').breaks.map(&:id)).to eq ['attr.country', 'attr.repository', 'attr.quality']
111
+ expect(@small_blueprint.datasets('dataset.devs').breaks.map(&:id)).to eq ['attr.dev', 'attr.quality']
112
+ end
113
+ end
114
+
115
+ describe '#broken_by' do
116
+ it 'should return attributes that the dataset can be broken by' do
117
+ expect(@small_blueprint.datasets('dataset.commits').broken_by.map(&:id)).to eq ['attr.quality', 'attr.repository', 'attr.country', 'attr.dev']
118
+ expect(@small_blueprint.datasets('dataset.devs').broken_by.map(&:id)).to eq ['attr.dev']
119
+ end
120
+ end
121
+ end