gooddata 0.6.54 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (325) hide show
  1. checksums.yaml +5 -5
  2. data/.document +0 -0
  3. data/.editorconfig +0 -0
  4. data/.travis.yml +9 -0
  5. data/.yardopts +0 -0
  6. data/CHANGELOG.md +7 -0
  7. data/CLI.md +0 -0
  8. data/Gemfile +0 -0
  9. data/Guardfile +0 -0
  10. data/LICENSE +0 -0
  11. data/LICENSE.rb +0 -0
  12. data/TODO.md +0 -0
  13. data/dependency_decisions.yml +0 -0
  14. data/gooddata.gemspec +1 -1
  15. data/lib/gooddata/app/app.rb +0 -0
  16. data/lib/gooddata/bricks/brick.rb +0 -0
  17. data/lib/gooddata/bricks/bricks.rb +0 -0
  18. data/lib/gooddata/bricks/middleware/base_middleware.rb +0 -0
  19. data/lib/gooddata/bricks/middleware/bench_middleware.rb +0 -0
  20. data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +0 -0
  21. data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +0 -0
  22. data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +0 -0
  23. data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +0 -0
  24. data/lib/gooddata/bricks/middleware/middleware.rb +0 -0
  25. data/lib/gooddata/bricks/middleware/stdout_middleware.rb +0 -0
  26. data/lib/gooddata/bricks/middleware/twitter_middleware.rb +0 -0
  27. data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +0 -0
  28. data/lib/gooddata/bricks/pipeline.rb +0 -0
  29. data/lib/gooddata/bricks/utils.rb +0 -0
  30. data/lib/gooddata/cli/cli.rb +0 -0
  31. data/lib/gooddata/cli/commands/auth_cmd.rb +0 -0
  32. data/lib/gooddata/cli/commands/domain_cmd.rb +0 -0
  33. data/lib/gooddata/cli/commands/project_cmd.rb +0 -0
  34. data/lib/gooddata/cli/hooks.rb +0 -0
  35. data/lib/gooddata/cli/shared.rb +0 -0
  36. data/lib/gooddata/cli/terminal.rb +0 -0
  37. data/lib/gooddata/commands/api.rb +0 -0
  38. data/lib/gooddata/commands/auth.rb +0 -0
  39. data/lib/gooddata/commands/base.rb +0 -0
  40. data/lib/gooddata/commands/commands.rb +0 -0
  41. data/lib/gooddata/commands/datasets.rb +0 -0
  42. data/lib/gooddata/commands/datawarehouse.rb +0 -0
  43. data/lib/gooddata/commands/domain.rb +0 -0
  44. data/lib/gooddata/commands/process.rb +0 -0
  45. data/lib/gooddata/commands/project.rb +0 -0
  46. data/lib/gooddata/commands/projects.rb +0 -0
  47. data/lib/gooddata/commands/role.rb +0 -0
  48. data/lib/gooddata/commands/runners.rb +0 -0
  49. data/lib/gooddata/commands/scaffold.rb +0 -0
  50. data/lib/gooddata/commands/user.rb +0 -0
  51. data/lib/gooddata/connection.rb +0 -0
  52. data/lib/gooddata/core/core.rb +0 -0
  53. data/lib/gooddata/core/logging.rb +0 -0
  54. data/lib/gooddata/core/nil_logger.rb +0 -0
  55. data/lib/gooddata/core/project.rb +0 -0
  56. data/lib/gooddata/core/rest.rb +0 -0
  57. data/lib/gooddata/core/user.rb +0 -0
  58. data/lib/gooddata/data/data.rb +0 -0
  59. data/lib/gooddata/data/guesser.rb +0 -0
  60. data/lib/gooddata/exceptions/attr_element_not_found.rb +0 -0
  61. data/lib/gooddata/exceptions/command_failed.rb +0 -0
  62. data/lib/gooddata/exceptions/exceptions.rb +0 -0
  63. data/lib/gooddata/exceptions/execution_limit_exceeded.rb +0 -0
  64. data/lib/gooddata/exceptions/export_clone.rb +0 -0
  65. data/lib/gooddata/exceptions/filter_maqlization.rb +0 -0
  66. data/lib/gooddata/exceptions/import_clone.rb +0 -0
  67. data/lib/gooddata/exceptions/malformed_user.rb +0 -0
  68. data/lib/gooddata/exceptions/maql_execution.rb +0 -0
  69. data/lib/gooddata/exceptions/object_migration.rb +0 -0
  70. data/lib/gooddata/exceptions/project_not_found.rb +0 -0
  71. data/lib/gooddata/exceptions/segment_not_empty.rb +0 -0
  72. data/lib/gooddata/exceptions/uncomputable_report.rb +0 -0
  73. data/lib/gooddata/exceptions/user_in_different_domain.rb +0 -0
  74. data/lib/gooddata/exceptions/validation_error.rb +0 -0
  75. data/lib/gooddata/extensions/big_decimal.rb +0 -0
  76. data/lib/gooddata/extensions/class.rb +0 -0
  77. data/lib/gooddata/extensions/extensions.rb +0 -0
  78. data/lib/gooddata/extensions/false.rb +0 -0
  79. data/lib/gooddata/extensions/hash.rb +0 -0
  80. data/lib/gooddata/extensions/integer.rb +0 -0
  81. data/lib/gooddata/extensions/nil.rb +0 -0
  82. data/lib/gooddata/extensions/numeric.rb +0 -0
  83. data/lib/gooddata/extensions/object.rb +0 -0
  84. data/lib/gooddata/extensions/string.rb +0 -0
  85. data/lib/gooddata/extensions/symbol.rb +0 -0
  86. data/lib/gooddata/extensions/true.rb +0 -0
  87. data/lib/gooddata/extract.rb +0 -0
  88. data/lib/gooddata/goodzilla/goodzilla.rb +0 -0
  89. data/lib/gooddata/helpers/auth_helpers.rb +0 -0
  90. data/lib/gooddata/helpers/csv_helper.rb +0 -0
  91. data/lib/gooddata/helpers/erb_helper.rb +0 -0
  92. data/lib/gooddata/helpers/global_helpers.rb +0 -0
  93. data/lib/gooddata/helpers/helpers.rb +0 -0
  94. data/lib/gooddata/lcm/actions/actions.rb +0 -0
  95. data/lib/gooddata/lcm/actions/base_action.rb +0 -0
  96. data/lib/gooddata/lcm/actions/collect_data_product.rb +4 -9
  97. data/lib/gooddata/lcm/actions/collect_segments.rb +2 -1
  98. data/lib/gooddata/lcm/actions/collect_users_brick_users.rb +46 -0
  99. data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +8 -22
  100. data/lib/gooddata/lcm/actions/synchronize_users.rb +17 -5
  101. data/lib/gooddata/lcm/data/create_lcm_release.sql.erb +0 -0
  102. data/lib/gooddata/lcm/data/insert_into_lcm_release.sql.erb +0 -0
  103. data/lib/gooddata/lcm/data/select_from_lcm_release.sql.erb +0 -0
  104. data/lib/gooddata/lcm/data/update_lcm_release.sql.erb +0 -0
  105. data/lib/gooddata/lcm/dsl/dsl.rb +0 -0
  106. data/lib/gooddata/lcm/dsl/params_dsl.rb +0 -0
  107. data/lib/gooddata/lcm/helpers/helpers.rb +0 -0
  108. data/lib/gooddata/lcm/lcm2.rb +2 -0
  109. data/lib/gooddata/lcm/types/base_type.rb +0 -0
  110. data/lib/gooddata/lcm/types/class/ads_client.rb +0 -0
  111. data/lib/gooddata/lcm/types/class/class.rb +0 -0
  112. data/lib/gooddata/lcm/types/class/gd_client.rb +0 -0
  113. data/lib/gooddata/lcm/types/class/types.rb +0 -0
  114. data/lib/gooddata/lcm/types/complex/complex.rb +0 -0
  115. data/lib/gooddata/lcm/types/complex/release_query.rb +0 -0
  116. data/lib/gooddata/lcm/types/complex/tokens.rb +0 -0
  117. data/lib/gooddata/lcm/types/complex/types.rb +0 -0
  118. data/lib/gooddata/lcm/types/complex/users_brick_config.rb +32 -0
  119. data/lib/gooddata/lcm/types/param.rb +0 -0
  120. data/lib/gooddata/lcm/types/scalar/bool.rb +0 -0
  121. data/lib/gooddata/lcm/types/scalar/hash.rb +0 -0
  122. data/lib/gooddata/lcm/types/scalar/integer.rb +0 -0
  123. data/lib/gooddata/lcm/types/scalar/object.rb +0 -0
  124. data/lib/gooddata/lcm/types/scalar/string.rb +0 -0
  125. data/lib/gooddata/lcm/types/scalar/types.rb +0 -0
  126. data/lib/gooddata/lcm/types/special/types.rb +0 -0
  127. data/lib/gooddata/lcm/types/types.rb +0 -0
  128. data/lib/gooddata/lcm/user_bricks_helper.rb +32 -0
  129. data/lib/gooddata/mixins/author.rb +0 -0
  130. data/lib/gooddata/mixins/content_getter.rb +0 -0
  131. data/lib/gooddata/mixins/content_property_reader.rb +0 -0
  132. data/lib/gooddata/mixins/content_property_writer.rb +0 -0
  133. data/lib/gooddata/mixins/contributor.rb +0 -0
  134. data/lib/gooddata/mixins/data_getter.rb +0 -0
  135. data/lib/gooddata/mixins/data_property_reader.rb +0 -0
  136. data/lib/gooddata/mixins/data_property_writer.rb +0 -0
  137. data/lib/gooddata/mixins/inspector.rb +0 -0
  138. data/lib/gooddata/mixins/is_attribute.rb +0 -0
  139. data/lib/gooddata/mixins/is_dimension.rb +0 -0
  140. data/lib/gooddata/mixins/is_fact.rb +0 -0
  141. data/lib/gooddata/mixins/is_folder.rb +0 -0
  142. data/lib/gooddata/mixins/is_label.rb +0 -0
  143. data/lib/gooddata/mixins/links.rb +0 -0
  144. data/lib/gooddata/mixins/md_grantees.rb +0 -0
  145. data/lib/gooddata/mixins/md_lock.rb +0 -0
  146. data/lib/gooddata/mixins/md_object_id.rb +0 -0
  147. data/lib/gooddata/mixins/md_relations.rb +0 -0
  148. data/lib/gooddata/mixins/meta_getter.rb +0 -0
  149. data/lib/gooddata/mixins/meta_property_reader.rb +0 -0
  150. data/lib/gooddata/mixins/meta_property_writer.rb +0 -0
  151. data/lib/gooddata/mixins/mixins.rb +0 -0
  152. data/lib/gooddata/mixins/not_attribute.rb +0 -0
  153. data/lib/gooddata/mixins/not_exportable.rb +0 -0
  154. data/lib/gooddata/mixins/not_fact.rb +0 -0
  155. data/lib/gooddata/mixins/not_group.rb +0 -0
  156. data/lib/gooddata/mixins/not_label.rb +0 -0
  157. data/lib/gooddata/mixins/not_metric.rb +0 -0
  158. data/lib/gooddata/mixins/obj_id.rb +0 -0
  159. data/lib/gooddata/mixins/rest_getters.rb +0 -0
  160. data/lib/gooddata/mixins/rest_resource.rb +0 -0
  161. data/lib/gooddata/mixins/root_key_getter.rb +0 -0
  162. data/lib/gooddata/mixins/root_key_setter.rb +0 -0
  163. data/lib/gooddata/mixins/timestamps.rb +0 -0
  164. data/lib/gooddata/mixins/to_json.rb +0 -0
  165. data/lib/gooddata/mixins/uri_getter.rb +0 -0
  166. data/lib/gooddata/models/ads_output_stage.rb +0 -0
  167. data/lib/gooddata/models/automated_data_distribution.rb +0 -0
  168. data/lib/gooddata/models/blueprint/anchor_field.rb +0 -0
  169. data/lib/gooddata/models/blueprint/attribute_field.rb +0 -0
  170. data/lib/gooddata/models/blueprint/blueprint.rb +0 -0
  171. data/lib/gooddata/models/blueprint/blueprint_field.rb +0 -0
  172. data/lib/gooddata/models/blueprint/dashboard_builder.rb +0 -0
  173. data/lib/gooddata/models/blueprint/dataset_blueprint.rb +0 -0
  174. data/lib/gooddata/models/blueprint/fact_field.rb +0 -0
  175. data/lib/gooddata/models/blueprint/label_field.rb +0 -0
  176. data/lib/gooddata/models/blueprint/reference_field.rb +0 -0
  177. data/lib/gooddata/models/blueprint/schema_blueprint.rb +0 -0
  178. data/lib/gooddata/models/blueprint/schema_builder.rb +0 -0
  179. data/lib/gooddata/models/blueprint/to_manifest.rb +0 -0
  180. data/lib/gooddata/models/channel_configuration.rb +0 -0
  181. data/lib/gooddata/models/client_synchronization_result.rb +0 -0
  182. data/lib/gooddata/models/client_synchronization_result_details.rb +0 -0
  183. data/lib/gooddata/models/datawarehouse.rb +0 -0
  184. data/lib/gooddata/models/execution.rb +0 -0
  185. data/lib/gooddata/models/execution_detail.rb +0 -0
  186. data/lib/gooddata/models/invitation.rb +0 -0
  187. data/lib/gooddata/models/links.rb +0 -0
  188. data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +0 -0
  189. data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +0 -0
  190. data/lib/gooddata/models/metadata/dashboard/filter_item.rb +0 -0
  191. data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +0 -0
  192. data/lib/gooddata/models/metadata/dashboard/headline_item.rb +0 -0
  193. data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +0 -0
  194. data/lib/gooddata/models/metadata/dashboard/report_item.rb +0 -0
  195. data/lib/gooddata/models/metadata/dashboard/text_item.rb +0 -0
  196. data/lib/gooddata/models/metadata/dashboard_tab.rb +0 -0
  197. data/lib/gooddata/models/metadata/label.rb +0 -0
  198. data/lib/gooddata/models/metadata/metadata.rb +0 -0
  199. data/lib/gooddata/models/metadata/report.rb +10 -0
  200. data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +0 -0
  201. data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +0 -0
  202. data/lib/gooddata/models/models.rb +0 -0
  203. data/lib/gooddata/models/module_constants.rb +0 -0
  204. data/lib/gooddata/models/notification_rule.rb +0 -0
  205. data/lib/gooddata/models/project_log_formatter.rb +0 -0
  206. data/lib/gooddata/models/project_metadata.rb +0 -0
  207. data/lib/gooddata/models/tab_builder.rb +0 -0
  208. data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +0 -0
  209. data/lib/gooddata/models/user_filters/user_filter_builder.rb +24 -12
  210. data/lib/gooddata/models/user_filters/user_filters.rb +0 -0
  211. data/lib/gooddata/rest/README.md +0 -0
  212. data/lib/gooddata/rest/connection.rb +15 -3
  213. data/lib/gooddata/rest/object.rb +0 -0
  214. data/lib/gooddata/rest/resource.rb +0 -0
  215. data/lib/gooddata/rest/rest.rb +0 -0
  216. data/lib/gooddata/version.rb +1 -1
  217. data/lib/templates/bricks/brick.rb.erb +0 -0
  218. data/lib/templates/bricks/main.rb.erb +0 -0
  219. data/lib/templates/project/Goodfile.erb +0 -0
  220. data/lib/templates/project/data/commits.csv +0 -0
  221. data/lib/templates/project/data/devs.csv +0 -0
  222. data/lib/templates/project/data/repos.csv +0 -0
  223. data/lib/templates/project/model/model.rb.erb +0 -0
  224. data/spec/.rubocop.yml +0 -0
  225. data/spec/bricks/bricks_spec.rb +0 -0
  226. data/spec/bricks/default-config.json +0 -0
  227. data/spec/data/.gooddata +0 -0
  228. data/spec/data/blueprints/additional_dataset_module.json +0 -0
  229. data/spec/data/blueprints/attribute_sort_order_blueprint.json +0 -0
  230. data/spec/data/blueprints/big_blueprint_not_pruned.json +0 -0
  231. data/spec/data/blueprints/m_n_model.json +0 -0
  232. data/spec/data/blueprints/model_module.json +0 -0
  233. data/spec/data/cc/data/source/commits.csv +0 -0
  234. data/spec/data/cc/data/source/devs.csv +0 -0
  235. data/spec/data/cc/data/source/repos.csv +0 -0
  236. data/spec/data/cc/devel.prm +0 -0
  237. data/spec/data/cc/graph/graph.grf +0 -0
  238. data/spec/data/cc/workspace.prm +0 -0
  239. data/spec/data/column_based_permissions.csv +0 -0
  240. data/spec/data/column_based_permissions2.csv +0 -0
  241. data/spec/data/gd_gse_data_blueprint.json +0 -0
  242. data/spec/data/gd_gse_data_manifest.json +0 -0
  243. data/spec/data/gd_gse_data_model.json +0 -0
  244. data/spec/data/gooddata_version_process/gooddata_version.rb +0 -0
  245. data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
  246. data/spec/data/hello_world_process/hello_world.rb +0 -0
  247. data/spec/data/hello_world_process/hello_world.zip +0 -0
  248. data/spec/data/line_based_permissions.csv +0 -0
  249. data/spec/data/manifests/test_blueprint.json +0 -0
  250. data/spec/data/manifests/test_project.json +0 -0
  251. data/spec/data/reports/left_attr_report.json +0 -0
  252. data/spec/data/reports/metric_only_one_line.json +0 -0
  253. data/spec/data/reports/report_1.json +0 -0
  254. data/spec/data/reports/top_attr_report.json +0 -0
  255. data/spec/data/ruby_params_process/ruby_params.rb +0 -0
  256. data/spec/data/ruby_process/deep_files/deep_stuff.txt +0 -0
  257. data/spec/data/ruby_process/process.rb +0 -0
  258. data/spec/data/ruby_process/stuff.txt +0 -0
  259. data/spec/data/superfluous_titles_view.json +0 -0
  260. data/spec/data/test-ci-data.csv +0 -0
  261. data/spec/data/users.csv +0 -0
  262. data/spec/data/wire_models/attribute_sort_by_model.json +0 -0
  263. data/spec/data/wire_models/model_view.json +0 -0
  264. data/spec/data/wire_models/nu_model.json +0 -0
  265. data/spec/data/wire_test_project.json +0 -0
  266. data/spec/environment/default.rb +0 -0
  267. data/spec/environment/environment.rb +0 -0
  268. data/spec/environment/production.rb +0 -0
  269. data/spec/helpers/blueprint_helper.rb +0 -0
  270. data/spec/helpers/cli_helper.rb +0 -0
  271. data/spec/helpers/connection_helper.rb +0 -0
  272. data/spec/helpers/crypto_helper.rb +0 -0
  273. data/spec/helpers/csv_helper.rb +0 -0
  274. data/spec/helpers/project_helper.rb +13 -0
  275. data/spec/helpers/spec_helper.rb +0 -0
  276. data/spec/integration/blueprint_updates_spec.rb +0 -0
  277. data/spec/integration/blueprint_with_grain_spec.rb +0 -0
  278. data/spec/integration/channel_configuration_spec.rb +0 -0
  279. data/spec/integration/command_projects_spec.rb +0 -0
  280. data/spec/integration/create_project_spec.rb +0 -0
  281. data/spec/integration/deprecated_load_spec.rb +0 -0
  282. data/spec/integration/full_project_spec.rb +3 -5
  283. data/spec/integration/models/metadata/report_spec.rb +54 -0
  284. data/spec/integration/over_to_user_filters_spec.rb +0 -0
  285. data/spec/integration/partial_md_export_import_spec.rb +0 -0
  286. data/spec/integration/rest_spec.rb +0 -0
  287. data/spec/integration/schedule_spec.rb +0 -0
  288. data/spec/integration/user_group_spec.rb +0 -0
  289. data/spec/logging_in_logging_out_spec.rb +0 -0
  290. data/spec/unit/actions/collect_data_product_spec.rb +9 -17
  291. data/spec/unit/actions/collect_users_brick_users_spec.rb +36 -0
  292. data/spec/unit/actions/shared_examples_for_user_actions.rb +17 -1
  293. data/spec/unit/actions/synchronize_user_filters_spec.rb +5 -1
  294. data/spec/unit/actions/synchronize_users_spec.rb +64 -6
  295. data/spec/unit/bricks/bricks_spec.rb +0 -0
  296. data/spec/unit/bricks/middleware/bench_middleware_spec.rb +0 -0
  297. data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +0 -0
  298. data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +0 -0
  299. data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +0 -0
  300. data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +0 -0
  301. data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +0 -0
  302. data/spec/unit/cli/cli_spec.rb +0 -0
  303. data/spec/unit/cli/commands/cmd_auth_spec.rb +0 -0
  304. data/spec/unit/core/nil_logger_spec.rb +0 -0
  305. data/spec/unit/extensions/hash_spec.rb +0 -0
  306. data/spec/unit/godzilla/goodzilla_spec.rb +0 -0
  307. data/spec/unit/helpers/csv_helper_spec.rb +0 -0
  308. data/spec/unit/lcm/user_bricks_helper_spec.rb +58 -0
  309. data/spec/unit/models/blueprint/attribute_sort_by_spec.rb +0 -0
  310. data/spec/unit/models/blueprint/attributes_spec.rb +0 -0
  311. data/spec/unit/models/blueprint/dataset_spec.rb +0 -0
  312. data/spec/unit/models/blueprint/labels_spec.rb +0 -0
  313. data/spec/unit/models/blueprint/reference_spec.rb +0 -0
  314. data/spec/unit/models/blueprint/schema_builder_spec.rb +0 -0
  315. data/spec/unit/models/blueprint/to_wire_spec.rb +0 -0
  316. data/spec/unit/models/execution_spec.rb +0 -0
  317. data/spec/unit/models/from_wire_spec.rb +0 -0
  318. data/spec/unit/models/metric_spec.rb +0 -0
  319. data/spec/unit/models/model_spec.rb +0 -0
  320. data/spec/unit/models/report_result_data_spec.rb +0 -0
  321. data/spec/unit/models/user_filters/user_filter_builder_spec.rb +110 -0
  322. data/spec/unit/models/user_filters_spec.rb +0 -0
  323. data/spec/unit/models/variable_spec.rb +0 -0
  324. data/spec/unit/rest/resource_spec.rb +0 -0
  325. metadata +148 -94
