Skip to content
Snippets Groups Projects
Verified Commit 614c0e0b authored by Matija Čupić's avatar Matija Čupić
Browse files

Update GCP feature spec with check page flow

parent 886fd13f
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -20,105 +20,124 @@ feature 'Gcp Cluster', :js do
.to receive(:expires_at_in_session).and_return(1.hour.since.to_i.to_s)
end
 
context 'when user does not have a cluster and visits cluster index page' do
context 'when user has a GCP project with billing enabled' do
before do
visit project_clusters_path(project)
click_link 'Add cluster'
click_link 'Create on GKE'
stub_google_project_billing_status
end
 
context 'when user filled form with valid parameters' do
context 'when user does not have a cluster and visits cluster index page' do
before do
allow_any_instance_of(GoogleApi::CloudPlatform::Client)
.to receive(:projects_zones_clusters_create) do
OpenStruct.new(
self_link: 'projects/gcp-project-12345/zones/us-central1-a/operations/ope-123',
status: 'RUNNING'
)
visit project_clusters_path(project)
click_link 'Add cluster'
click_link 'Create on GKE'
end
context 'when user filled form with valid parameters' do
before do
allow_any_instance_of(GoogleApi::CloudPlatform::Client)
.to receive(:projects_zones_clusters_create) do
OpenStruct.new(
self_link: 'projects/gcp-project-12345/zones/us-central1-a/operations/ope-123',
status: 'RUNNING'
)
end
allow(WaitForClusterCreationWorker).to receive(:perform_in).and_return(nil)
fill_in 'cluster_provider_gcp_attributes_gcp_project_id', with: 'gcp-project-123'
fill_in 'cluster_name', with: 'dev-cluster'
click_button 'Create cluster'
end
 
allow(WaitForClusterCreationWorker).to receive(:perform_in).and_return(nil)
it 'user sees a cluster details page and creation status' do
expect(page).to have_content('Cluster is being created on Google Kubernetes Engine...')
 
fill_in 'cluster_provider_gcp_attributes_gcp_project_id', with: 'gcp-project-123'
fill_in 'cluster_name', with: 'dev-cluster'
click_button 'Create cluster'
end
Clusters::Cluster.last.provider.make_created!
 
it 'user sees a cluster details page and creation status' do
expect(page).to have_content('Cluster is being created on Google Kubernetes Engine...')
expect(page).to have_content('Cluster was successfully created on Google Kubernetes Engine')
end
 
Clusters::Cluster.last.provider.make_created!
it 'user sees a error if something worng during creation' do
expect(page).to have_content('Cluster is being created on Google Kubernetes Engine...')
 
expect(page).to have_content('Cluster was successfully created on Google Kubernetes Engine')
end
Clusters::Cluster.last.provider.make_errored!('Something wrong!')
 
it 'user sees a error if something worng during creation' do
expect(page).to have_content('Cluster is being created on Google Kubernetes Engine...')
expect(page).to have_content('Something wrong!')
end
end
 
Clusters::Cluster.last.provider.make_errored!('Something wrong!')
context 'when user filled form with invalid parameters' do
before do
click_button 'Create cluster'
end
 
expect(page).to have_content('Something wrong!')
it 'user sees a validation error' do
expect(page).to have_css('#error_explanation')
end
end
end
 
context 'when user filled form with invalid parameters' do
context 'when user does have a cluster and visits cluster page' do
let(:cluster) { create(:cluster, :provided_by_gcp, projects: [project]) }
before do
click_button 'Create cluster'
visit project_cluster_path(project, cluster)
end
 
it 'user sees a validation error' do
expect(page).to have_css('#error_explanation')
it 'user sees a cluster details page' do
expect(page).to have_button('Save')
expect(page.find(:css, '.cluster-name').value).to eq(cluster.name)
end
end
end
 
context 'when user does have a cluster and visits cluster page' do
let(:cluster) { create(:cluster, :provided_by_gcp, projects: [project]) }
context 'when user disables the cluster' do
before do
page.find(:css, '.js-toggle-cluster').click
click_button 'Save'
end
 
before do
visit project_cluster_path(project, cluster)
end
it 'user sees the successful message' do
expect(page).to have_content('Cluster was successfully updated.')
end
end
 
it 'user sees a cluster details page' do
expect(page).to have_button('Save')
expect(page.find(:css, '.cluster-name').value).to eq(cluster.name)
end
context 'when user changes cluster parameters' do
before do
fill_in 'cluster_platform_kubernetes_attributes_namespace', with: 'my-namespace'
click_button 'Save changes'
end
 
context 'when user disables the cluster' do
before do
page.find(:css, '.js-toggle-cluster').click
click_button 'Save'
it 'user sees the successful message' do
expect(page).to have_content('Cluster was successfully updated.')
expect(cluster.reload.platform_kubernetes.namespace).to eq('my-namespace')
end
end
 
it 'user sees the successful message' do
expect(page).to have_content('Cluster was successfully updated.')
context 'when user destroy the cluster' do
before do
page.accept_confirm do
click_link 'Remove integration'
end
end
it 'user sees creation form with the successful message' do
expect(page).to have_content('Cluster integration was successfully removed.')
expect(page).to have_link('Add cluster')
end
end
end
end
 
context 'when user changes cluster parameters' do
before do
fill_in 'cluster_platform_kubernetes_attributes_namespace', with: 'my-namespace'
click_button 'Save changes'
end
context 'when user does not have a GCP project with billing enabled' do
before do
visit project_clusters_path(project)
 
it 'user sees the successful message' do
expect(page).to have_content('Cluster was successfully updated.')
expect(cluster.reload.platform_kubernetes.namespace).to eq('my-namespace')
end
click_link 'Add cluster'
click_link 'Create on GKE'
end
 
context 'when user destroy the cluster' do
before do
page.accept_confirm do
click_link 'Remove integration'
end
end
it 'user sees creation form with the successful message' do
expect(page).to have_content('Cluster integration was successfully removed.')
expect(page).to have_link('Add cluster')
end
it 'user sees a check page' do
expect(page).to have_link('Continue')
end
end
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment