gooddata 0.6.12 → 0.6.13

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.
@@ -330,17 +330,13 @@ module GoodData
330
330
  end
331
331
 
332
332
  def download_from_user_webdav(source_relative_path, target_file_path, options = { :client => GoodData.client, :project => project })
333
- download(source_relative_path, target_file_path, options.merge(
334
- :directory => options[:directory],
335
- :staging_url => get_user_webdav_url(options)
336
- ))
333
+ download(source_relative_path, target_file_path, options.merge(:directory => options[:directory],
334
+ :staging_url => get_user_webdav_url(options)))
337
335
  end
338
336
 
339
337
  def upload_to_user_webdav(file, options = {})
340
- upload(file, options.merge(
341
- :directory => options[:directory],
342
- :staging_url => get_user_webdav_url(options)
343
- ))
338
+ upload(file, options.merge(:directory => options[:directory],
339
+ :staging_url => get_user_webdav_url(options)))
344
340
  end
345
341
 
346
342
  def with_project(pid, &block)
@@ -20,7 +20,8 @@ module GoodData
20
20
  }
21
21
 
22
22
  DEFAULT_LOGIN_PAYLOAD = {
23
- :headers => DEFAULT_HEADERS
23
+ :headers => DEFAULT_HEADERS,
24
+ :verify_ssl => OpenSSL::SSL::VERIFY_NONE
24
25
  }
25
26
 
26
27
  RETRYABLE_ERRORS = [
@@ -58,9 +59,10 @@ module GoodData
58
59
  retry_time = 1
59
60
  begin
60
61
  return yield
61
- rescue RestClient::Forbidden => e # , RestClient::Unauthorized => e
62
+ rescue RestClient::Unauthorized, RestClient::Forbidden => e # , RestClient::Unauthorized => e
62
63
  raise e unless options[:refresh_token]
63
- options[:refresh_token].call
64
+ raise e if options[:dont_reauth]
65
+ options[:refresh_token].call # (dont_reauth: true)
64
66
  retry if (retries -= 1) > 0
65
67
  rescue RestClient::TooManyRequests
66
68
  GoodData.logger.warn "Too many requests, retrying in #{retry_time} seconds"
@@ -122,7 +124,7 @@ module GoodData
122
124
  refresh_token :dont_reauth => true
123
125
  else
124
126
  credentials = Connection.construct_login_payload(username, password)
125
- @auth = post(LOGIN_PATH, credentials, :dont_reauth => true)['userLogin']
127
+ @auth = post(LOGIN_PATH, credentials)['userLogin']
126
128
 
127
129
  refresh_token :dont_reauth => true
128
130
  @user = get(@auth['profile'])
@@ -401,7 +403,7 @@ module GoodData
401
403
  # end
402
404
  # end
403
405
 
404
- response = GoodData::Rest::Connection.retryable(:tries => 2, :refresh_token => proc { refresh_token }) do
406
+ response = GoodData::Rest::Connection.retryable(:tries => 2, :refresh_token => proc { refresh_token unless options[:dont_reauth] }) do
405
407
  block.call
406
408
  end
407
409
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # GoodData Module
4
4
  module GoodData
5
- VERSION = '0.6.12'
5
+ VERSION = '0.6.13'
6
6
 
7
7
  class << self
8
8
  # Version
@@ -31,7 +31,7 @@ module ProjectHelper
31
31
  end
32
32
 
33
33
  def self.create_random_user(client)
34
- num = rand(1e6)
34
+ num = rand(1e7)
35
35
  login = "gemtest#{num}@gooddata.com"
36
36
 
37
37
  GoodData::Membership.create({
@@ -24,14 +24,22 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
24
24
  @client = ConnectionHelper::create_default_connection
25
25
  @project = @client.create_project(title: 'Project for schedule testing', auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
26
26
  @process = @project.deploy_process('./spec/data/ruby_process',
27
- type: 'RUBY',
28
- name: 'Test ETL Process')
27
+ type: 'RUBY',
28
+ name: 'Test ETL Process (Ruby)')
29
+
30
+ @process_cc = @project.deploy_process('./spec/data/cc',
31
+ type: 'graph',
32
+ name: 'Test ETL Process (CC)')
29
33
 
30
34
  end
31
35
 
32
36
  after(:all) do
33
- @process.delete if @process
34
- @project.delete if @project
37
+ ScheduleHelper.remove_old_schedules(@project)
38
+ ProcessHelper.remove_old_processes(@project)
39
+
40
+ # @process.delete if @process
41
+ # @project.delete if @project
42
+
35
43
  @client.disconnect
36
44
  end
37
45
 
@@ -58,52 +66,68 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
58
66
  end
59
67
 
60
68
  it "should be able to create schedule triggered by another schedule" do
61
- schedule_first = @process.create_schedule('0 15 27 7 *', @process.executables.first)
62
- schedule = @process.create_schedule(schedule_first, @process.executables.first)
63
- res = @process.schedules
64
- expect(res.count).to eq 2
65
- expect(@process.schedules.map(&:uri)).to include(schedule_first.uri, schedule.uri)
66
- schedule.delete
67
- schedule_first.delete
69
+ begin
70
+ schedule_first = @process.create_schedule('0 15 27 7 *', @process.executables.first)
71
+ schedule = @process.create_schedule(schedule_first, @process.executables.first)
72
+ res = @process.schedules
73
+ expect(res.count).to eq 2
74
+ expect(@process.schedules.map(&:uri)).to include(schedule_first.uri, schedule.uri)
75
+ ensure
76
+ schedule && schedule.delete
77
+ schedule_first && schedule_first.delete
78
+ end
68
79
  end
69
80
 
70
81
  it "should be able to create schedule triggered by another schedule specified by ID" do
71
- schedule_first = @process.create_schedule('0 15 27 7 *', @process.executables.first)
72
- schedule = @process.create_schedule(schedule_first.obj_id, @process.executables.first)
73
- res = @process.schedules
74
- expect(res.count).to eq 2
75
- expect(@process.schedules.map(&:uri)).to include(schedule_first.uri, schedule.uri)
76
- schedule.delete
77
- schedule_first.delete
82
+ begin
83
+ schedule_first = @process.create_schedule('0 15 27 7 *', @process.executables.first)
84
+ schedule = @process.create_schedule(schedule_first.obj_id, @process.executables.first)
85
+ res = @process.schedules
86
+ expect(res.count).to eq 2
87
+ expect(@process.schedules.map(&:uri)).to include(schedule_first.uri, schedule.uri)
88
+ ensure
89
+ schedule && schedule.delete
90
+ schedule_first && schedule_first.delete
91
+ end
78
92
  end
79
93
 
80
94
  it "should be able to delete schedule" do
81
- schedule = @process.create_schedule('0 15 27 7 *', @process.executables.first)
82
- res = @process.schedules
83
- expect(res.count).to eq 1
84
- expect(@process.schedules).to eq [schedule]
85
- schedule.delete
95
+ begin
96
+ schedule = @process.create_schedule('0 15 27 7 *', @process.executables.first)
97
+ res = @process.schedules
98
+ expect(res.count).to eq 1
99
+ expect(@process.schedules).to eq [schedule]
100
+ ensure
101
+ schedule && schedule.delete
102
+ end
86
103
  end
87
104
 
88
105
  it "should be possible to read status of schedule" do
89
- schedule = @process.create_schedule('0 15 27 7 *', @process.executables.first)
90
- expect(schedule.state).to eq 'ENABLED'
91
- schedule.delete
106
+ begin
107
+ schedule = @process.create_schedule('0 15 27 7 *', @process.executables.first)
108
+ expect(schedule.state).to eq 'ENABLED'
109
+ ensure
110
+ schedule && schedule.delete
111
+ end
92
112
  end
93
113
 
94
114
  it "should be possible to execute schedule" do
95
- schedule = @process.create_schedule('0 15 27 7 *', @process.executables.first)
96
- result = schedule.execute
97
- expect(result.status).to eq :ok
98
- log = result.log
99
- expect(log.index('Hello Ruby executors')).not_to eq nil
100
- expect(log.index('Hello Ruby from the deep')).not_to eq nil
115
+ begin
116
+ schedule = @process.create_schedule('0 15 27 7 *', @process.executables.first)
117
+ result = schedule.execute
118
+ expect(result.status).to eq :ok
119
+ log = result.log
120
+ expect(log.index('Hello Ruby executors')).not_to eq nil
121
+ expect(log.index('Hello Ruby from the deep')).not_to eq nil
122
+ ensure
123
+ schedule && schedule.delete
124
+ end
101
125
  end
102
126
 
103
127
  it "should be possible to deploy only a single file" do
104
128
  process = @project.deploy_process('./spec/data/hello_world_process/hello_world.rb',
105
- type: 'RUBY',
106
- name: 'Test ETL one file Process')
129
+ type: 'RUBY',
130
+ name: 'Test ETL one file Process')
107
131
  begin
108
132
  schedule = process.create_schedule('0 15 27 7 *', process.executables.first)
109
133
  result = schedule.execute
@@ -126,8 +150,8 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
126
150
 
127
151
  it "should be possible to deploy already zipped file" do
128
152
  process = @project.deploy_process('./spec/data/hello_world_process/hello_world.zip',
129
- type: 'RUBY',
130
- name: 'Test ETL zipped file Process')
153
+ type: 'RUBY',
154
+ name: 'Test ETL zipped file Process')
131
155
  begin
132
156
  expect(process.schedules.count).to eq 0
133
157
  schedule = process.create_schedule('0 15 27 7 *', process.executables.first)
@@ -199,8 +223,8 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
199
223
  it "should be possible to download deployed process" do
200
224
  size = File.size('./spec/data/hello_world_process/hello_world.zip')
201
225
  process = @project.deploy_process('./spec/data/hello_world_process/hello_world.zip',
202
- type: 'RUBY',
203
- name: 'Test ETL zipped file Process')
226
+ type: 'RUBY',
227
+ name: 'Test ETL zipped file Process')
204
228
  begin
