gooddata 0.6.20 → 0.6.22

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 (316) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -1
  3. data/DEPENDENCIES.md +816 -0
  4. data/LICENSE +1 -1
  5. data/LICENSE.rb +5 -0
  6. data/Rakefile +74 -22
  7. data/dependency_decisions.yml +102 -0
  8. data/gooddata.gemspec +39 -38
  9. data/lib/gooddata.rb +4 -0
  10. data/lib/gooddata/app/app.rb +4 -0
  11. data/lib/gooddata/bricks/base_downloader.rb +5 -1
  12. data/lib/gooddata/bricks/brick.rb +4 -0
  13. data/lib/gooddata/bricks/bricks.rb +5 -0
  14. data/lib/gooddata/bricks/middleware/aws_middleware.rb +5 -0
  15. data/lib/gooddata/bricks/middleware/base_middleware.rb +5 -0
  16. data/lib/gooddata/bricks/middleware/bench_middleware.rb +5 -0
  17. data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +5 -0
  18. data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +6 -0
  19. data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +6 -0
  20. data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +6 -0
  21. data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +6 -0
  22. data/lib/gooddata/bricks/middleware/logger_middleware.rb +5 -0
  23. data/lib/gooddata/bricks/middleware/middleware.rb +5 -0
  24. data/lib/gooddata/bricks/middleware/restforce_middleware.rb +4 -0
  25. data/lib/gooddata/bricks/middleware/stdout_middleware.rb +5 -0
  26. data/lib/gooddata/bricks/middleware/twitter_middleware.rb +5 -0
  27. data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +4 -0
  28. data/lib/gooddata/bricks/pipeline.rb +4 -0
  29. data/lib/gooddata/bricks/utils.rb +4 -0
  30. data/lib/gooddata/cli/cli.rb +4 -0
  31. data/lib/gooddata/cli/commands/api_cmd.rb +4 -0
  32. data/lib/gooddata/cli/commands/auth_cmd.rb +4 -0
  33. data/lib/gooddata/cli/commands/console_cmd.rb +4 -0
  34. data/lib/gooddata/cli/commands/domain_cmd.rb +4 -0
  35. data/lib/gooddata/cli/commands/process_cmd.rb +4 -0
  36. data/lib/gooddata/cli/commands/project_cmd.rb +4 -0
  37. data/lib/gooddata/cli/commands/projects_cmd.rb +4 -0
  38. data/lib/gooddata/cli/commands/run_ruby_cmd.rb +4 -0
  39. data/lib/gooddata/cli/commands/scaffold_cmd.rb +4 -0
  40. data/lib/gooddata/cli/commands/user_cmd.rb +4 -0
  41. data/lib/gooddata/cli/hooks.rb +4 -0
  42. data/lib/gooddata/cli/shared.rb +4 -0
  43. data/lib/gooddata/cli/terminal.rb +4 -0
  44. data/lib/gooddata/client.rb +4 -0
  45. data/lib/gooddata/commands/api.rb +4 -0
  46. data/lib/gooddata/commands/auth.rb +4 -0
  47. data/lib/gooddata/commands/base.rb +4 -0
  48. data/lib/gooddata/commands/commands.rb +5 -0
  49. data/lib/gooddata/commands/datasets.rb +5 -1
  50. data/lib/gooddata/commands/datawarehouse.rb +4 -0
  51. data/lib/gooddata/commands/domain.rb +4 -0
  52. data/lib/gooddata/commands/process.rb +4 -0
  53. data/lib/gooddata/commands/project.rb +7 -9
  54. data/lib/gooddata/commands/projects.rb +4 -0
  55. data/lib/gooddata/commands/role.rb +4 -0
  56. data/lib/gooddata/commands/runners.rb +4 -0
  57. data/lib/gooddata/commands/scaffold.rb +4 -0
  58. data/lib/gooddata/commands/user.rb +4 -0
  59. data/lib/gooddata/connection.rb +83 -0
  60. data/lib/gooddata/core/core.rb +4 -0
  61. data/lib/gooddata/core/logging.rb +4 -0
  62. data/lib/gooddata/core/nil_logger.rb +4 -0
  63. data/lib/gooddata/core/project.rb +4 -0
  64. data/lib/gooddata/core/rest.rb +14 -16
  65. data/lib/gooddata/core/user.rb +4 -0
  66. data/lib/gooddata/data/data.rb +4 -0
  67. data/lib/gooddata/data/guesser.rb +4 -0
  68. data/lib/gooddata/exceptions/attr_element_not_found.rb +4 -0
  69. data/lib/gooddata/exceptions/command_failed.rb +4 -0
  70. data/lib/gooddata/exceptions/exceptions.rb +4 -0
  71. data/lib/gooddata/exceptions/execution_limit_exceeded.rb +4 -0
  72. data/lib/gooddata/exceptions/filter_maqlization.rb +16 -0
  73. data/lib/gooddata/exceptions/malformed_user.rb +15 -0
  74. data/lib/gooddata/exceptions/no_project_error.rb +4 -0
  75. data/lib/gooddata/exceptions/object_migration.rb +28 -0
  76. data/lib/gooddata/exceptions/project_not_found.rb +5 -0
  77. data/lib/gooddata/exceptions/uncomputable_report.rb +5 -0
  78. data/lib/gooddata/exceptions/user_in_different_domain.rb +4 -0
  79. data/lib/gooddata/exceptions/validation_error.rb +4 -0
  80. data/lib/gooddata/extensions/big_decimal.rb +4 -0
  81. data/lib/gooddata/extensions/enumerable.rb +4 -0
  82. data/lib/gooddata/extensions/extensions.rb +4 -0
  83. data/lib/gooddata/extensions/false.rb +4 -0
  84. data/lib/gooddata/extensions/hash.rb +4 -0
  85. data/lib/gooddata/extensions/nil.rb +4 -0
  86. data/lib/gooddata/extensions/numeric.rb +4 -0
  87. data/lib/gooddata/extensions/object.rb +4 -0
  88. data/lib/gooddata/extensions/symbol.rb +4 -0
  89. data/lib/gooddata/extensions/true.rb +4 -0
  90. data/lib/gooddata/extract.rb +4 -0
  91. data/lib/gooddata/goodzilla/goodzilla.rb +87 -77
  92. data/lib/gooddata/helpers/auth_helpers.rb +6 -2
  93. data/lib/gooddata/helpers/csv_helper.rb +4 -0
  94. data/lib/gooddata/helpers/data_helper.rb +4 -0
  95. data/lib/gooddata/helpers/global_helpers.rb +35 -6
  96. data/lib/gooddata/helpers/global_helpers_params.rb +34 -7
  97. data/lib/gooddata/helpers/helpers.rb +4 -0
  98. data/lib/gooddata/mixins/author.rb +4 -0
  99. data/lib/gooddata/mixins/content_getter.rb +4 -0
  100. data/lib/gooddata/mixins/content_property_reader.rb +4 -0
  101. data/lib/gooddata/mixins/content_property_writer.rb +4 -0
  102. data/lib/gooddata/mixins/contributor.rb +4 -0
  103. data/lib/gooddata/mixins/data_getter.rb +4 -0
  104. data/lib/gooddata/mixins/data_property_reader.rb +4 -0
  105. data/lib/gooddata/mixins/data_property_writer.rb +4 -0
  106. data/lib/gooddata/mixins/inspector.rb +4 -0
  107. data/lib/gooddata/mixins/is_attribute.rb +4 -0
  108. data/lib/gooddata/mixins/is_dimension.rb +4 -0
  109. data/lib/gooddata/mixins/is_fact.rb +4 -0
  110. data/lib/gooddata/mixins/is_label.rb +4 -0
  111. data/lib/gooddata/mixins/links.rb +4 -0
  112. data/lib/gooddata/mixins/md_finders.rb +4 -0
  113. data/lib/gooddata/mixins/md_id_to_uri.rb +4 -0
  114. data/lib/gooddata/mixins/md_json.rb +4 -0
  115. data/lib/gooddata/mixins/md_lock.rb +4 -0
  116. data/lib/gooddata/mixins/md_object_id.rb +5 -1
  117. data/lib/gooddata/mixins/md_object_indexer.rb +4 -0
  118. data/lib/gooddata/mixins/md_object_query.rb +4 -0
  119. data/lib/gooddata/mixins/md_relations.rb +4 -0
  120. data/lib/gooddata/mixins/meta_getter.rb +4 -0
  121. data/lib/gooddata/mixins/meta_property_reader.rb +4 -0
  122. data/lib/gooddata/mixins/meta_property_writer.rb +4 -0
  123. data/lib/gooddata/mixins/mixins.rb +4 -0
  124. data/lib/gooddata/mixins/not_attribute.rb +4 -0
  125. data/lib/gooddata/mixins/not_exportable.rb +4 -0
  126. data/lib/gooddata/mixins/not_fact.rb +4 -0
  127. data/lib/gooddata/mixins/not_label.rb +4 -0
  128. data/lib/gooddata/mixins/not_metric.rb +6 -0
  129. data/lib/gooddata/mixins/obj_id.rb +4 -0
  130. data/lib/gooddata/mixins/rest_getters.rb +4 -0
  131. data/lib/gooddata/mixins/rest_resource.rb +4 -0
  132. data/lib/gooddata/mixins/root_key_getter.rb +4 -0
  133. data/lib/gooddata/mixins/root_key_setter.rb +4 -0
  134. data/lib/gooddata/mixins/timestamps.rb +4 -0
  135. data/lib/gooddata/models/blueprint/anchor_field.rb +4 -0
  136. data/lib/gooddata/models/blueprint/attribute_field.rb +4 -0
  137. data/lib/gooddata/models/blueprint/blueprint.rb +4 -0
  138. data/lib/gooddata/models/blueprint/blueprint_field.rb +4 -0
  139. data/lib/gooddata/models/blueprint/dashboard_builder.rb +4 -0
  140. data/lib/gooddata/models/blueprint/dataset_blueprint.rb +6 -0
  141. data/lib/gooddata/models/blueprint/date_dimension.rb +4 -0
  142. data/lib/gooddata/models/blueprint/fact_field.rb +4 -0
  143. data/lib/gooddata/models/blueprint/label_field.rb +4 -0
  144. data/lib/gooddata/models/blueprint/project_blueprint.rb +6 -0
  145. data/lib/gooddata/models/blueprint/project_builder.rb +4 -0
  146. data/lib/gooddata/models/blueprint/reference_field.rb +4 -0
  147. data/lib/gooddata/models/blueprint/schema_blueprint.rb +4 -0
  148. data/lib/gooddata/models/blueprint/schema_builder.rb +4 -0
  149. data/lib/gooddata/models/blueprint/to_manifest.rb +17 -1
  150. data/lib/gooddata/models/blueprint/to_wire.rb +4 -0
  151. data/lib/gooddata/models/datawarehouse.rb +5 -0
  152. data/lib/gooddata/models/domain.rb +25 -7
  153. data/lib/gooddata/models/execution.rb +4 -0
  154. data/lib/gooddata/models/execution_detail.rb +4 -0
  155. data/lib/gooddata/models/from_wire.rb +4 -0
  156. data/lib/gooddata/models/invitation.rb +4 -0
  157. data/lib/gooddata/models/links.rb +4 -0
  158. data/lib/gooddata/models/membership.rb +4 -0
  159. data/lib/gooddata/models/metadata.rb +37 -10
  160. data/lib/gooddata/models/metadata/attribute.rb +6 -0
  161. data/lib/gooddata/models/metadata/dashboard.rb +54 -16
  162. data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +60 -0
  163. data/lib/gooddata/models/metadata/dashboard/filter_item.rb +15 -0
  164. data/lib/gooddata/models/metadata/dashboard/report_item.rb +51 -0
  165. data/lib/gooddata/models/metadata/dashboard_tab.rb +88 -0
  166. data/lib/gooddata/models/metadata/dataset.rb +4 -0
  167. data/lib/gooddata/models/metadata/dimension.rb +4 -0
  168. data/lib/gooddata/models/metadata/fact.rb +6 -0
  169. data/lib/gooddata/models/metadata/label.rb +15 -0
  170. data/lib/gooddata/models/metadata/metadata.rb +4 -0
  171. data/lib/gooddata/models/metadata/metric.rb +5 -4
  172. data/lib/gooddata/models/metadata/report.rb +62 -16
  173. data/lib/gooddata/models/metadata/report_definition.rb +44 -47
  174. data/lib/gooddata/models/metadata/variable.rb +4 -0
  175. data/lib/gooddata/models/model.rb +85 -36
  176. data/lib/gooddata/models/models.rb +4 -0
  177. data/lib/gooddata/models/module_constants.rb +4 -0
  178. data/lib/gooddata/models/process.rb +4 -0
  179. data/lib/gooddata/models/profile.rb +13 -0
  180. data/lib/gooddata/models/project.rb +173 -92
  181. data/lib/gooddata/models/project_creator.rb +18 -10
  182. data/lib/gooddata/models/project_metadata.rb +4 -0
  183. data/lib/gooddata/models/project_role.rb +4 -0
  184. data/lib/gooddata/models/report_data_result.rb +217 -125
  185. data/lib/gooddata/models/schedule.rb +140 -65
  186. data/lib/gooddata/models/tab_builder.rb +4 -0
  187. data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +4 -0
  188. data/lib/gooddata/models/user_filters/user_filter.rb +4 -0
  189. data/lib/gooddata/models/user_filters/user_filter_builder.rb +98 -56
  190. data/lib/gooddata/models/user_filters/user_filters.rb +4 -0
  191. data/lib/gooddata/models/user_filters/variable_user_filter.rb +4 -0
  192. data/lib/gooddata/rest/client.rb +41 -38
  193. data/lib/gooddata/rest/connection.rb +91 -20
  194. data/lib/gooddata/rest/connections/rest_client_connection.rb +5 -1
  195. data/lib/gooddata/rest/object.rb +9 -1
  196. data/lib/gooddata/rest/object_factory.rb +5 -1
  197. data/lib/gooddata/rest/resource.rb +5 -1
  198. data/lib/gooddata/rest/rest.rb +4 -0
  199. data/lib/gooddata/version.rb +5 -1
  200. data/spec/bricks/bricks_spec.rb +4 -0
  201. data/spec/data/blueprints/test_project_model_spec.json +2 -2
  202. data/spec/data/gooddata_version_process/gooddata_version.rb +6 -0
  203. data/spec/data/hello_world_process/hello_world.rb +6 -0
  204. data/spec/data/manifests/test_project.json +5 -5
  205. data/spec/data/reports/left_attr_report.json +108 -0
  206. data/spec/data/reports/metric_only_one_line.json +83 -0
  207. data/spec/data/reports/report_1.json +197 -0
  208. data/spec/data/reports/top_attr_report.json +108 -0
  209. data/spec/data/ruby_params_process/ruby_params.rb +6 -0
  210. data/spec/data/ruby_process/process.rb +6 -0
  211. data/spec/environment/default.rb +5 -0
  212. data/spec/environment/develop.rb +10 -5
  213. data/spec/environment/environment.rb +4 -0
  214. data/spec/environment/hotfix.rb +5 -1
  215. data/spec/environment/production.rb +4 -0
  216. data/spec/environment/release.rb +4 -0
  217. data/spec/environment/staging.rb +30 -0
  218. data/spec/environment/staging_3.rb +37 -0
  219. data/spec/helpers/blueprint_helper.rb +4 -0
  220. data/spec/helpers/cli_helper.rb +4 -0
  221. data/spec/helpers/connection_helper.rb +24 -17
  222. data/spec/helpers/crypto_helper.rb +6 -0
  223. data/spec/helpers/csv_helper.rb +4 -0
  224. data/spec/helpers/process_helper.rb +5 -1
  225. data/spec/helpers/project_helper.rb +34 -29
  226. data/spec/helpers/schedule_helper.rb +4 -0
  227. data/spec/helpers/spec_helper.rb +4 -0
  228. data/spec/integration/blueprint_updates_spec.rb +28 -20
  229. data/spec/integration/command_datawarehouse_spec.rb +6 -0
  230. data/spec/integration/command_projects_spec.rb +6 -4
  231. data/spec/integration/create_from_template_spec.rb +6 -0
  232. data/spec/integration/create_project_spec.rb +6 -0
  233. data/spec/integration/deprecated_load_spec.rb +58 -0
  234. data/spec/integration/full_process_schedule_spec.rb +9 -0
  235. data/spec/integration/full_project_spec.rb +63 -9
  236. data/spec/integration/over_to_user_filters_spec.rb +7 -2
  237. data/spec/integration/partial_md_export_import_spec.rb +6 -0
  238. data/spec/integration/project_spec.rb +12 -6
  239. data/spec/integration/rest_spec.rb +6 -2
  240. data/spec/integration/schedule_spec.rb +627 -0
  241. data/spec/integration/user_filters_spec.rb +122 -21
  242. data/spec/integration/variables_spec.rb +8 -15
  243. data/spec/logging_in_logging_out_spec.rb +58 -0
  244. data/spec/spec_helper.rb +10 -5
  245. data/spec/unit/bricks/bricks_spec.rb +4 -0
  246. data/spec/unit/bricks/middleware/aws_middelware_spec.rb +4 -0
  247. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +4 -0
  248. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +4 -0
  249. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +4 -0
  250. data/spec/unit/bricks/middleware/logger_middleware_spec.rb +4 -0
  251. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +4 -0
  252. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +4 -0
  253. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +4 -0
  254. data/spec/unit/cli/cli_spec.rb +4 -0
  255. data/spec/unit/cli/commands/cmd_api_spec.rb +4 -0
  256. data/spec/unit/cli/commands/cmd_auth_spec.rb +4 -0
  257. data/spec/unit/cli/commands/cmd_domain_spec.rb +4 -0
  258. data/spec/unit/cli/commands/cmd_process_spec.rb +4 -0
  259. data/spec/unit/cli/commands/cmd_project_spec.rb +4 -0
  260. data/spec/unit/cli/commands/cmd_role_spec.rb +4 -0
  261. data/spec/unit/cli/commands/cmd_run_ruby_spec.rb +4 -0
  262. data/spec/unit/cli/commands/cmd_scaffold_spec.rb +6 -0
  263. data/spec/unit/cli/commands/cmd_user_spec.rb +6 -0
  264. data/spec/unit/commands/command_api_spec.rb +6 -0
  265. data/spec/unit/commands/command_auth_spec.rb +6 -0
  266. data/spec/unit/commands/command_dataset_spec.rb +10 -4
  267. data/spec/unit/commands/command_process_spec.rb +6 -0
  268. data/spec/unit/commands/command_projects_spec.rb +6 -0
  269. data/spec/unit/commands/command_scaffold_spec.rb +6 -0
  270. data/spec/unit/commands/command_user_spec.rb +6 -0
  271. data/spec/unit/core/connection_spec.rb +6 -0
  272. data/spec/unit/core/logging_spec.rb +4 -0
  273. data/spec/unit/core/nil_logger_spec.rb +4 -0
  274. data/spec/unit/core/project_spec.rb +4 -0
  275. data/spec/unit/data/guesser_spec.rb +6 -2
  276. data/spec/unit/extensions/hash_spec.rb +4 -0
  277. data/spec/unit/godzilla/goodzilla_spec.rb +4 -0
  278. data/spec/unit/helpers/csv_helper_spec.rb +4 -0
  279. data/spec/unit/helpers/data_helper_spec.rb +4 -0
  280. data/spec/unit/helpers/global_helpers_spec.rb +54 -0
  281. data/spec/unit/helpers_spec.rb +6 -1
  282. data/spec/unit/models/blueprint/attributes_spec.rb +5 -0
  283. data/spec/unit/models/blueprint/dataset_spec.rb +5 -0
  284. data/spec/unit/models/blueprint/labels_spec.rb +5 -0
  285. data/spec/unit/models/blueprint/project_blueprint_spec.rb +5 -0
  286. data/spec/unit/models/blueprint/reference_spec.rb +5 -0
  287. data/spec/unit/models/blueprint/schema_builder_spec.rb +4 -0
  288. data/spec/unit/models/blueprint/to_wire_spec.rb +5 -0
  289. data/spec/unit/models/domain_spec.rb +9 -7
  290. data/spec/unit/models/execution_spec.rb +6 -0
  291. data/spec/unit/models/from_wire_spec.rb +4 -0
  292. data/spec/unit/models/invitation_spec.rb +4 -0
  293. data/spec/unit/models/membership_spec.rb +4 -0
  294. data/spec/unit/models/metadata_spec.rb +46 -0
  295. data/spec/unit/models/metric_spec.rb +4 -0
  296. data/spec/unit/models/model_spec.rb +4 -0
  297. data/spec/unit/models/params_spec.rb +4 -0
  298. data/spec/unit/models/profile_spec.rb +4 -0
  299. data/spec/unit/models/project_creator_spec.rb +127 -0
  300. data/spec/unit/models/project_role_spec.rb +4 -0
  301. data/spec/unit/models/project_spec.rb +4 -0
  302. data/spec/unit/models/report_result_data_spec.rb +193 -0
  303. data/spec/unit/models/schedule_spec.rb +241 -386
  304. data/spec/unit/models/to_manifest_spec.rb +21 -0
  305. data/spec/unit/models/{unit_project.rb → unit_project_spec.rb} +21 -18
  306. data/spec/unit/models/user_filters_spec.rb +7 -1
  307. data/spec/unit/models/variable_spec.rb +6 -0
  308. data/spec/unit/rest/polling_spec.rb +8 -5
  309. data/spec/unit/rest/resource_spec.rb +4 -0
  310. metadata +190 -129
  311. data/.autotest +0 -2
  312. data/.travis.yml +0 -22
  313. data/examples.rb +0 -69
  314. data/lib/gooddata/models/data_result.rb +0 -38
  315. data/lib/gooddata/models/empty_result.rb +0 -57
  316. data/spec/unit/models/project_creator.rb +0 -73
