gooddata 0.6.53 → 0.6.54

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. checksums.yaml +5 -5
  2. data/.flayignore +6 -0
  3. data/.gitignore +1 -0
  4. data/.pronto.yml +3 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +4 -1
  7. data/CHANGELOG.md +18 -0
  8. data/CONTRIBUTING.md +14 -1
  9. data/DEPENDENCIES.md +324 -253
  10. data/Dockerfile.jruby +5 -7
  11. data/Dockerfile.ruby +8 -8
  12. data/Rakefile +24 -0
  13. data/ci.rake +47 -0
  14. data/docker-compose.yml +34 -0
  15. data/gooddata.gemspec +8 -2
  16. data/lib/gooddata/bricks/middleware/restforce_middleware.rb +0 -3
  17. data/lib/gooddata/helpers/data_helper.rb +10 -7
  18. data/lib/gooddata/helpers/global_helpers_params.rb +8 -3
  19. data/lib/gooddata/lcm/actions/apply_custom_maql.rb +2 -1
  20. data/lib/gooddata/lcm/actions/associate_clients.rb +10 -1
  21. data/lib/gooddata/lcm/actions/collect_client_projects.rb +78 -0
  22. data/lib/gooddata/lcm/actions/collect_clients.rb +20 -6
  23. data/lib/gooddata/lcm/actions/collect_data_product.rb +62 -0
  24. data/lib/gooddata/lcm/actions/collect_dynamic_schedule_params.rb +62 -0
  25. data/lib/gooddata/lcm/actions/{collect_attrs.rb → collect_ldm_objects.rb} +3 -3
  26. data/lib/gooddata/lcm/actions/collect_meta.rb +6 -3
  27. data/lib/gooddata/lcm/actions/collect_segment_clients.rb +2 -1
  28. data/lib/gooddata/lcm/actions/collect_segments.rb +6 -7
  29. data/lib/gooddata/lcm/actions/collect_tagged_objects.rb +7 -4
  30. data/lib/gooddata/lcm/actions/create_segment_masters.rb +7 -3
  31. data/lib/gooddata/lcm/actions/ensure_data_product.rb +53 -0
  32. data/lib/gooddata/lcm/actions/ensure_technical_users_domain.rb +6 -2
  33. data/lib/gooddata/lcm/actions/ensure_technical_users_project.rb +30 -18
  34. data/lib/gooddata/lcm/actions/execute_schedules.rb +128 -0
  35. data/lib/gooddata/lcm/actions/provision_clients.rb +32 -21
  36. data/lib/gooddata/lcm/actions/purge_clients.rb +25 -39
  37. data/lib/gooddata/lcm/actions/rename_existing_client_projects.rb +70 -0
  38. data/lib/gooddata/lcm/actions/segments_filter.rb +6 -0
  39. data/lib/gooddata/lcm/actions/synchronize_cas.rb +11 -0
  40. data/lib/gooddata/lcm/actions/synchronize_clients.rb +2 -1
  41. data/lib/gooddata/lcm/actions/synchronize_etls_in_segment.rb +34 -15
  42. data/lib/gooddata/lcm/actions/synchronize_ldm.rb +10 -1
  43. data/lib/gooddata/lcm/actions/synchronize_new_segments.rb +2 -1
  44. data/lib/gooddata/lcm/actions/synchronize_processes.rb +4 -7
  45. data/lib/gooddata/lcm/actions/synchronize_tag_objects.rb +8 -5
  46. data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +224 -0
  47. data/lib/gooddata/lcm/actions/synchronize_user_groups.rb +53 -0
  48. data/lib/gooddata/lcm/actions/synchronize_users.rb +324 -0
  49. data/lib/gooddata/lcm/dsl/type_dsl.rb +1 -0
  50. data/lib/gooddata/lcm/helpers/check_helper.rb +4 -0
  51. data/lib/gooddata/lcm/helpers/tags_helper.rb +4 -3
  52. data/lib/gooddata/lcm/lcm2.rb +33 -1
  53. data/lib/gooddata/lcm/types/complex/segment.rb +3 -0
  54. data/lib/gooddata/lcm/types/complex/update_preference.rb +8 -2
  55. data/lib/gooddata/lcm/types/special/array.rb +1 -3
  56. data/lib/gooddata/lcm/types/special/enum.rb +1 -3
  57. data/lib/gooddata/mixins/md_id_to_uri.rb +0 -1
  58. data/lib/gooddata/mixins/md_json.rb +2 -2
  59. data/lib/gooddata/models/blueprint/project_blueprint.rb +15 -0
  60. data/lib/gooddata/models/blueprint/to_wire.rb +1 -0
  61. data/lib/gooddata/models/client.rb +21 -9
  62. data/lib/gooddata/models/data_product.rb +149 -0
  63. data/lib/gooddata/models/domain.rb +26 -72
  64. data/lib/gooddata/models/from_wire.rb +2 -0
  65. data/lib/gooddata/models/metadata/report.rb +9 -3
  66. data/lib/gooddata/models/metadata/report_definition.rb +2 -2
  67. data/lib/gooddata/models/model.rb +1 -1
  68. data/lib/gooddata/models/process.rb +4 -0
  69. data/lib/gooddata/models/project.rb +58 -35
  70. data/lib/gooddata/models/project_creator.rb +13 -0
  71. data/lib/gooddata/models/segment.rb +63 -16
  72. data/lib/gooddata/models/style_setting.rb +2 -15
  73. data/lib/gooddata/models/user_group.rb +2 -0
  74. data/lib/gooddata/rest/connection.rb +32 -9
  75. data/lib/gooddata/rest/object_factory.rb +0 -25
  76. data/lib/gooddata/version.rb +1 -1
  77. data/spec/data/blueprints/invalid_blueprint.json +2 -2
  78. data/spec/data/blueprints/test_project_model_spec.json +1 -1
  79. data/spec/data/dynamic_schedule_params_table.csv +7 -0
  80. data/spec/data/workspace_table.csv +3 -3
  81. data/spec/environment/staging.rb +3 -3
  82. data/spec/integration/ads_output_stage_spec.rb +0 -10
  83. data/spec/integration/clients_spec.rb +1 -1
  84. data/spec/{unit → integration}/commands/command_projects_spec.rb +0 -0
  85. data/spec/{unit → integration}/core/connection_spec.rb +0 -0
  86. data/spec/{unit → integration}/core/logging_spec.rb +0 -0
  87. data/spec/{unit → integration}/core/project_spec.rb +0 -0
  88. data/spec/integration/date_dim_switch_spec.rb +13 -0
  89. data/spec/integration/full_process_schedule_spec.rb +2 -2
  90. data/spec/integration/helpers_spec.rb +16 -0
  91. data/spec/integration/lcm_spec.rb +12 -2
  92. data/spec/integration/mixins/id_to_uri_spec.rb +44 -0
  93. data/spec/integration/models/data_product_spec.rb +71 -0
  94. data/spec/{unit → integration}/models/domain_spec.rb +2 -2
  95. data/spec/{unit → integration}/models/invitation_spec.rb +0 -0
  96. data/spec/{unit → integration}/models/membership_spec.rb +0 -0
  97. data/spec/{unit → integration}/models/params_spec.rb +0 -0
  98. data/spec/{unit → integration}/models/profile_spec.rb +0 -0
  99. data/spec/{unit → integration}/models/project_role_spec.rb +0 -0
  100. data/spec/integration/models/project_spec.rb +225 -0
  101. data/spec/{unit → integration}/models/schedule_spec.rb +0 -0
  102. data/spec/{unit → integration}/models/unit_project_spec.rb +0 -0
  103. data/spec/integration/project_spec.rb +40 -5
  104. data/spec/integration/segments_spec.rb +27 -26
  105. data/spec/integration/user_filters_spec.rb +1 -1
  106. data/spec/spec_helper.rb +15 -19
  107. data/spec/unit/actions/associate_clients_spec.rb +47 -0
  108. data/spec/unit/actions/collect_client_projects_spec.rb +47 -0
  109. data/spec/unit/actions/collect_clients_spec.rb +27 -0
  110. data/spec/unit/actions/collect_data_product_spec.rb +64 -0
  111. data/spec/unit/actions/collect_dynamic_schedule_params_spec.rb +56 -0
  112. data/spec/unit/actions/collect_meta_spec.rb +4 -4
  113. data/spec/unit/actions/collect_segment_clients_spec.rb +44 -3
  114. data/spec/unit/actions/collect_tagged_objects_spec.rb +20 -4
  115. data/spec/unit/actions/create_segment_masters_spec.rb +64 -0
  116. data/spec/unit/actions/ensure_data_product_spec.rb +38 -0
  117. data/spec/unit/actions/ensure_technical_users_domain_spec.rb +51 -0
  118. data/spec/unit/actions/ensure_technical_users_project_spec.rb +72 -0
  119. data/spec/unit/actions/execute_schedules_spec.rb +94 -0
  120. data/spec/unit/actions/provision_clients_spec.rb +45 -0
  121. data/spec/unit/actions/purge_clients_spec.rb +47 -0
  122. data/spec/unit/actions/rename_existing_client_projects_spec.rb +54 -0
  123. data/spec/unit/actions/segments_filter_spec.rb +46 -0
  124. data/spec/unit/actions/shared_examples_for_user_actions.rb +10 -0
  125. data/spec/unit/actions/synchronize_cas_spec.rb +58 -0
  126. data/spec/unit/actions/synchronize_etls_in_segment_spec.rb +174 -13
  127. data/spec/unit/actions/synchronize_ldm_spec.rb +57 -0
  128. data/spec/unit/actions/synchronize_user_filters_spec.rb +142 -0
  129. data/spec/unit/actions/synchronize_user_groups_spec.rb +49 -0
  130. data/spec/unit/actions/synchronize_users_spec.rb +76 -0
  131. data/spec/unit/helpers/data_helper_spec.rb +17 -0
  132. data/spec/unit/helpers/global_helpers_spec.rb +16 -0
  133. data/spec/unit/helpers_spec.rb +0 -6
  134. data/spec/unit/models/blueprint/project_blueprint_spec.rb +21 -4
  135. data/spec/unit/models/project_creator_spec.rb +16 -0
  136. data/spec/unit/models/project_spec.rb +66 -197
  137. metadata +202 -100
  138. data/PULL_REQUEST_TEMPLATE.md +0 -5
  139. data/lib/gooddata/bricks/middleware/params_inspect_middleware.rb +0 -21