205
229
  Tempfile.open('downloaded-process') do |temp|
206
230
  temp << process.download
@@ -213,9 +237,26 @@ describe "Full process and schedule exercise", :constraint => 'slow' do
213
237
  end
214
238
 
215
239
  it "should be able to redeploy via project" do
216
- process = @project.deploy_process('./spec/data/hello_world_process/hello_world.zip',
217
- type: 'RUBY',
218
- name: 'Test ETL zipped file Process',
219
- process_id: @process.obj_id)
240
+ begin
241
+ process = @project.deploy_process('./spec/data/hello_world_process/hello_world.zip',
242
+ type: 'RUBY',
243
+ name: 'Test ETL zipped file Process',
244
+ process_id: @process.obj_id)
245
+ ensure
246
+ process && process.delete
247
+ end
248
+ end
249
+
250
+ it "should be able to redeploy directly" do
251
+ begin
252
+ process1 = @project.deploy_process('./spec/data/hello_world_process/hello_world.zip',
253
+ type: 'RUBY',
254
+ name: 'Test ETL zipped file Process')
255
+
256
+ process2 = process1.deploy('./spec/data/ruby_process/process.rb')
257
+ expect(process1.executables).not_to eq process2.executables
258
+ ensure
259
+ process1 && process1.delete
260
+ end
220
261
  end
221
262
  end
@@ -27,6 +27,11 @@ describe "Full project implementation", :constraint => 'slow' do
27
27
  end
28
28
  end
29
29
 
30
+ it "should contain metadata datasets" do
31
+ expect(@project.datasets.count).to eq 4
32
+ expect(@project.datasets.select(&:date_dimension?).count).to eq 1
33
+ end
34
+
30
35
  it "should be able to rename a project" do
31
36
  former_title = @project.title
32
37
  a_title = (0...8).map { (65 + rand(26)).chr }.join
@@ -413,4 +418,11 @@ describe "Full project implementation", :constraint => 'slow' do
413
418
  r.delete
414
419
  expect { def_uris.each {|uri| @client.get(uri)} }.to raise_error(RestClient::ResourceNotFound)
415
420
  end
421
+
422
+ it 'should be apossible to delete data from a dataset' do
423
+ dataset = @project.datasets('dataset.devs')
424
+ expect(dataset.attributes.first.create_metric.execute).to be > 0
425
+ dataset.delete_data
426
+ expect(dataset.attributes.first.create_metric.execute).to be_nil
427
+ end
416
428
  end
@@ -24,4 +24,12 @@ describe GoodData::Rest::Connection, :constraint => 'slow' do
24
24
 
25
25
  regular_client.disconnect
26
26
  end
27
+
28
+ it "should be able to regenerate TT" do
29
+ regular_client = ConnectionHelper::create_default_connection
30
+ projects = regular_client.projects
31
+ regular_client.connection.cookies[:cookies].delete('GDCAuthTT')
32
+ regular_client.get('/gdc/md')
33
+ expect(regular_client.connection.cookies[:cookies]).to have_key 'GDCAuthTT'
34
+ end
27
35
  end
data/spec/spec_helper.rb CHANGED
@@ -28,6 +28,8 @@ RSpec.configure do |config|
28
28
 
29
29
  config.filter_run_excluding :broken => true
30
30
 
31
+ config.fail_fast = true
32
+
31
33
  config.before(:all) do
32
34
  # TODO: Move this to some method.
33
35
  # TODO Make more intelligent so two test suites can run at the same time.
@@ -82,11 +82,12 @@ describe GoodData::Domain do
82
82
 
83
83
  describe '#create_users' do
84
84
  it 'Creates new users from list' do
85
- list = (0...10).to_a.map { |i| ProjectHelper.create_random_user(@client) }
85
+ list = (0..1).to_a.map { |i| ProjectHelper.create_random_user(@client) }
86
86
  res = @domain.create_users(list)
87
87
 
88
88
  # no errors
89
89
  expect(res.select { |x| x[:type] == :user_added_to_domain }.count).to eq res.count
90
+
90
91
  expect(@domain.members?(list.map(&:login)).all?).to be_truthy
91
92
 
92
93
  res.map { |r| r[:user] }.each do |r|
@@ -28,9 +28,12 @@ describe 'GoodData::Schedule::Params' do
28
28
  :test => '1234'
29
29
  }
30
30
 
31
- res = @process.create_schedule("0 12 * * *", @graph_path, params: params)
32
- expect(res).to be_truthy
33
- res.delete
31
+ begin
32
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, params: params)
33
+ expect(schedule).to be_truthy
34
+ ensure
35
+ schedule && schedule.delete
36
+ end
34
37
  end
35
38
 
36
39
  it 'Works with nested params' do
@@ -41,9 +44,12 @@ describe 'GoodData::Schedule::Params' do
41
44
  }