@@ -1,4 +1,9 @@
1
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
+
2
7
  require 'gooddata'
3
8
 
4
9
  describe GoodData::Model::LabelBlueprintField do
@@ -1,4 +1,9 @@
1
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
+
2
7
  require 'gooddata'
3
8
 
4
9
  describe GoodData::Model::ProjectBlueprint do
@@ -1,4 +1,9 @@
1
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
+
2
7
  require 'gooddata'
3
8
 
4
9
  describe GoodData::Model::ReferenceBlueprintField do
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'pry'
4
8
  require 'gooddata/models/model'
@@ -1,4 +1,9 @@
1
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
+
2
7
  require 'gooddata'
3
8
 
4
9
  include GoodData::Model
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'gooddata/models/domain'
4
8
  require 'gooddata/helpers/csv_helper'
@@ -64,7 +68,7 @@ describe GoodData::Domain do
64
68
  end
65
69
 
66
70
  it 'Accepts pagination options - offset' do
67
- pending('not that useful and takes very long')
71
+ skip('not that useful and takes very long')
68
72
  users = @domain.users(offset: 1)
69
73
  expect(users).to be_instance_of(Array)
70
74
  users.each do |user|
@@ -79,11 +83,11 @@ describe GoodData::Domain do
79
83
  res = @domain.create_users(list)