File without changes
File without changes
File without changes
@@ -6,7 +6,7 @@
6
6
 
7
7
  # GoodData Module
8
8
  module GoodData
9
- VERSION = '0.6.54'
9
+ VERSION = '1.0.0'
10
10
 
11
11
  class << self
12
12
  # Version
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/spec/.rubocop.yml CHANGED
File without changes
File without changes
File without changes
data/spec/data/.gooddata CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/spec/data/users.csv CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -55,6 +55,19 @@ module GoodData
55
55
  }
56
56
  GoodData::Membership.create(opts, client: client)
57
57
  end
58
+
59
+ def load_full_project_implementation(client)
60
+ spec = JSON.parse(File.read("./spec/data/blueprints/test_project_model_spec.json"), :symbolize_names => true)
61
+ blueprint = GoodData::Model::ProjectBlueprint.new(spec)
62
+
63
+ project = client.create_project_from_blueprint(
64
+ blueprint,
65
+ token: ConnectionHelper::GD_PROJECT_TOKEN,
66
+ environment: ProjectHelper::ENVIRONMENT
67
+ )
68
+
69
+ [project, blueprint, spec]
70
+ end
58
71
  end
59
72
  end
60
73
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -5,16 +5,14 @@
5
5
  # LICENSE file in the root directory of this source tree.
6
6
 
7
7
  require 'gooddata'
8
+ require 'tempfile'
8
9
 
9
10
  describe "Full project implementation", :constraint => 'slow' do
10
11
  before(:all) do
11
- @spec = JSON.parse(File.read("./spec/data/blueprints/test_project_model_spec.json"), :symbolize_names => true)
12
12
  @invalid_spec = JSON.parse(File.read("./spec/data/blueprints/invalid_blueprint.json"), :symbolize_names => true)
13
- @client = ConnectionHelper.create_default_connection
14
- @blueprint = GoodData::Model::ProjectBlueprint.new(@spec)
15
13
  @invalid_blueprint = GoodData::Model::ProjectBlueprint.new(@invalid_spec)
16
-
17
- @project = @client.create_project_from_blueprint(@blueprint, token: ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT)
14
+ @client = ConnectionHelper.create_default_connection
15
+ @project, @blueprint, @spec = ProjectHelper.load_full_project_implementation(@client)
18
16
  end
19
17
 
20
18
  after(:all) do
@@ -0,0 +1,54 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2017 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::Report, :constraint => 'slow' do
10
+ before(:all) do
11
+ @client = ConnectionHelper.create_default_connection
12
+ @project, @blueprint = ProjectHelper.load_full_project_implementation(@client)
13
+
14
+ m = @project.facts.first.create_metric
15
+ metric_name = Dir::Tmpname.make_tmpname ['metric.some_metric'], nil
16
+ metric_name.delete!('-')
17
+ m.identifier = metric_name
18
+ m.save
19
+
20
+ test_data = [
21
+ %w(lines_changed committed_on dev_id repo_id),
22
+ [3, "05/01/2012", 1_012, 75],
23
+ [2, "11/10/2014", 5_432, 23],
24
+ [5, "01/10/2014", 45_212, 87_163],
25
+ [1, "12/02/2017", 753, 11]
26
+ ]
27
+ @project.upload(test_data, @blueprint, 'dataset.commits')
28
+
29
+ m = @project.metrics.first
30
+ @report = @project.create_report(top: [m], title: 'Report to export')
31
+ @report.save
32
+ end
33
+
34
+ after(:all) do
35
+ @project.delete unless @project.nil?
36
+ @client.disconnect
37
+ end
38
+
39
+ describe 'raw export' do
40
+ before :each do
41
+ @filename = Dir::Tmpname.make_tmpname([File.join(Dir::Tmpname.tmpdir, 'test_raw_export'), '.csv'], nil)
42
+ end
43
+
44
+ after :each do
45
+ File.delete(@filename)
46
+ end
47
+
48
+ it "exports raw report" do
49
+ @report.export_raw(@filename)
50
+ expect(File).to exist(@filename)
51
+ expect(File.read(@filename)).to eq("\"sum of Lines Changed\"\r\n\"11.00\"\r\n")
52
+ end
53
+ end
54
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -11,29 +11,28 @@ describe GoodData::LCM2::CollectDataProduct do
11
11
 