42
45
  }
43
46
 
44
- res = @process.create_schedule("0 12 * * *", @graph_path, params: params)
45
- expect(res).to be_truthy
46
- res.delete
47
+ begin
48
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, params: params)
49
+ expect(schedule).to be_truthy
50
+ ensure
51
+ schedule && schedule.delete
52
+ end
47
53
  end
48
54
 
49
55
  it 'Works with array in params' do
@@ -52,9 +58,12 @@ describe 'GoodData::Schedule::Params' do
52
58
  :array => [1, 2, 3, 4, 5]
53
59
  }
54
60
 
55
- res = @process.create_schedule("0 12 * * *", @graph_path, params: params)
56
- expect(res).to be_truthy
57
- res.delete
61
+ begin
62
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, params: params)
63
+ expect(schedule).to be_truthy
64
+ ensure
65
+ schedule && schedule.delete
66
+ end
58
67
  end
59
68
  end
60
69
 
@@ -64,9 +73,12 @@ describe 'GoodData::Schedule::Params' do
64
73
  :test => '1234'
65
74
  }
66
75
 
67
- res = @process.create_schedule("0 12 * * *", @graph_path, hiddenParams: params)
68
- expect(res).to be_truthy
69
- res.delete
76
+ begin
77
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, hiddenParams: params)
78
+ expect(schedule).to be_truthy
79
+ ensure
80
+ schedule && schedule.delete
81
+ end
70
82
  end
71
83
 
72
84
  it 'Works with nested hiddenParams' do
@@ -77,9 +89,12 @@ describe 'GoodData::Schedule::Params' do
77
89
  }
78
90
  }
79
91
 
80
- res = @process.create_schedule("0 12 * * *", @graph_path, hiddenParams: params)
81
- expect(res).to be_truthy
82
- res.delete
92
+ begin
93
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, hiddenParams: params)
94
+ expect(schedule).to be_truthy
95
+ ensure
96
+ schedule && schedule.delete
97
+ end
83
98
  end
84
99
 
85
100
  it 'Works with array in hiddenParams' do
@@ -88,9 +103,12 @@ describe 'GoodData::Schedule::Params' do
88
103
  :array => [1, 2, 3, 4, 5]
89
104
  }
90
105
 
91
- res = @process.create_schedule("0 12 * * *", @graph_path, hiddenParams: params)
92
- expect(res).to be_truthy
93
- res.delete
106
+ begin
107
+ schedule = @process.create_schedule("0 12 * * *", @graph_path, hiddenParams: params)
108
+ expect(schedule).to be_truthy
109
+ ensure
110
+ schedule && schedule.delete
111
+ end
94
112
  end
95
113
  end
96
114
  end
@@ -79,12 +79,13 @@ describe GoodData::ProjectRole do
79
79
  end
80
80
 
81
81
  describe '#users' do
82
- it 'Returns users as Array<GoodData::Profile>' do
83
- res = @role.users
84
- expect(res).to be_an_instance_of(Array)
85
- res.each do |user|
86
- expect(user).to be_an_instance_of(GoodData::Profile)
87
- end
88
- end
82
+ it 'Returns users as Array<GoodData::Profile>'
83
+ # it 'Returns users as Array<GoodData::Profile>' do
84
+ # res = @role.users
85
+ # expect(res).to be_an_instance_of(Array)
86
+ # res.each do |user|
87
+ # expect(user).to be_an_instance_of(GoodData::Profile)
88
+ # end
89
+ # end
89
90
  end
90
91
  end
@@ -17,7 +17,7 @@ describe GoodData::Schedule do
17
17
 
18
18
  before(:each) do
19
19
  @client = ConnectionHelper.create_default_connection
20
-
20
+
21
21
  @project = ProjectHelper.get_default_project(:client => @client)
22
22
  @project_executable = 'graph/graph.grf'
23
23
  @test_data = {
@@ -26,7 +26,7 @@ describe GoodData::Schedule do
26
26
  :client => @client,
27
27
  :project => @project
28
28
  }