80
84
 
81
85
  # no errors
82
- expect(res.select { |x| x[:type] == :user_added_to_domain }.count).to eq res.count
86
+ expect(res.select { |x| x[:type] == :successful && x[:action] == :user_added_to_domain }.count).to eq res.count
83
87
 
84
88
  expect(@domain.members?(list.map(&:login)).all?).to be_truthy
85
89
 
86
- res.map { |r| r[:user] }.each do |r|
90
+ res.select { |x| x[:type] == :successful }.map { |r| r[:user] }.each do |r|
87
91
  expect(r).to be_an_instance_of(GoodData::Profile)
88
92
  r.delete
89
93
  end
@@ -122,15 +126,13 @@ describe GoodData::Domain do
122
126
  end
123
127
 
124
128
  it 'updates properties of a profile' do
125
- pending 'Add more users'
126
-
127
129
  user = @domain.users
128
- .reject { |u| u.login == ConnectionHelper::DEFAULT_USERNAME }.sample
130
+ .reject { |u| u.login == ConnectionHelper::DEFAULT_USERNAME }.take(20).sample
129
131
 
130
132
  old_email = user.email
131
133
  old_sso_provider = user.sso_provider || ''
132
134
  user.email = 'john.doe@gooddata.com'
133
- user.sso_provider = user.sso_provider.blank? ? user.sso_provider.reverse : 'some_sso_provider'
135
+ user.sso_provider = user.sso_provider.blank? ? 'some_sso_provider' : user.sso_provider.reverse
134
136
  @domain.update_user(user)