12
12
  let(:client) { double(:client) }
13
13
  let(:domain) { double(:domain) }
14
- let(:data_product) { GoodData::DataProduct.new({}) }
15
14
  let(:gdc_logger) { double(:gdc_logger) }
15
+ let(:data_product) { GoodData::DataProduct.new({}) }
16
16
 
17
17
  before do
18
18
  allow(client).to receive(:domain) { domain }
19
- allow(gdc_logger).to receive(:info) {}
19
+ allow(gdc_logger).to receive(:info)
20
+ allow(domain).to receive(:data_products) { data_product }
20
21
  end
21
22
 
22
23
  context 'when data_product parameter is passed' do
24
+ let(:data_product_id) { 'data-product' }
23
25
  let(:params) do
24
26
  params = {
25
27
  gdc_gd_client: client,
26
28
  gdc_logger: gdc_logger,
27
- data_product: "data-product-#{SecureRandom.uuid}"
29
+ data_product: data_product_id
28
30
  }
29
31
  GoodData::LCM2.convert_to_smart_hash(params)
30
32
  end
31
33
 
32
- before do
33
- allow(domain).to receive(:data_products) { data_product }
34
- end
35
-
36
- it 'hydrates the data_product object into params and runs the app' do
34
+ it 'collects the specified data_product object' do
35
+ expect(domain).to receive(:data_products).with(data_product_id)
37
36
  result = subject.class.call(params)