@@ -144,7 +144,7 @@ describe GoodData::Domain do
144
144
  describe '#clients' do
145
145
  subject { GoodData::Domain.new('my_domain') }
146
146
  let(:client) { double('client') }
147
- let(:clients_response) { { 'client' => { 'id' => '123' } } }
147
+ let(:clients_response) { { 'client' => { 'id' => '123' }, 'domain' => subject } }
148
148
 
149
149
  before do
150
150
  allow(client).to receive(:get).and_return(clients_response)
@@ -156,7 +156,7 @@ describe GoodData::Domain do
156
156
  GoodData::Client,
157
157
  clients_response
158
158
  )
159
- subject.clients(123)
159
+ subject.clients('123')
160
160
  end
161
161
  end
162
162
  end
@@ -0,0 +1,225 @@
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::Project, :constraint => 'slow' do
10
+ before(:all) do
11
+ @client = ConnectionHelper.create_default_connection
12
+ @project = ProjectHelper.get_default_project(:client => @client)
13
+ @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
14
+ end
15
+
16
+ after(:all) do
17
+ @client.disconnect
18
+ end
19
+
20
+ describe 'projects' do
21
+ it 'Can get all projects' do
22
+ projects = @client.projects
23
+ expect(projects).to_not be_nil
24
+ expect(projects).to be_a_kind_of(Array)
25
+ projects.pmap do |project|
26
+ expect(project).to be_an_instance_of(GoodData::Project)
27
+ end
28
+ end
29
+
30
+ it 'Returns project if ID passed' do
31
+ expect(@project).to_not be_nil
32
+ expect(@project).to be_a_kind_of(GoodData::Project)
33
+ expect(@project.pid).to eq @project.pid
34
+ end
35
+
36
+ it 'Returns project if URL passed' do
37
+ expect(@project).to_not be_nil
38
+ expect(@project).to be_a_kind_of(GoodData::Project)
39
+ expect(@project.pid).to eq @project.pid
40
+ end
41
+
42
+ it 'Throws an exception when invalid format of URL passed' do
43
+ invalid_url = '/gdc/invalid_url'
44
+ expect { GoodData::Project[invalid_url] }.to raise_error
45
+ end
46
+ end
47
+
48
+ describe '#all' do
49
+ it 'Returns all projects' do
50
+ projects = GoodData::Project.all(:client => @client)
51
+ expect(projects).to_not be_nil
52
+ expect(projects).to be_a_kind_of(Array)
53
+ end
54
+ end
55
+
56
+ describe '#get_role_by_identifier' do
57
+ it 'Looks up for role by identifier' do
58
+ role = @project.get_role_by_identifier('readOnlyUserRole')
59
+ expect(role).to_not be_nil
60
+ expect(role).to be_a_kind_of(GoodData::ProjectRole)
61
+ end
62
+ end
63
+
64
+ describe '#get_role_by_summary' do
65
+ it 'Looks up for role by summary' do
66
+ role = @project.get_role_by_summary('read only user role')
67
+ expect(role).to_not be_nil
68
+ expect(role).to be_a_kind_of(GoodData::ProjectRole)
69
+ end
70
+ end
71
+
72
+ describe '#get_role_by_title' do
73
+ it 'Looks up for role by title' do
74
+ role = @project.get_role_by_title('Viewer')
75
+ expect(role).to_not be_nil
76
+ expect(role).to be_a_kind_of(GoodData::ProjectRole)
77
+ end
78
+ end
79
+
80
+ describe "#member" do
81
+ it 'Returns GoodData::Membership when looking for existing user using login' do
82
+ res = @project.get_user(ConnectionHelper::DEFAULT_USERNAME)
83
+ expect(res).to be_instance_of(GoodData::Membership)
84
+ end
85
+
86
+ it 'Returns GoodData::Membership when looking for existing user using URL' do
87
+ res = @project.get_user(ConnectionHelper::DEFAULT_USER_URL)
88
+ expect(res).to be_instance_of(GoodData::Membership)
89
+ end
90
+
91
+ it 'Returns GoodData::Membership when looking for existing user using GoodData::Profile' do
92
+ user = @project.members.first
93
+ res = @project.get_user(user)
94
+ expect(res).to be_instance_of(GoodData::Membership)
95
+ end
96
+
97
+ it 'Returns null for non-existing user' do
98
+ res = @project.get_user(ConnectionHelper::TEST_USERNAME)
99
+ expect(res).to be_nil
100
+ end
101
+ end
102
+
103
+ describe "#member?" do
104
+ it 'Returns true when looking for existing user using login' do
105
+ res = @project.member?(ConnectionHelper::DEFAULT_USERNAME)
106
+ expect(res).to be_truthy
107
+ end
108
+
109
+ it 'Returns true when looking for existing user using URL' do
110
+ res = @project.member?(ConnectionHelper::DEFAULT_USER_URL)
111
+ expect(res).to be_truthy
112
+ end
113
+
114
+ it 'Returns true when looking for existing user using GoodData::Profile' do
115
+ user = @project.members.first
116
+ res = @project.member?(user)
117
+ expect(res).to be_truthy
118
+ end
119
+
120
+ it 'Returns false for non-existing user' do
121
+ res = @project.member?(ConnectionHelper::TEST_USERNAME)
122
+ expect(res).to be_falsey
123
+ end
124
+
125
+ it 'Returns true for existing user when using optional list' do
126
+ list = @project.members
127
+ res = @project.member?(ConnectionHelper::DEFAULT_USERNAME, list)
128
+ expect(res).to be_truthy
129
+ end
130
+
131
+ it 'Returns false for non-existing user when using optional list' do
132
+ list = []
133
+ res = @project.member?(ConnectionHelper::DEFAULT_USERNAME, list)
134
+ expect(res).to be_falsey
135
+ end
136
+ end
137
+
138
+ describe '#members?' do
139
+ it 'Returns array of bools when looking for existing users using GoodData::Profile' do
140
+ users = @project.members.take(10)
141
+ res = @project.members?(users)
142
+ expect(res.all?).to be_truthy
143
+ end
144
+
145
+ it 'Support variety of inputs' do
146
+ users = @project.members.take(1)
147
+ res = @project.members?(users + [ConnectionHelper::TEST_USERNAME])
148
+ expect(res).to eq [true, false]
149
+ end
150
+ end
151
+
152
+ describe '#roles' do
153
+ it 'Returns array of GoodData::ProjectRole' do
154
+ roles = @project.roles
155
+ expect(roles).to be_instance_of(Array)
156
+
157
+ roles.each do |role|
158
+ expect(role).to be_instance_of(GoodData::ProjectRole)
159
+ end
160
+ end
161
+ end
162
+
163
+ describe '#export_clone' do
164
+ context 'when exclude_schedule is true' do
165
+ let(:options) { { exclude_schedules: true } }
166
+ let(:clone) { GoodData::Project.create(title: 'project clone', client: @client, auth_token: ConnectionHelper::GD_PROJECT_TOKEN) }
167
+
168
+ after do
169
+ clone.delete if clone
170
+ end
171
+
172
+ it 'excludes scheduled emails' do
173
+ @project.schedule_mail.save
174
+ export_token = @project.export_clone(options)
175
+ clone.import_clone(export_token)
176
+ expect(@project.scheduled_mails.to_a).not_to be_empty
177
+ expect(clone.scheduled_mails.to_a).to be_empty
178
+ end
179
+ end
180
+
181
+ context 'when cross_data_center_export is true' do
182
+ it 'is ok' do
183
+ # there are no staging environments on other datacenters
184
+ # so just checking if the parameter gets accepted
185
+ @project.export_clone(cross_data_center_export: true)
186
+ end
187
+ end
188
+
189
+ context 'when export task fails' do
190
+ let(:fail_response) do
191
+ response = { taskState: { status: 'ERROR' } }
192
+ GoodData::Helpers.stringify_keys(response)
193
+ end
194
+
195
+ before do
196
+ allow(@client)
197
+ .to receive(:poll_on_response).and_return(fail_response)
198
+ end
199
+
200
+ it 'raises ExportCloneError' do
201
+ expect { @project.export_clone }.to raise_error(GoodData::ExportCloneError)
202
+ end
203
+ end
204
+ end
205
+
206
+ describe '#import_clone' do
207
+ let(:clone) { GoodData::Project.create(title: 'import clone test', client: @client, auth_token: ConnectionHelper::GD_PROJECT_TOKEN) }
208
+ let(:fail_response) do
209
+ response = { taskState: { status: 'ERROR' } }
210
+ GoodData::Helpers.stringify_keys(response)
211
+ end
212
+
213
+ after do
214
+ clone.delete if clone
215
+ end
216
+
217
+ context 'when import task fails' do
218
+ it 'raises ImportCloneError' do
219
+ export_token = @project.export_clone
220
+ allow(@client).to receive(:poll_on_response).and_return(fail_response)
221
+ expect { clone.import_clone(export_token) }.to raise_error(GoodData::ImportCloneError)
222
+ end
223
+ end
224
+ end
225
+ end
@@ -325,22 +325,57 @@ describe GoodData::Project, :constraint => 'slow' do
325
325
  end