135
137
  updated_user = @domain.find_user_by_login(user.login)
136
138
  expect(updated_user.email).to eq 'john.doe@gooddata.com'
@@ -1,3 +1,9 @@
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
+
1
7
  require 'gooddata/models/schedule'
2
8
 
3
9
  describe GoodData::Execution do
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'gooddata'
4
8
 
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'gooddata/models/invitation'
4
8
 
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'gooddata/models/domain'
4
8
  require 'gooddata/models/membership'
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'gooddata'
4
8
 
@@ -55,4 +59,46 @@ describe GoodData::MdObject do
55
59
  expect(@instance.remove_tag('t').tag_set).to eq %w(a b cg r).to_set
56
60
  end
57
61
  end
62
+
63
+ describe '#deprecated' do
64
+ it 'returns true/false' do
65
+ expect(@instance.deprecated).to be_falsey
66
+ end
67
+ end
68
+
69
+ describe '#deprecated=' do
70
+ it 'sets deprecated flag' do
71
+ expect(@instance.deprecated).to be_falsey
72
+ @instance.deprecated = true
73
+ expect(@instance.deprecated).to be_truthy
74
+ @instance.deprecated = false
75
+ expect(@instance.deprecated).to be_falsey
76
+ @instance.deprecated = 0
77
+ expect(@instance.deprecated).to be_falsey
78
+ @instance.deprecated = 1
79
+ expect(@instance.deprecated).to be_truthy
80
+ end
81
+ end
82
+
83
+ describe '#unlisted' do
84
+ it 'returns true/false' do
85
+ expect(@instance.unlisted).to be_falsey
86
+ end
87
+ end
88
+
89
+ describe '#unlisted?' do
90
+ it 'returns true/false' do
91
+ expect(@instance.unlisted?).to be_falsey
92
+ end
93
+ end
94
+
95
+ describe '#unlisted=' do
96
+ it 'sets unlisted flag' do
97
+ expect(@instance.unlisted).to be_falsey
98
+ @instance.unlisted = true
99
+ expect(@instance.unlisted?).to be_truthy
100
+ @instance.unlisted = false
101
+ expect(@instance.unlisted?).to be_falsey
102
+ end
103
+ end
58
104
  end
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'gooddata/models/metadata/metric'
4
8
 
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'pry'
4
8
  require 'gooddata/models/model'
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'gooddata/models/profile'
4
8
  require 'gooddata/models/domain'
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
 