29
-
29
+
30
30
  @test_data_with_optional_param = {
31
31
  :timezone => 'UTC',
32
32
  :cron => '2 2 2 2 *',
@@ -76,437 +76,414 @@ describe GoodData::Schedule do
76
76
 
77
77
  describe '#create' do
78
78
  it 'Creates new schedule if mandatory params passed' do
79
- sched = nil
80
- expect {
81
- sched = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
82
- }.not_to raise_error
83
-
84
- sched.should_not be_nil
85
- sched.delete
79
+ schedule = nil
80
+ begin
81
+ expect {
82
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
83
+ }.not_to raise_error
84
+
85
+ expect(schedule).to be_truthy
86
+ ensure
87
+ schedule && schedule.delete
88
+ end
86
89
  end
87
90
 
88
91
  it 'Creates new schedule if mandatory params passed and optional params are present' do
89
- sched = nil
90
- expect {
91
- sched = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
92
- }.not_to raise_error
93
-
94
- sched.should_not be_nil
95
- sched.delete
92
+ schedule = nil
93
+ begin
94
+ expect {
95
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
96
+ }.not_to raise_error
97
+
98
+ expect(schedule).to be_truthy
99
+ ensure
100
+ schedule && schedule.delete
101
+ end
96
102
  end
97
103
 
98
104
  it 'Throws exception when no process ID specified' do
99
- expect {
100
- sched = @project.create_schedule(nil, @test_cron, @project_executable, @test_data)
101
- }.to raise_error 'Process ID has to be provided'
105
+ schedule = nil
106
+ begin
107
+ expect {
108
+ schedule = @project.create_schedule(nil, @test_cron, @project_executable, @test_data)
109
+ }.to raise_error 'Process ID has to be provided'
110
+ ensure
111
+ schedule && schedule.delete
112
+ end
102
113
  end
103
114
 
104
115
  it 'Throws exception when no executable specified' do
105
- expect {
106
- sched = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, nil, @test_data)
107
- }.to raise_error 'Executable has to be provided'
116
+ schedule = nil
117
+ begin
118
+ expect {
119
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, nil, @test_data)
120
+ }.to raise_error 'Executable has to be provided'
121
+ ensure
122
+ schedule && schedule.delete
123
+ end
108
124
  end
109
125
 
110
126
  it 'Throws exception when no cron is specified' do
111
127
  data = @test_data.deep_dup
112
128
  data[:cron] = nil
113
- expect {
114
- sched = @project.create_schedule(ProcessHelper::PROCESS_ID, nil, @project_executable, data)
115
- }.to raise_error 'trigger schedule has to be provided'
129
+ schedule = nil
130
+ begin
131
+ expect {
132
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, nil, @project_executable, data)
133
+ }.to raise_error 'trigger schedule has to be provided'
134
+ ensure
135
+ schedule && schedule.delete
136
+ end
116
137
  end
117
138
 
118
139
  it 'Throws exception when no timezone specified' do
119
140
  data = @test_data.deep_dup
120
141
  data[:timezone] = nil
121
- expect {
122
- sched = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, data)
123
- }.to raise_error 'A timezone has to be provided'
142
+ schedule = nil
143
+ begin
144
+ expect {
145
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, data)
146
+ }.to raise_error 'A timezone has to be provided'
147
+ ensure
148
+ schedule && schedule.delete
149
+ end
124
150
  end
125
151
 
126
152
  it 'Throws exception when no timezone specified' do
127
153
  data = @test_data.deep_dup
128
154
  data[:type] = nil
155
+ schedule = nil
156
+ begin
129
157
  expect {
130
- sched = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, data)
158
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, data)
131
159
  }.to raise_error 'Schedule type has to be provided'
160
+ ensure
161
+ schedule && schedule.delete
162
+ end
132
163
  end
133
164
  end
134
165
 
135
166
  describe '#cron' do
136
- before(:each) do
137
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
138
- end
139
-
140
- after(:each) do
141
- @schedule.delete
142
- end
143
-
144
167
  it 'Should return cron as string' do
145
- res = @schedule.cron
146
- res.should_not be_nil
147
- res.should_not be_empty
148
- res.should be_a_kind_of(String)
168
+ schedule = nil
169
+ begin
170
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
171
+ res = schedule.cron
172
+ res.should_not be_nil
173
+ res.should_not be_empty
174
+ res.should be_a_kind_of(String)
175
+ ensure
176
+ schedule && schedule.delete
177
+ end
149
178
  end
150
179
  end
151
180
 
152
181
  describe '#cron=' do
153
- before(:each) do
154
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
155
- end
156
-
157
- after(:each) do
158
- @schedule.delete
159
- end
160
-
161
182
  it 'Assigns the cron and marks the object dirty' do
162
183
  test_cron = '2 2 2 2 *'
163
184
 
164
- @schedule.cron = test_cron
165
- expect(@schedule.cron).to eq(test_cron)
166
- expect(@schedule.dirty).to eq(true)
185
+ begin
186
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
187
+ schedule.cron = test_cron
188
+ expect(schedule.cron).to eq(test_cron)
189
+ expect(schedule.dirty).to eq(true)
190
+ ensure
191
+ schedule && schedule.delete
192
+ end
167
193
  end
168
194
  end
169
195
 
170
196
  describe '#executable' do
171
- before(:each) do
172
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
173
- end
174
-
175
- after(:each) do
176
- @schedule.delete
177
- end
178
-
179
197
  it 'Should return executable as string' do
180
- res = @schedule.executable
181
- res.should_not be_nil
182
- res.should_not be_empty
183
- res.should be_a_kind_of(String)
198
+ begin
199
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
200
+ res = schedule.executable
201
+ res.should_not be_nil
202
+ res.should_not be_empty
203
+ res.should be_a_kind_of(String)
204
+ ensure
205
+ schedule && schedule.delete
206
+ end
184
207
  end
185
208
  end