326
326
 
327
327
  it 'should be able to set custom color' do
328
- colors = [{ r: 155, g: 255, b: 0 }]
328
+ colors = [
329
+ {
330
+ guid: 'first',
331
+ fill: {
332
+ r: 155,
333
+ g: 255,
334
+ b: 0
335
+ }
336
+ }
337
+ ]
329
338
  @project.create_custom_color_palette(colors)
330
- expect(@project.current_color_palette.colors).to eq colors
339
+ expect(@project.current_color_palette.colors).to eq colors.map { |color| GoodData::Helpers.stringify_keys(color) }
331
340
  end
332
341
 
333
342
  it 'should be able to reset custom color' do
334
- colors = [{ r: 155, g: 255, b: 0 }]
343
+ colors = [
344
+ {
345
+ guid: 'first',
346
+ fill: {
347
+ r: 155,
348
+ g: 255,
349
+ b: 0
350
+ }
351
+ }
352
+ ]
335
353
  @project.create_custom_color_palette(colors)
336
354
  @project.reset_color_palette
337
355
  expect(@project.current_color_palette.colors).to eq []
338
356
  end
339
357
 
340
358
  it 'should not contains duplicate color' do
341
- colors = [{ r: 155, g: 255, b: 0 }, { r: 155, g: 255, b: 0 }]
359
+ colors = [
360
+ {
361
+ guid: 'first',
362
+ fill: {
363
+ r: 155,
364
+ g: 255,
365
+ b: 0
366
+ }
367
+ },
368
+ {
369
+ guid: 'first',
370
+ fill: {
371
+ r: 155,
372
+ g: 255,
373
+ b: 0
374
+ }
375
+ }
376
+ ]
342
377
  @project.create_custom_color_palette(colors)
