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,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::ReferenceBlueprintField 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
+ @attribute = @dataset.attributes('attr.opportunityanalysis.month')
16
+ end
17
+
18
+ describe '#dataset' do
19
+ it 'should return labels on dataset' do
20
+ expect(@dataset.references.first.dataset.id).to eq 'dataset.opp_records'
21
+ end
22
+ end
23
+
24
+ describe '#reference' do
25
+ it 'should return reference on dataset' do
26
+ expect(@dataset.references.first.reference).to eq 'dataset.opp_records'
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,38 @@
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::SchemaBuilder do
11
+
12
+ it "should create a schema" do
13
+ builder = GoodData::Model::SchemaBuilder.new("a_title")
14
+ blueprint = builder.to_blueprint
15
+ expect(blueprint.datasets.first.title).to eq 'A Title'
16
+ end
17
+
18
+ it "should create a schema with some columns" do
19
+ builder = GoodData::Model::SchemaBuilder.new("payments")
20
+ builder.add_attribute("id", :title => "My Id")
21
+ builder.add_fact("amount", :title => "Amount")
22
+
23
+ blueprint = builder.to_blueprint
24
+ blueprint.attributes.count == 1
25
+ end
26
+
27
+ it "should be able to create from block" do
28
+ builder = GoodData::Model::SchemaBuilder.create("payments") do |d|
29
+ d.add_attribute('attr.id', :title => 'Id')
30
+ d.add_label('label.id.name', :title => 'Id Name', reference: 'attr.id')
31
+ d.add_fact('amount', :title => 'Amount')
32
+ end
33
+
34
+ blueprint = builder.to_blueprint
35
+ blueprint.attributes.count == 1
36
+ blueprint.facts.count == 1
37
+ end
38
+ end
@@ -0,0 +1,174 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require 'gooddata'
8
+
9
+ include GoodData::Model
10
+
11
+ describe GoodData::Model::ProjectBlueprint do
12
+
13
+ before(:each) do
14
+ @spec = JSON.parse(File.read("./spec/data/blueprints/big_blueprint_not_pruned.json"), :symbolize_names => true)
15
+ @blueprint = GoodData::Model::ProjectBlueprint.new(@spec)
16
+ @wire_spec = JSON.parse(File.read("./spec/data/wire_models/model_view.json"), :symbolize_names => true)
17
+ end
18
+
19
+ describe '#to_wire' do
20
+ it 'should transform small spec to wire' do
21
+ spec = JSON.parse(File.read("./spec/data/blueprints/test_blueprint.json"), :symbolize_names => true)
22
+ wire_spec = JSON.parse(File.read("./spec/data/wire_models/test_blueprint.json"), :symbolize_names => true)
23
+ res = ToWire.to_wire(spec)
24
+ expect(res).to eq wire_spec
25
+ end
26
+
27
+ it 'it should turn into wire another project' do
28
+ spec = JSON.parse(File.read("./spec/data/blueprints/test_project_model_spec.json"), :symbolize_names => true)
29
+ res = ToWire.to_wire(spec)
30
+ end
31
+
32
+ it 'should create manifest' do
33
+ spec = JSON.parse(File.read("./spec/data/blueprints/test_blueprint.json"), :symbolize_names => true)
34
+ wire_spec = JSON.parse(File.read("./spec/data/wire_models/test_blueprint.json"), :symbolize_names => true)
35
+ manifest_spec = JSON.parse(File.read("./spec/data/manifests/test_blueprint.json"))
36
+ expect(ToWire.to_wire(spec)).to eq wire_spec
37
+ end
38
+ end
39
+
40
+ describe '#anchor_to_wire' do
41
+ it 'should generate anchor without label.' do
42
+ dataset = ProjectBlueprint.find_dataset(@spec, 'dataset.stage_history')
43
+
44
+ result = ToWire.anchor_to_wire(@spec, dataset)
45
+ expect(result).to eq ({
46
+ attribute: {
47
+ identifier: "attr.dataset.stage_history.factsof",
48
+ title: "Records of stage_history",
49
+ folder: "stage_history"}})
50
+ end
51
+
52
+ it 'should generate anchor with label' do
53
+ dataset = ProjectBlueprint.find_dataset(@spec, 'dataset.opportunityanalysis')
54
+ result = ToWire.anchor_to_wire(nil, dataset)
55
+ expect(result).to eq ({
56
+ attribute: {
57
+ :identifier=>"attr.opportunityanalysis.techoppanalysis",
58
+ :title=>"Tech Opp. Analysis",
59
+ :folder=>"Opportunity Benchmark",
60
+ :labels=>[
61
+ {:label=>
62
+ {:identifier=>"label.opportunityanalysis.techoppanalysis",
63
+ :title=>"Tech Opp. Analysis",
64
+ :type=>"GDC.text",
65
+ :dataType=>"VARCHAR(128)"}}],
66
+ :defaultLabel=>"label.opportunityanalysis.techoppanalysis"}})
67
+ end
68
+ end
69
+
70
+ describe '#anchor_to_attribute' do
71
+ it 'should generate attribute without label' do
72
+ dataset = ProjectBlueprint.find_dataset(@spec, 'dataset.stage_history')
73
+ a = DatasetBlueprint.attributes(dataset).find {|a| a[:id] == 'attr.stage_history.currentstatus'}
74
+ result = ToWire.attribute_to_wire(dataset, a)
75
+ expect(result).to eq ({
76
+ :attribute=>
77
+ {:identifier=>"attr.stage_history.currentstatus",
78
+ :title=>"Current Stage",
79
+ :folder=>"stage_history",
80
+ :labels=>
81
+ [{:label=>
82
+ {:identifier=>"label.stage_history.currentstatus",
83
+ :title=>"Current Stage",
84
+ :type=>"GDC.text",
85
+ :dataType=>"VARCHAR(128)"}}],
86
+ :defaultLabel=>"label.stage_history.currentstatus"}})
87
+ end
88
+
89
+ it 'should generate attributes with label' do
90
+ dataset = ProjectBlueprint.find_dataset(@spec, 'dataset.opportunityanalysis')
91
+ a = DatasetBlueprint.attributes(dataset).find {|a| a[:id] == 'attr.opportunityanalysis.month'}
92
+
93
+ result = ToWire.attribute_to_wire(dataset, a)
94
+ expect(result).to eq ({:attribute=>
95
+ {:identifier=>"attr.opportunityanalysis.month",
96
+ :title=>"Month",
97
+ :folder=>"Opportunity Benchmark",
98
+ :labels=>
99
+ [{:label=>
100
+ {:identifier=>"label.opportunityanalysis.month",
101
+ :title=>"Month",
102
+ :type=>"GDC.text",
103
+ :dataType=>"VARCHAR(128)"}},
104
+ {:label=>
105
+ {:identifier=>"label.opportunityanalysis.month.monthsortingnew",
106
+ :title=>"MonthSortingNew",
107
+ :type=>"GDC.text",
108
+ :dataType=>"INT"}}],
109
+ :defaultLabel=>"label.opportunityanalysis.month" }})
110
+ end
111
+ end
112
+
113
+ describe '#fact_to_wire' do
114
+ it 'should generate anchor' do
115
+ fact_def = {
116
+ type: "fact",
117
+ id: "fact.stage_history.stage_velocity",
118
+ title: "Stage Velocity",
119
+ folder: "My Folder",
120
+ description: "Velocity description",
121
+ gd_data_type: "DECIMAL(12,2)"
122
+ }
123
+ result = ToWire.fact_to_wire(nil, fact_def)
124
+ expect(result).to eq ({
125
+ fact: {
126
+ identifier: "fact.stage_history.stage_velocity",
127
+ title: "Stage Velocity",
128
+ dataType: "DECIMAL(12,2)",
129
+ folder: "My Folder",
130
+ description: "Velocity description"}})
131
+ end
132
+ end
133
+
134
+ describe '#references_to_wire' do
135
+ it 'should produce references' do
136
+ dataset = ProjectBlueprint.find_dataset(@spec, 'dataset.opp_snapshot')
137
+ res = ToWire.references_to_wire(@spec, dataset)
138
+ expect(res).to eq [
139
+ "dataset.sdrowner",
140
+ "dataset.leadsourceoriginal",
141
+ "dataset.account",
142
+ "dataset.amounttype",
143
+ "dataset.product",
144
+ "dataset.sourcingorigin",
145
+ "dataset.leadsource",
146
+ "dataset.productline",
147
+ "dataset.stage",
148
+ "dataset.opp_owner",
149
+ "dataset.opportunity",
150
+ "dataset.bookingtype",
151
+ "dataset.forecast",
152
+ "leadcreate",
153
+ "snapshot",
154
+ "oppclose",
155
+ "oppcreated",
156
+ "stage1plus",
157
+ "mqldate",
158
+ "effectivecontractstart",
159
+ "effectivecontractend"
160
+ ]
161
+ end
162
+ end
163
+
164
+ describe '#date_dimension_to_wire' do
165
+ it 'should be able to generate date dimension' do
166
+ res = ToWire.date_dimension_to_wire(@spec, {
167
+ type: "date_dimension",
168
+ id: "timeline",
169
+ title: "Timeline"
170
+ })
171
+ expect(res).to eq({:dateDimension=>{:name=>"timeline", :title=>"Timeline"}})
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,144 @@
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/domain'
8
+ require 'gooddata/helpers/csv_helper'
9
+
10
+ describe GoodData::Domain do
11
+ before(:each) do
12
+ @client = ConnectionHelper.create_default_connection
13
+ @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
14
+ end
15
+
16
+ after(:each) do
17
+ @client.disconnect
18
+ end
19
+
20
+ describe '#add_user' do
21
+ before(:each) do
22
+ @user = nil
23
+ end
24
+
25
+ after(:each) do
26
+ @user.delete if @user
27
+ end
28
+
29
+ it 'Should add user using class method' do
30
+ args = {
31
+ :domain => ConnectionHelper::DEFAULT_DOMAIN,
32
+ :login => "gemtest_#{rand(1e6)}@gooddata.com",
33
+ :password => CryptoHelper.generate_password,
34
+ }
35
+
36
+ @user = GoodData::Domain.add_user(args)
37
+ expect(@user).to be_an_instance_of(GoodData::Profile)
38
+ end
39
+
40
+ it 'Should add user using instance method' do
41
+ domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
42
+
43
+ login = "gemtest#{rand(1e6)}@gooddata.com"
44
+ password = CryptoHelper.generate_password
45
+
46
+ @user = domain.add_user(:login => login, :password => password, :first_name => 'X', :last_name => 'X')
47
+ expect(@user).to be_an_instance_of(GoodData::Profile)
48
+ end
49
+ end
50
+
51
+ describe '#find_user_by_login' do
52
+ it 'Should find user by login' do
53
+ domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
54
+ user = domain.find_user_by_login(ConnectionHelper::DEFAULT_USERNAME)
55
+ # user = @domain.add_user(args, client: @client)
56
+ expect(user).to be_an_instance_of(GoodData::Profile)
57
+ expect(user.login).to eq ConnectionHelper::DEFAULT_USERNAME
58
+ end
59
+ end
60
+
61
+ describe '#users' do
62
+ it 'Should list users' do
63
+ users = @domain.users
64
+ expect(users).to be_instance_of(Enumerator)
65
+ users.each do |user|
66
+ expect(user).to be_an_instance_of(GoodData::Profile)
67
+ end
68
+ end
69
+ end
70
+
71
+ describe '#create_users' do
72
+ it 'Creates new users from list' do
73
+ list = (0..1).to_a.map { |i| ProjectHelper.create_random_user(@client) }
74
+ res = @domain.create_users(list)
75
+
76
+ # no errors
77
+ expect(res.select { |x| x[:type] == :successful && x[:action] == :user_added_to_domain }.count).to eq res.count
78
+
79
+ expect(@domain.members?(list.map(&:login)).all?).to be_truthy
80
+
81
+ res.select { |x| x[:type] == :successful }.map { |r| r[:user] }.each do |r|
82
+ expect(r).to be_an_instance_of(GoodData::Profile)
83
+ r.delete
84
+ end
85
+ end
86
+
87
+ it 'Update a user' do
88
+ user = @domain.users.reject { |u| u.login == @client.user.login }.sample
89
+ login = user.login
90
+ name = user.first_name
91
+ modes = user.authentication_modes
92
+ possible_modes = [:sso, :password]
93
+
94
+
95
+ user.first_name = name.reverse
96
+ choice = SpecHelper.random_choice(possible_modes, user.authentication_modes)
97
+ user.authentication_modes = choice
98
+ @domain.create_users([user])
99
+ changed_user = @domain.get_user(login)
100
+ expect(changed_user.first_name).to eq name.reverse
101
+ expect(changed_user.authentication_modes).to eq [choice]
102
+
103
+ user.first_name = name
104
+ user.authentication_modes = modes
105
+ @domain.create_users([user])
106
+ reverted_user = @domain.get_user(login)
107
+ expect(reverted_user.first_name).to eq name
108
+ expect(reverted_user.authentication_modes).to eq modes
109
+ end
110
+
111
+ it 'Fails with an exception if you try to create a user that is in a different domain' do
112
+ user = ProjectHelper.create_random_user(@client)
113
+ user.login = 'svarovsky@gooddata.com'
114
+ expect do
115
+ @domain.create_user(user)
116
+ end.to raise_exception(GoodData::UserInDifferentDomainError)
117
+ end
118
+
119
+ it 'updates properties of a profile' do
120
+ user = @domain.users
121
+ .reject { |u| u.login == ConnectionHelper::DEFAULT_USERNAME }.take(20).sample
122
+
123
+ old_email = user.email
124
+ old_sso_provider = user.sso_provider || ''
125
+ user.email = 'john.doe@gooddata.com'
126
+ user.sso_provider = 'some_sso_provider'
127
+ @domain.update_user(user)
128
+ updated_user = @domain.find_user_by_login(user.login)
129
+ expect(updated_user.email).to eq 'john.doe@gooddata.com'
130
+ expect(updated_user.sso_provider).to eq 'some_sso_provider'
131
+
132
+ updated_user.sso_provider = 'some_sso_provider'.reverse
133
+ @domain.update_user(updated_user)
134
+ updated_user = @domain.find_user_by_login(user.login)
135
+ expect(updated_user.sso_provider).to eq 'some_sso_provider'.reverse
136
+
137
+ updated_user.email = old_email
138
+ updated_user.sso_provider = old_sso_provider
139
+ @domain.update_user(updated_user)
140
+ expect(@domain.find_user_by_login(user.login).email).to eq old_email
141
+ expect(@domain.find_user_by_login(user.login).sso_provider).to eq old_sso_provider
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,108 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ require 'gooddata/models/schedule'
8
+
9
+ describe GoodData::Execution do
10
+
11
+ before(:each) do
12
+ @data = {"execution"=>
13
+ {"startTime"=>"2015-02-27T15:44:21.759Z",
14
+ "endTime"=>"2015-02-27T15:47:49.383Z",
15
+ "log"=>
16
+ "/gdc/projects/tk3b994vmdpcb0xjwexc9moen8t5bpiw/dataload/processes/2b031451-b1a2-4039-8e36-0672542a0e60/executions/54f090d5e4b0c9cbdcb0f45b/log",
17
+ "status"=>"OK",
18
+ "trigger"=>"MANUAL",
19
+ "links"=>
20
+ {"self"=>
21
+ "/gdc/projects/tk3b994vmdpcb0xjwexc9moen8t5bpiw/schedules/54f08d1de4b0c9cbdcb0f323/executions/54f090d5e4b0c9cbdcb0f45b"},
22
+ "createdTime"=>"2015-02-27T15:44:21.361Z"}}
23
+ @execution = GoodData::Execution.new(@data)
24
+ end
25
+
26
+ describe '#created' do
27
+ it 'returns created as a Time instance' do
28
+ expect(@execution.created.class).to eq Time
29
+ expect(@execution.created.to_s).to eq '2015-02-27 15:44:21 UTC'
30
+ end
31
+ end
32
+
33
+ describe '#error?' do
34
+ it 'returns true if executione errored out' do
35
+ expect(@execution.error?).to be_falsy
36
+ end
37
+ end
38
+
39
+ describe '#ok?' do
40
+ it 'returns true if executione finished ok' do
41
+ expect(@execution.ok?).to be_truthy
42
+ end
43
+ end
44
+
45
+ describe '#finished' do
46
+ it 'returns time when execution finished' do
47
+ expect(@execution.finished.class).to eq Time
48
+ expect(@execution.finished.to_s).to eq '2015-02-27 15:47:49 UTC'
49
+ end
50
+
51
+ it 'returns nil if it is not finished' do
52
+ @data['execution']['status'] = 'RUNNING'
53
+ @data['execution']['endTime'] = nil
54
+ running_execution = GoodData::Execution.new(@data)
55
+ expect(running_execution.finished).to be_nil
56
+ end
57
+ end
58
+
59
+ describe '#schedule_uri' do
60
+ it 'returns uri of schedule that was executed' do
61
+ expect(@execution.schedule_uri).to eq '/gdc/projects/tk3b994vmdpcb0xjwexc9moen8t5bpiw/schedules/54f08d1de4b0c9cbdcb0f323'
62
+ end
63
+ end
64
+
65
+ describe '#running?' do
66
+ it 'returns false if executione is already finished' do
67
+ expect(@execution.running?).to be_falsy
68
+ end
69
+
70
+ it 'returns true if executione is currently finished' do
71
+ @data['execution']['status'] = 'RUNNING'
72
+ running_execution = GoodData::Execution.new(@data)
73
+ expect(running_execution.running?).to be_truthy
74
+ end
75
+ end
76
+
77
+ describe '#started' do
78
+ it 'returns time when execution started' do
79
+ expect(@execution.started.class).to eq Time
80
+ expect(@execution.started.to_s).to eq '2015-02-27 15:44:21 UTC'
81
+ end
82
+ end
83
+
84
+ describe '#status' do
85
+ it 'returns :ok for finished execution' do
86
+ expect(@execution.status).to eq :ok
87
+ end
88
+ end
89
+
90
+ describe '#uri' do
91
+ it 'returns time when execution started' do
92
+ expect(@execution.uri).to eq '/gdc/projects/tk3b994vmdpcb0xjwexc9moen8t5bpiw/schedules/54f08d1de4b0c9cbdcb0f323/executions/54f090d5e4b0c9cbdcb0f45b'
93
+ end
94
+ end
95
+
96
+ describe '#duration' do
97
+ it 'returns time it took to run execution' do
98
+ expect(@execution.duration).to eq 207.624
99
+ end
100
+
101
+ it 'returns nil if it is not finished' do
102
+ @data['execution']['status'] = 'RUNNING'
103
+ @data['execution']['endTime'] = nil
104
+ running_execution = GoodData::Execution.new(@data)
105
+ expect(running_execution.duration.class).to eq Float
106
+ end
107
+ end
108
+ end