38
37
  expect(result[:params][:data_product]).to be_a GoodData::DataProduct
39
38
  end
@@ -48,17 +47,10 @@ describe GoodData::LCM2::CollectDataProduct do
48
47
  GoodData::LCM2.convert_to_smart_hash(params)
49
48
  end
50
49
 
51
- it 'fallbacks to the only data_product if only one exists in the domain' do
52
- allow(domain).to receive(:data_products) { [data_product] }
53
-
50
+ it "collects the 'default' data_product" do
51
+ expect(domain).to receive(:data_products).with('default')
54
52
  result = subject.class.call(params)
55
53
  expect(result[:params][:data_product]).to be_a GoodData::DataProduct
56
54
  end
57
-
58
- it 'fails when multiple data_products are available to fallback on' do
59
- allow(domain).to receive(:data_products) { [data_product, GoodData::DataProduct.new({})] }
60
-
61
- expect { subject.class.call(params) }.to raise_error
62
- end
63
55
  end
64
56
  end
@@ -0,0 +1,36 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright (c) 2010-2017 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
+ describe GoodData::LCM2::CollectUsersBrickUsers do
8
+ let(:data_source) { double('data_source') }
9
+ let(:users_csv) do
10
+ end
11
+
12
+ let(:params) do
13
+ params = {
14
+ users_brick_config: {
15
+ input_source: {},
16
+ login_column: 'Email'
17
+ }
18
+ }
19
+ GoodData::LCM2.convert_to_smart_hash(params)
20
+ end
21
+
22
+ before do
23
+ allow(GoodData::Helpers::DataSource).to receive(:new)
24
+ .and_return(data_source)
25
+ allow(data_source).to receive(:realize)
26
+ .and_return('spec/data/users.csv')
27
+ end
28
+
29
+ it 'enriches parameters with logins' do
30
+ result = subject.class.call(params)
31
+ expect(result[:results].length).to eq(11)
32
+ result[:results].each do |user|
33
+ expect(user[:login]).not_to be_nil
34
+ end
35
+ end
36
+ end
@@ -1,4 +1,4 @@
1
- shared_examples 'a user action' do
1
+ shared_examples 'a user action reading client_id' do
2
2
  before do
