spec/integration/segments_spec.rb in gooddata-0.6.49 vs spec/integration/segments_spec.rb in gooddata-0.6.50
- old
+ new
@@ -1,35 +1,40 @@
# encoding: UTF-8
#
-# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
+# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
require 'gooddata/models/segment'
require 'securerandom'
describe GoodData::Segment do
- TOKEN = 'mustangs'
-
before(:all) do
- @client = GoodData.connect('mustang@gooddata.com', 'jindrisska', server: 'https://mustangs.intgdc.com', verify_ssl: false )
- @domain = @client.domain('mustangs')
+ @client = ConnectionHelper.create_default_connection
+ @domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
+ GoodData::Segment.all(domain: @domain).each do |segment|
+ begin
+ segment.delete
+ rescue StandardError => e
+ GoodData.logger.warn "Failed to delete segment: #{e}"
+ end
+ end
end
before(:each) do
@uuid = SecureRandom.uuid
- @master_project = @client.create_project(title: "Test MASTER project for #{@uuid}", auth_token: TOKEN)
+ @master_project = @client.create_project(title: "Test MASTER project for #{@uuid}", auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
@segment_name = "segment-#{@uuid}"
@segment = @domain.create_segment(segment_id: @segment_name, master_project: @master_project)
end
after(:each) do
+ @master_project.delete if @master_project
@segment && @segment.delete(force: true)
end
after(:all) do
- @master_project.delete if @master_project
@client.disconnect
end
describe '#[]' do
it 'Returns all segments when :all passed' do
@@ -37,53 +42,58 @@
expect(res).to be_an_instance_of(Array)
end
it 'Returns specific segment when segment ID passed' do
s = @domain.segments(@segment_name)
- @segment.uri == s.uri
+ expect(@segment.uri).to eq s.uri
expect(s).to be_an_instance_of(GoodData::Segment)
expect(@segment).to be_an_instance_of(GoodData::Segment)
end
end
describe '#delete' do
it 'Deletes particular segment' do
old_count = @domain.segments.count
s = @domain.segments(@segment_name)
s.delete
- expect(@domain.segments.length).to eq (old_count - 1)
+ expect(@domain.segments.length).to eq(old_count - 1)
# prevent delete attempt in the after hook
@segment = nil
end
end
describe '#save' do
it 'can update a segment master project' do
- different_master = @client.create_project(title: 'Test project', auth_token: TOKEN)
- @segment.master_project = different_master
- @segment.save
- @segment = @domain.segments(@segment_name)
- expect(@segment.master_project_uri).not_to eq @master_project.uri
- expect(@segment.master_project_uri).to eq different_master.uri
+ begin
+ different_master = @client.create_project(title: 'Test project', auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
+ @segment.master_project = different_master
+ @segment.save
+ @segment = @domain.segments(@segment_name)
+ expect(@segment.master_project_uri).not_to eq @master_project.uri
+ expect(@segment.master_project_uri).to eq different_master.uri
+ ensure
+ different_master.delete if different_master
+ end
end
it 'cannot update a segment id' do
@segment.segment_id = 'different_id'
- expect {
+ expect do
@segment.save
- }.to raise_error RestClient::BadRequest
+ end.to raise_error RestClient::BadRequest
end
end
describe '#create_client' do
it 'can create a new client in a segment' do
begin
- client_project = @client.create_project(title: 'client_1 project', auth_token: TOKEN)
+ client_project = @client.create_project(title: 'client_1 project', auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
segment_client = @segment.create_client(id: 'tenant_1', project: client_project)
expect(segment_client).to be_an_instance_of(GoodData::Client)
expect(@segment.clients.count).to eq 1
ensure
+ client_project.delete if client_project
segment_client && segment_client.delete
end
end
end
@@ -104,37 +114,38 @@
describe '#update_clients' do
it 'can create a new client in a segment without project and then provision' do
begin
uuid_2 = SecureRandom.uuid
- master_project_2 = @client.create_project(title: "Test MASTER project for #{uuid_2}", auth_token: TOKEN)
+ master_project_2 = @client.create_project(title: "Test MASTER project for #{uuid_2}", auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
segment_name_2 = "segment-#{uuid_2}"
segment_2 = @domain.create_segment(segment_id: segment_name_2, master_project: master_project_2)
client_1 = "client-#{SecureRandom.uuid}"
client_2 = "client-#{SecureRandom.uuid}"
- data = [{id: client_1, segment: segment_name_2 },
- {id: client_2, segment: @segment_name }]
- res = @domain.update_clients(data)
+ data = [{ id: client_1, segment: segment_name_2 },
+ { id: client_2, segment: @segment_name }]
+ @domain.update_clients(data)
expect(@domain.segments.map(&:id)).to include(@segment.id, segment_2.id)
- expect(@domain.segments.pmapcat {|s| s.clients.to_a }.map(&:id)).to include(client_1, client_2)
+ expect(@domain.segments.pmapcat { |s| s.clients.to_a }.map(&:id)).to include(client_1, client_2)
client_3 = "client-#{SecureRandom.uuid}"
client_4 = "client-#{SecureRandom.uuid}"
- data = [{id: client_3, segment: segment_name_2 },
- {id: client_4, segment: @segment_name }]
- res = @domain.update_clients(data)
- expect(@domain.segments.pmapcat {|s| s.clients.to_a }.map(&:id)).to include(client_1, client_2, client_3, client_4)
+ data = [{ id: client_3, segment: segment_name_2 },
+ { id: client_4, segment: @segment_name }]
+ @domain.update_clients(data)
+ expect(@domain.segments.pmapcat { |s| s.clients.to_a }.map(&:id)).to include(client_1, client_2, client_3, client_4)
# bring the projects
@domain.synchronize_clients
@domain.provision_client_projects
- projects_to_delete = @domain.segments.pmapcat {|s| s.clients.to_a }.select { |c| [client_1, client_2].include?(c.id) }.map(&:project)
- res = @domain.update_clients(data, delete_extra: true)
- expect(@domain.segments.pmapcat {|s| s.clients.to_a }.map(&:id)).to include(client_3, client_4)
- expect(@domain.segments.pmapcat {|s| s.clients.to_a }.map(&:id)).not_to include(client_1, client_2)
+ projects_to_delete = @domain.segments.pmapcat { |s| s.clients.to_a }.select { |c| [client_1, client_2].include?(c.id) }.map(&:project)
+ @domain.update_clients(data, delete_extra: true)
+ expect(@domain.segments.pmapcat { |s| s.clients.to_a }.map(&:id)).to include(client_3, client_4)
+ expect(@domain.segments.pmapcat { |s| s.clients.to_a }.map(&:id)).not_to include(client_1, client_2)
expect(projects_to_delete.pmap(&:reload!).map(&:state)).to eq [:deleted, :deleted]
ensure
+ master_project_2.delete if master_project_2
segment_2.delete(force: true) if segment_2
end
end
end
end