343
- expect(@project.current_color_palette.colors).to eq [{ r: 155, g: 255, b: 0 }]
378
+ expect(@project.current_color_palette.colors).to eq [{ "guid" => "first", "fill" => { "r" => 155, "g" => 255, "b" => 0 } }]
344
379
  end
345
380
  end
346
381
  end
@@ -11,13 +11,6 @@ describe GoodData::Segment do
11
11
  before(:all) do
12
12
  @client = ConnectionHelper.create_default_connection
13
13
  @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
14
- GoodData::Segment.all(domain: @domain).each do |segment|
15
- begin
16
- segment.delete(force: true)
17
- rescue StandardError => e
18
- GoodData.logger.warn "Failed to delete segment: #{e}"
19
- end
20
- end
21
14
  end
22
15
 
23
16
  before(:each) do
@@ -62,17 +55,18 @@ describe GoodData::Segment do
62
55
  end
63
56
 
64
57
  describe '#save' do
58
+ after do
59
+ @different_master.delete if @different_master
60
+ @different_data_product.delete if @different_data_product
61
+ end
62
+
65
63
  it 'can update a segment master project' do
66
- begin
67
- different_master = @client.create_project(title: 'Test project', auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
68
- @segment.master_project = different_master
69
- @segment.save
70
- @segment = @domain.segments(@segment_name)
71
- expect(@segment.master_project_uri).not_to eq @master_project.uri
72
- expect(@segment.master_project_uri).to eq different_master.uri
73
- ensure
74
- different_master.delete if different_master
75
- end
64
+ @different_master = @client.create_project(title: 'Test project', auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
65
+ @segment.master_project = @different_master
66
+ @segment.save
67
+ @segment = @domain.segments(@segment_name)
68
+ expect(@segment.master_project_uri).not_to eq @master_project.uri
69
+ expect(@segment.master_project_uri).to eq @different_master.uri
76
70
  end
77
71
 
78
72
  it 'cannot update a segment id' do
@@ -84,16 +78,23 @@ describe GoodData::Segment do
84
78
  end
85
79
 
86
80
  describe '#create_client' do
81
+ after do
82
+ @client_project && @client_project.delete
83
+ @segment_client && @segment_client.delete
84
+ end
85
+
87
86
  it 'can create a new client in a segment' do
88
- begin
89
- client_project = @client.create_project(title: 'client_1 project', auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
90
- segment_client = @segment.create_client(id: 'tenant_1', project: client_project)
91
- expect(segment_client).to be_an_instance_of(GoodData::Client)
92
- expect(@segment.clients.count).to eq 1
93
- ensure
94
- client_project.delete if client_project
95
- segment_client && segment_client.delete
96
- end
87
+ @client_project = @client.create_project(title: 'client_1 project', auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
88
+ @segment_client = @segment.create_client(id: 'tenant_1', project: @client_project)
89
+ expect(@segment_client).to be_an_instance_of(GoodData::Client)
90
+ expect(@segment.clients.count).to eq 1
91
+ end
92
+ end
93
+
94
+ describe '#provision_client_projects' do
95
+ it 'returns an enumerable result' do
96
+ result = @segment.provision_client_projects
97
+ expect(result).to be_an_instance_of(Enumerator)
97
98
  end
98
99
  end
99
100
  end
@@ -259,7 +259,7 @@ describe "User filters implementation", :constraint => 'slow' do
259
259
 
260
260
  # we want to compute stuff on different user than we are setting it on
261
261
  u = @domain.users.find { |user| user.login != ConnectionHelper::DEFAULT_USERNAME }
262
- password = 'abcd1234'
262
+ password = 'si@gFG593fo'
263
263
  u.json['accountSetting']['password'] = password
264
264
  @domain.update_user(u)
265
265
  @project.add_user(u, 'admin')
@@ -5,6 +5,21 @@
5
5
  # LICENSE file in the root directory of this source tree.
6
6
 
7
7
  require 'simplecov'
8
+ # for simplecov to work correctly, it has to be started before any other code
9
+ SimpleCov.start do
10
+ add_filter 'spec/'
11
+
12
+ add_group 'Middleware', 'lib/gooddata/bricks/middleware'
13
+ add_group 'CLI', 'lib/gooddata/cli'
14
+ add_group 'Commands', 'lib/gooddata/commands'
15
+ add_group 'Core', 'lib/gooddata/core'
16
+ add_group 'Exceptions', 'lib/gooddata/exceptions'
17
+ add_group 'Extensions', 'lib/gooddata/extensions'
18
+ add_group 'Goodzilla', 'lib/gooddata/goodzilla'
19
+ add_group 'Models', 'lib/gooddata/models'
20
+ add_group 'LCM', 'lib/gooddata/lcm'
21
+ end
22
+
8
23
  require 'pmap'
9
24
  require 'rspec'
10
25
  require 'pathname'
@@ -49,22 +64,3 @@ RSpec.configure do |config|
49
64
 
50
65
  config.fail_fast = false
51
66
  end
52
-
53
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
54
- SimpleCov::Formatter::HTMLFormatter
55
- )
56
-
57
- SimpleCov.start do
58
- add_filter 'spec/'
59
- add_filter 'test/'
60
-
61
- add_group 'Bricks', 'lib/gooddata/bricks'
62
- add_group 'Middleware', 'lib/gooddata/bricks/middleware'
63
- add_group 'CLI', 'lib/gooddata/cli'
64
- add_group 'Commands', 'lib/gooddata/commands'
65
- add_group 'Core', 'lib/gooddata/core'
66
- add_group 'Exceptions', 'lib/gooddata/exceptions'
67
- add_group 'Extensions', 'lib/gooddata/extensions'
68
- add_group 'Goodzilla', 'lib/gooddata/goodzilla'
69
- add_group 'Models', 'lib/gooddata/models'
70
- end