3
3
  allow(File).to receive(:open).and_return("client_id\n#{client_id}")
4
4
  end
@@ -8,3 +8,19 @@ shared_examples 'a user action' do
8
8
  subject.class.call(params)
9
9
  end
10
10
  end
11
+
12
+ shared_examples 'a user action filtering segments' do
13
+ let(:organization_not_in_segment) { double('organization') }
14
+ let(:project_not_in_segment) { double('project') }
15
+
16
+ before do
17
+ allow(organization_not_in_segment).to receive(:segment_uri).and_return('another-segment-uri')
18
+ allow(organization_not_in_segment).to receive(:project).and_return(project_not_in_segment)
19
+ end
20
+
21
+ it 'does operation on project only from clients in segments in segments filter' do
22
+ expect(project).to receive(message_for_project)
23
+ expect(project_not_in_segment).not_to receive(message_for_project)
24
+ subject.class.call(params)
25
+ end
26
+ end
@@ -48,7 +48,7 @@ describe GoodData::LCM2::SynchronizeUserFilters do
48
48
  GoodData::LCM2.convert_to_smart_hash(params)
49
49
  end
50
50
 
51
- it_behaves_like 'a user action' do
51
+ it_behaves_like 'a user action reading client_id' do
52
52
  let(:client_id) { '123456789' }