186
209
 
187
210
  describe '#executable=' do
188
- before(:each) do
189
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
190
- end
191
-
192
- after(:each) do
193
- @schedule.delete
194
- end
195
-
196
211
  it 'Assigns the executable and marks the object dirty' do
197
- test_executable = 'this/is/test.gr'
198
-
199
- @schedule.executable = test_executable
200
- expect(@schedule.executable).to eq(test_executable)
201
- expect(@schedule.dirty).to eq(true)
212
+ test_executable = 'this/is/test.grf'
213
+
214
+ begin
215
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
216
+ schedule.executable = test_executable
217
+ expect(schedule.executable).to eq(test_executable)
218
+ expect(schedule.dirty).to eq(true)
219
+ ensure
220
+ schedule && schedule.delete
221
+ end
202
222
  end
203
223
  end
204
224
 
205
225
  describe '#execute' do
206
- before(:each) do
207
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
208
- @process = @project.deploy_process('./spec/data/gooddata_version_process/gooddata_version.zip',
209
- type: 'RUBY',
210
- name: 'Test ETL zipped file GoodData Process')
211
- @schedule = @process.create_schedule('0 15 27 7 *', @process.executables.first)
212
- end
213
-
214
- after(:each) do
215
- @schedule.delete
216
- end
217
-
218
226
  it 'Waits for execution result by default' do
219
- res = @schedule.execute
220
- expect(res).to be_an_instance_of(GoodData::Execution)
221
- expect([:ok, :error].include?(res.status)).to be_truthy
227
+ begin
228
+ process = @project.deploy_process('./spec/data/gooddata_version_process/gooddata_version.zip',
229
+ type: 'RUBY',
230
+ name: 'Test ETL zipped file GoodData Process')
231
+ schedule = process.create_schedule('0 15 27 7 *', process.executables.first)
232
+ res = schedule.execute
233
+ expect(res).to be_an_instance_of(GoodData::Execution)
234
+ expect([:ok, :error].include?(res.status)).to be_truthy
235
+ ensure
236
+ schedule && schedule.delete
237
+ process && process.delete
238
+ end
222
239
  end
223
240
 
224
241
  it 'can be overridden to do not wait for execution result' do
225
- res = @schedule.execute(:wait => false)
226
- expect(res).to be_an_instance_of(GoodData::Execution)
227
- expect([:scheduled, :running].include?(res.status)).to be_truthy
242
+ begin
243
+ process = @project.deploy_process('./spec/data/gooddata_version_process/gooddata_version.zip',
244
+ type: 'RUBY',
245
+ name: 'Test ETL zipped file GoodData Process')
246
+ schedule = process.create_schedule('0 15 27 7 *', process.executables.first)
247
+ res = schedule.execute(:wait => false)
248
+ expect(res).to be_an_instance_of(GoodData::Execution)
249
+ expect([:scheduled, :running].include?(res.status)).to be_truthy
250
+ ensure
251
+ schedule && schedule.delete
252
+ process && process.delete
253
+ end
228
254
  end
229
255
  end
230
256
 
231
257
  describe '#execution_url' do
232
- before(:each) do
233
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
234
- end
235
-
236
- after(:each) do
237
- @schedule.delete
238
- end
239
-
240
258
  it 'Should return execution URL as string' do
241
- res = @schedule.execution_url
242
- res.should_not be_nil
243
- res.should_not be_empty
244
- res.should be_a_kind_of(String)
259
+ begin
260
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
261
+ res = schedule.execution_url
262
+ res.should_not be_nil
263
+ res.should_not be_empty
264
+ res.should be_a_kind_of(String)
265
+ ensure
266
+ schedule && schedule.delete
267
+ end
245
268
  end
246
269
  end
247
270
 
248
271
  describe '#type' do
249
-
250
- before(:each) do
251
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
252
- end
253
-
254
- after(:each) do
255
- @schedule.delete
256
- end
257
-
258
272
  it 'Should return execution type as string' do
259
- res = @schedule.type
260
- res.should_not be_nil
261
- res.should be_a_kind_of(String)
273
+ begin
274
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
275
+ res = schedule.type
276
+ res.should_not be_nil
277
+ res.should be_a_kind_of(String)
278
+ ensure
279
+ schedule && schedule.delete
280
+ end
262
281
  end
263
282
  end
264
283
 
265
284
  describe '#hidden_params' do
266
- before(:each) do
267
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
268
- end
269
-
270
- after(:each) do
271
- @schedule.delete
272
- end
273
-
274
285
  it 'Should return execution hidden_params as hash' do
275
- res = @schedule.hidden_params
276
- res.should_not be_nil
277
- res.should be_a_kind_of(Hash)
286
+ begin
287
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
288
+ res = schedule.hidden_params
289
+ res.should_not be_nil
290
+ res.should be_a_kind_of(Hash)
291
+ ensure
292
+ schedule && schedule.delete
293
+ end
278
294
  end
279
295
  end
280
296
 