4
8
  require 'gooddata/models/profile'
@@ -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
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'gooddata/models/project'
4
8
  require 'gooddata/models/project_role'
@@ -1,4 +1,8 @@
1
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.
2
6
 
3
7
  require 'gooddata'
4
8
 
@@ -0,0 +1,193 @@
1
+ require 'gooddata/models/report_data_result'
2
+
3
+ describe GoodData::ReportDataResult do
4
+
5
+ before(:each) do
6
+ data = JSON.parse(File.read('./spec/data/reports/report_1.json'))
7
+ @result = GoodData::ReportDataResult.from_xtab(data)
8
+ @result2 = GoodData::ReportDataResult.from_xtab(data)
9
+ end
10
+
11
+ it 'should compute columns' do
12
+ expect(@result.to_a).to eq [[nil, "kolin", "praha", "varsava"],
13
+ [nil, "sum of Age", "sum of Age", "sum of Age"],
14
+ ["jirka", 25, nil, nil],
15
+ ["petr", nil, nil, 15],
16
+ ["tomas", nil, 25, nil]]
17
+ end
18
+
19
+ it 'should compute columns' do
20
+ expect(@result.left_headers).to eq [["jirka"],
21
+ ["petr"],
22
+ ["tomas"]]
23
+ end
24
+
25
+ it 'should compute columns' do
26
+ expect(@result.top_headers).to eq [["kolin", "praha", "varsava"],
27
+ ["sum of Age", "sum of Age", "sum of Age"]]
28
+ end
29
+
30
+ describe '#slice' do
31
+ it 'slice on zeroes should be equal to original' do
32
+ expect(@result.slice(0, 0)).to eq @result
33
+ end
34
+
35
+ it 'slice on data should return just data' do
36
+ expect(@result.slice(2, 1).to_a).to eq [[25, nil, nil],
37
+ [nil, nil, 15],
38
+ [nil, 25, nil]]
39
+ end
40
+
41
+ it 'should return data result with correct size' do
42
+ expect(@result.slice(2, 1).size).to eq [3, 3]
43
+ end
44
+
45
+ it 'should return data result with correct headers' do
46
+ expect(@result.left_headers).to eq [["jirka"], ["petr"], ["tomas"]]
47
+ expect(@result.top_headers).to eq [["kolin", "praha", "varsava"],
48
+ ["sum of Age", "sum of Age", "sum of Age"]]
49
+ end
50
+
51
+ end
52
+
53
+ describe '#without_left_headers' do
54
+ it 'should return data result without left headers' do
55
+ expect(@result.without_left_headers.to_a).to eq [["kolin", "praha", "varsava"],
56
+ ["sum of Age", "sum of Age", "sum of Age"],
57
+ [25, nil, nil],
58
+ [nil, nil, 15],
59
+ [nil, 25, nil]]
60
+ end
61
+
62
+ it 'should return correct size' do
63
+ expect(@result.without_left_headers.size).to eq [5, 3]
64
+ end
65
+
66
+ it 'should return correct left headers' do
67
+ expect(@result.without_top_headers.top_headers).to eq nil
68
+ end
69
+ end
70
+
71
+ describe '#without_top_headers' do
72
+ it 'should return data result without left headers' do
73
+ expect(@result.without_top_headers.to_a).to eq [["jirka", 25, nil, nil],
74
+ ["petr", nil, nil, 15],
75
+ ["tomas", nil, 25, nil]]
76
+ end
77
+
78
+ it 'should return correct size' do
79
+ expect(@result.without_top_headers.size).to eq [3, 4]
80
+ end
81
+
82
+ it 'should return correct left headers' do
83
+ expect(@result.without_top_headers.left_headers).to eq [["jirka"],
84
+ ["petr"],
85
+ ["tomas"]]
86
+ end
87
+
88
+ it 'should return correct top headers' do
89
+ expect(@result.without_top_headers.top_headers).to eq nil
90
+ end
91
+ end
92
+
93
+ it 'should work with left attribute reports' do
94
+ data = JSON.parse(File.read('./spec/data/reports/left_attr_report.json'))
95
+ result = GoodData::ReportDataResult.from_xtab(data)
96
+ expect(result.left_headers).to eq [["jirka"], ["petr"], ["tomas"]]
97
+ expect(result.size).to eq [4, 2]
98
+ expect(result.data_size).to eq [3, 1]
99
+ end
100
+
101
+ it 'should work with left attribute reports' do
102
+ data = JSON.parse(File.read('./spec/data/reports/top_attr_report.json'))
103
+ result = GoodData::ReportDataResult.from_xtab(data)
104
+ expect(result.size).to eq [2, 4]
105
+ expect(result.data_size).to eq [1, 3]
106
+ expect(result.left_headers).to eq [["Values"]]
107
+ expect(result.top_headers).to eq [["jirka", "petr", "tomas"]]
108
+ end
109
+
110
+ it 'should fail when comparing two different reports' do
111
+ data = JSON.parse(File.read('./spec/data/reports/left_attr_report.json'))
112
+ a = GoodData::ReportDataResult.from_xtab(data)
113
+ data = JSON.parse(File.read('./spec/data/reports/top_attr_report.json'))
114
+ b = GoodData::ReportDataResult.from_xtab(data)
115
+ expect(a == b).to be_falsey
116
+ end
117
+
118
+ describe '#size' do
119
+ it 'should compute columns' do
120
+ expect(@result.size).to eq [5, 4]
121
+ end
122
+
123
+ it 'should compute columns' do
124
+ expect(@result.size).to eq @result2.size
125
+ end
126
+ end
127
+
128
+ describe '#data' do
129
+ it 'should return just data portion' do
130
+ expect(@result.data.is_a?(GoodData::ReportDataResult)).to be_truthy
131
+ expect(@result.data.to_a).to eq [[25, nil, nil],
132
+ [nil, nil, 15],
133
+ [nil, 25, nil]]
134
+ end
135
+ end
136
+
137
+ describe '#[]' do
138
+ it 'should return correct line' do
139
+ expect(@result[2]).to eq ['jirka', 25, nil, nil]
140
+ end
141
+ end
142
+
143
+ describe '#column' do
144
+ it 'should return correct line' do
145
+ expect(@result.column(2)).to eq ["praha", "sum of Age", nil, nil, 25]
146
+ end
147
+ end
148
+
149
+ describe '#map' do
150
+ it 'should iterate over rows' do
151
+ expect(@result.each.map {|row| [1]}).to eq [[1], [1], [1], [1], [1]]
152
+ end
153
+ end
154
+
155
+ describe '#transpose' do
156
+ it 'should transpose' do
157
+ expect(@result.transpose.to_a).to eq @result.to_a.transpose
158
+ expect(@result.transpose.to_a).to eq [[nil, nil, "jirka", "petr", "tomas"],
159
+ ["kolin", "sum of Age", 25, nil, nil],
160
+ ["praha", "sum of Age", nil, nil, 25],
161
+ ["varsava", "sum of Age", nil, 15, nil]]
162
+ end
163
+ end
164
+
165
+ describe '#diff' do
166
+ it 'should support diffing' do
167
+ data = JSON.parse(File.read('./spec/data/reports/left_attr_report.json'))
168
+ a = GoodData::ReportDataResult.from_xtab(data)
169
+ c = GoodData::ReportDataResult.from_xtab(data)
170
+ data = JSON.parse(File.read('./spec/data/reports/top_attr_report.json'))
171
+ b = GoodData::ReportDataResult.from_xtab(data)
172
+ expect {a - b}.to raise_exception
173
+ expect(a - c).to be_empty
174
+ end
175
+ end
176
+
177
+ describe 'one line reports' do
178
+ it 'should work with one line metric. No attribtues.' do
179
+ data = JSON.parse(File.read('./spec/data/reports/metric_only_one_line.json'))
180
+ a = GoodData::ReportDataResult.from_xtab(data)
181
+ expect(a.to_a).to eq [[nil, "sum of Age"],
182
+ ["sum of Age", 65]]
183
+
184
+ expect(a.data.to_a).to eq [[65]]
185
+ expect(a.left_headers).to eq [["sum of Age"]]
186
+ expect(a.top_headers).to eq [["sum of Age"]]
187
+
188
+ expect(a.without_top_headers.to_a).to eq [["sum of Age", 65]]
189
+ expect(a.without_left_headers.to_a).to eq [["sum of Age"], [65]]
190
+ end
191
+ end
192
+ end
193
+