53
53
  end
54
54
 
@@ -67,6 +67,10 @@ describe GoodData::LCM2::SynchronizeUserFilters do
67
67
  result = subject.class.call(params)
68
68
  expect(result).to eq(results: [[{}]])
69
69
  end
70
+
71
+ it_behaves_like 'a user action filtering segments' do
72
+ let(:message_for_project) { :add_data_permissions }
73
+ end
70
74
  end
71
75
  end
72
76
  end
@@ -2,6 +2,13 @@ require 'active_support/core_ext/hash'
2
2
  require 'gooddata/lcm/lcm2'
3
3
  require_relative 'shared_examples_for_user_actions'
4
4
 
5
+ shared_examples_for 'a user synchronizer' do
6
+ it 'does not fail and logs a warning' do
7
+ expect(logger).to receive(:warn).with(/not match any client ids/)
8
+ expect { subject.class.call(params) }.to_not raise_error
9
+ end
10
+ end
11
+
5
12
  describe GoodData::LCM2::SynchronizeUsers do
6
13
  let(:client) { double('client') }
7
14
  let(:user) { double('user') }
@@ -10,16 +17,16 @@ describe GoodData::LCM2::SynchronizeUsers do
10
17
  let(:project) { double('project') }
11
18
  let(:organization) { double('organization') }