281
297
  describe '#hidden_params=' do
282
- before(:each) do
283
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
284
- end
285
-
286
- after(:each) do
287
- @schedule.delete
288
- end
289
-
290
298
  it 'Assigns the hidden params and marks the object dirty' do
291
- @old_params = @schedule.hidden_params
292
-
293
- test_params = {
294
- 'PROCESS_ID' => '1-2-3-4'
295
- }
296
-
297
- @schedule.hidden_params = test_params
298
- expect(@schedule.hidden_params).to eq(@old_params.merge(test_params))
299
- expect(@schedule.dirty).to eq(true)
299
+ begin
300
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
301
+ old_params = schedule.hidden_params
302
+
303
+ test_params = {
304
+ 'PROCESS_ID' => '1-2-3-4'
305
+ }
306
+
307
+ schedule.hidden_params = test_params
308
+ expect(schedule.hidden_params).to eq(old_params.merge(test_params))
309
+ expect(schedule.dirty).to eq(true)
310
+ ensure
311
+ schedule && schedule.delete
312
+ end
300
313
  end
301
314
  end
302
315
 
303
316
  describe '#params' do
304
- before(:each) do
305
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
306
- end
307
-
308
- after(:each) do
309
- @schedule.delete
310
- end
311
-
312
317
  it 'Should return execution params as hash' do
313
- res = @schedule.params
314
- res.should_not be_nil
315
- res.should_not be_empty
316
- res.should be_a_kind_of(Hash)
318
+ begin
319
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
320
+ res = schedule.params
321
+ res.should_not be_nil
322
+ res.should_not be_empty
323
+ res.should be_a_kind_of(Hash)
324
+ ensure
325
+ schedule && schedule.delete
326
+ end
317
327
  end
318
328
  end
319
329
 
320
330
  describe '#params=' do
321
- before(:each) do
322
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
323
- end
324
-
325
- after(:each) do
326
- @schedule.delete
327
- end
328
-
329
331
  it 'Assigns the params and marks the object dirty' do
330
- @old_params = @schedule.params
331
-
332
- test_params = {
333
- 'PROCESS_ID' => '1-2-3-4'
334
- }
335
-
336
- @schedule.params = test_params
337
- expect(@schedule.params).to eq(@old_params.merge(test_params))
338
- expect(@schedule.dirty).to eq(true)
332
+ begin
333
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
334
+ old_params = schedule.params
335
+
336
+ test_params = {
337
+ 'PROCESS_ID' => '1-2-3-4'
338
+ }
339
+
340
+ schedule.params = test_params
341
+ expect(schedule.params).to eq(old_params.merge(test_params))
342
+ expect(schedule.dirty).to eq(true)
343
+ ensure
344
+ schedule && schedule.delete
345
+ end
339
346
  end
340
347
  end
341
348
 
342
349
  describe '#process_id' do
343
- before(:each) do
344
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
345
- end
346
-
347
- after(:each) do
348
- @schedule.delete
349
- end
350
-
351
350
  it 'Should return process id as string' do
352
- res = @schedule.process_id
353
- res.should_not be_nil
354
- res.should_not be_empty
355
- res.should be_a_kind_of(String)
351
+ begin
352
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
353
+ res = schedule.process_id
354
+ res.should_not be_nil
355
+ res.should_not be_empty
356
+ res.should be_a_kind_of(String)
357
+ ensure
358
+ schedule && schedule.delete
359
+ end
356
360
  end
357
361
  end
358
362
 
359
363
  describe '#process_id=' do
360
- before(:each) do
361
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
362
- end
363
-
364
- after(:each) do
365
- @schedule.delete
366
- end
367
-
368
364
  it 'Assigns the process_id and marks the object dirty' do
369
365
  test_process_id = '1-2-3-4'
370
366
 
371
- @schedule.process_id = test_process_id
372
- expect(@schedule.process_id).to eq(test_process_id)
373
- expect(@schedule.dirty).to eq(true)
367
+ begin
368
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
369
+ schedule.process_id = test_process_id
370
+ expect(schedule.process_id).to eq(test_process_id)
371
+ expect(schedule.dirty).to eq(true)
372
+ ensure
373
+ schedule && schedule.delete
374
+ end
374
375
  end
375
376
  end
376
377
 
377
378
  describe '#save' do
378
- before(:each) do
379
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
380
- end
381
-
382
- after(:each) do
383
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
384
- end
385
-
386
379
  it 'Should save a schedule' do
387
- expect(@project.schedules(@schedule.uri)).to eq @schedule
388
- expect(@client.projects(ProjectHelper::PROJECT_ID).schedules).to include(@schedule)
380
+ begin
381
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
382
+ expect(@project.schedules(schedule.uri)).to eq schedule
383
+ expect(@project.schedules).to include(schedule)
384
+ ensure
385
+ schedule && schedule.delete
386
+ end
389
387
  end
390
388
  end
391
389
 
392
390
  describe '#state' do
393
- before(:each) do
394
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
395
- end
396
-
397
- after(:each) do
398
- @schedule.delete
399
- end
400
-
401
391
  it 'Should return execution state as string' do
402
- res = @schedule.state
403
- res.should_not be_nil
404
- res.should_not be_empty
405
- res.should be_a_kind_of(String)
392
+ begin
393
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
394
+ res = schedule.state
395
+ res.should_not be_nil
396
+ res.should_not be_empty
397
+ res.should be_a_kind_of(String)
398
+ ensure
399
+ schedule && schedule.delete
400
+ end
406
401
  end
407
402
  end
408
403
 
409
404
  describe '#type' do
410
- before(:each) do
411
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
412
- end
413
-
414
- after(:each) do
415
- @schedule.delete
416
- end
417
-
418
405
  it 'Should return execution type as string' do
419
- res = @schedule.type
420
- res.should_not be_nil
421
- res.should_not be_empty
422
- res.should be_a_kind_of(String)
406
+ begin
407
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
408
+ res = schedule.type
409
+ res.should_not be_nil
410
+ res.should_not be_empty
411
+ res.should be_a_kind_of(String)
412
+ ensure
413
+ schedule && schedule.delete
414
+ end
423
415
  end
424
416
  end
425
417
 
426
418
  describe '#type=' do
427
- before(:each) do
428
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
429
- end
430
-
431
- after(:each) do
432
- @schedule.delete
433
- end
434
-
435
419
  it 'Assigns the type the object dirty' do
436
420
  test_type = 'TEST'
437
421
 
438
- @schedule.type = test_type
439
- expect(@schedule.type).to eq(test_type)
440
- expect(@schedule.dirty).to eq(true)
422
+ begin
423
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
424
+ schedule.type = test_type
425
+ expect(schedule.type).to eq(test_type)
426
+ expect(schedule.dirty).to eq(true)
427
+ ensure
428
+ schedule && schedule.delete
429
+ end
441
430
  end
442
431
  end
443
432
 
444
433
  describe '#timezone' do
445
- before(:each) do
446
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
447
- end
448
-
449
- after(:each) do
450
- @schedule.delete
451
- end
452
-
453
434
  it 'Should return timezone as string' do
454
- res = @schedule.timezone
455
- res.should_not be_nil
456
- res.should_not be_empty
457
- res.should be_a_kind_of(String)
435
+ begin
436
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
437
+ res = schedule.timezone
438
+ res.should_not be_nil
439
+ res.should_not be_empty
440
+ res.should be_a_kind_of(String)
441
+ ensure
442
+ schedule && schedule.delete
443
+ end
458
444
  end
459
445
  end
460
446
 
461
447
  describe '#timezone=' do
462
- before(:each) do
463
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
464
- end
465
-
466
- after(:each) do
467
- @schedule.delete
468
- end
469
-
470
448
  it 'Assigns the timezone and marks the object dirty' do
471
449
  test_timezone = 'PST'
472
450
 
473
- @schedule.timezone = test_timezone
474
- expect(@schedule.timezone).to eq(test_timezone)
475
- expect(@schedule.dirty).to eq(true)
451
+ begin
452
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data)
453
+ schedule.timezone = test_timezone
454
+ expect(schedule.timezone).to eq(test_timezone)
455
+ expect(schedule.dirty).to eq(true)
456
+ ensure
457
+ schedule && schedule.delete
458
+ end
476
459
  end
477
460
  end
478
461
 
479
462
  describe '#reschedule' do
480
- before(:each) do
481
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
482
- end
483
-
484
- after(:each) do
485
- @schedule.delete
486
- end
487
-
488
463
  it 'Should return reschedule as integer' do
489
- res = @schedule.reschedule
490
- res.should_not be_nil
491
- res.should be_a_kind_of(Integer)
464
+ begin
465
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
466
+ res = schedule.reschedule
467
+ res.should_not be_nil
468
+ res.should be_a_kind_of(Integer)
469
+ ensure
470
+ schedule && schedule.delete
471
+ end
492
472
  end
493
473
  end
494
474
 
495
475
  describe '#reschedule=' do
496
- before(:each) do
497
- @schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
498
- end
499
-
500
- after(:each) do
501
- @schedule.delete
502
- end
503
-
504
476
  it 'Assigns the reschedule and marks the object dirty' do
505
477
  test_reschedule = 45
506
-
507
- @schedule.reschedule = test_reschedule
508
- expect(@schedule.reschedule).to eq(test_reschedule)
509
- expect(@schedule.dirty).to eq(true)
478
+
479
+ begin
480
+ schedule = @project.create_schedule(ProcessHelper::PROCESS_ID, @test_cron, @project_executable, @test_data_with_optional_param)
481
+ schedule.reschedule = test_reschedule
482
+ expect(schedule.reschedule).to eq(test_reschedule)
483
+ expect(schedule.dirty).to eq(true)
484
+ ensure
485
+ schedule && schedule.delete
486
+ end
510
487
  end
511
488
  end
512
489
  end