12
19
  let(:logger) { double('logger') }
20
+ let(:project_uri) { '/gdc/projects/123abc' }
13
21
 
14
22
  before do
15
23
  allow(client).to receive(:projects).and_return(project)
16
24
  allow(client).to receive(:user).and_return(user)
17
25
  allow(client).to receive(:domain).and_return(domain)
18
- allow(domain).to receive(:clients).and_return(organization)
19
- allow(organization).to receive(:project_uri)
26
+ allow(organization).to receive(:project_uri).and_return(project_uri)
20
27
  allow(project).to receive(:import_users).and_return([{}])
21
28
  allow(project).to receive(:metadata).and_return({})
22
- allow(project).to receive(:uri)
29
+ allow(project).to receive(:uri).and_return(project_uri)
23
30
  allow(project).to receive(:pid).and_return('123456789')
24
31
  allow(data_source).to receive(:realize)
25
32
  allow(user).to receive(:login).and_return('my_login')
@@ -29,7 +36,14 @@ describe GoodData::LCM2::SynchronizeUsers do
29
36
  end
30
37
 
31
38
  context 'when multiple_projects_column not specified' do
32
- context 'when mode requires client_id' do
39
+ context 'when mode is sync_one_project_based_on_custom_id' do
40
+ let(:client_id) { '123456789' }
41
+
42
+ before do
43
+ allow(domain).to receive(:clients).and_return([organization])
44
+ allow(organization).to receive(:id).and_return(client_id)
45
+ end
46
+
33
47
  let(:params) do
34
48
  params = {
35
49
  GDC_GD_CLIENT: client,
@@ -41,8 +55,20 @@ describe GoodData::LCM2::SynchronizeUsers do
41
55
  GoodData::LCM2.convert_to_smart_hash(params)
42
56
  end
43
57
 
44
- it_behaves_like 'a user action' do
45
- let(:client_id) { '123456789' }
58
+ context 'when the input set is empty' do
59
+ before do
60
+ allow(File).to receive(:open).and_return("")
61
+ end
62
+
63
+ it_behaves_like 'a user synchronizer'
64
+ end
65
+
66
+ context 'when the input set does not contain data for the current project' do
67
+ before do
68
+ allow(File).to receive(:open).and_return("client_id\ndifferent_from_123")
69
+ end
70
+
71
+ it_behaves_like 'a user synchronizer'
46
72
  end
47
73
  end
48
74
 
@@ -60,6 +86,7 @@ describe GoodData::LCM2::SynchronizeUsers do
60
86
 
61
87
  before do
62
88
  allow(File).to receive(:open).and_return("project_id\n123456789")
89
+ allow(domain).to receive(:clients).and_return(organization)
63
90
  end
64
91
 
65
92
  it 'uses project_id column' do
@@ -72,5 +99,36 @@ describe GoodData::LCM2::SynchronizeUsers do
72
99
  subject.class.call(params)
73
100
  end
74
101
  end
102
+
103
+ context 'when using mode sync_domain_client_workspaces' do
104
+ let(:segment) { double('segment') }
105
+ let(:segment_uri) { 'segment_uri' }
106
+ let(:params) do
107
+ params = {
108
+ GDC_GD_CLIENT: client,
109
+ input_source: 'foo',
110
+ domain: 'bar',
111
+ gdc_logger: logger,
112
+ sync_mode: 'sync_domain_client_workspaces',
113
+ segments: [segment]
114
+ }
115
+ GoodData::LCM2.convert_to_smart_hash(params)
116
+ end
117
+
118
+ before do
119
+ allow(File).to receive(:open).and_return("client_id\n123456789")
120
+ allow(domain).to receive(:clients).with(:all, nil).and_return([organization, organization_not_in_segment])
121
+ allow(domain).to receive(:clients).with('123456789', nil).and_return(organization)
122
+ allow(segment).to receive(:uri).and_return(segment_uri)
123
+ allow(organization).to receive(:segment_uri).and_return(segment_uri)
124
+ allow(organization).to receive(:project).and_return(project)
125
+ allow(organization).to receive(:client_id).and_return('123456789')
126
+ allow(project).to receive(:deleted?).and_return(false)
127
+ end
128
+
129
+ it_behaves_like 'a user action filtering segments' do
130
+ let(:message_for_project) { :import_users }
131
+ end
132
+ end
75
133
  end
76
134
  end