diff options
author | Shinya Maeda <shinya@gitlab.com> | 2017-11-22 23:21:02 +0900 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2017-11-28 20:47:59 +0900 |
commit | 5324383dba07d60407a5b947f27695867ad45843 (patch) | |
tree | 0ee63f9db573953a84d0b34b99d1312cc4149ab7 /spec/features/projects/clusters/interchangeability_spec.rb | |
parent | 45f2d0af4173ae8e06b548c4bef1fabe14353c85 (diff) | |
download | gitlab-ce-5324383dba07d60407a5b947f27695867ad45843.tar.gz |
Add test for checking interchangeability between KubernetesService and Clusters::Platform::Kubernetes
Diffstat (limited to 'spec/features/projects/clusters/interchangeability_spec.rb')
-rw-r--r-- | spec/features/projects/clusters/interchangeability_spec.rb | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/spec/features/projects/clusters/interchangeability_spec.rb b/spec/features/projects/clusters/interchangeability_spec.rb new file mode 100644 index 00000000000..b454839e8e2 --- /dev/null +++ b/spec/features/projects/clusters/interchangeability_spec.rb @@ -0,0 +1,45 @@ +require 'spec_helper' + +feature 'Interchangeability between KubernetesService and Platform::Kubernetes' do + let!(:project) { create(:project, :repository) } + + EXCEPT_METHODS = %i[test title description help fields initialize_properties namespace namespace= api_url api_url=] + EXCEPT_METHODS_GREP_V = %w[_touched? _changed? _was] + + it 'Clusters::Platform::Kubernetes covers core interfaces in KubernetesService' do + expected_interfaces = KubernetesService.instance_methods(false) + expected_interfaces = expected_interfaces - EXCEPT_METHODS + EXCEPT_METHODS_GREP_V.each do |g| + expected_interfaces = expected_interfaces.grep_v(/#{Regexp.escape(g)}\z/) + end + + expect(expected_interfaces - Clusters::Platforms::Kubernetes.instance_methods).to be_empty + end + + shared_examples 'selects kubernetes instance' do + context 'when user configured kubernetes from Integration > Kubernetes' do + let!(:kubernetes_service) { create(:kubernetes_service, project: project) } + + it { is_expected.to eq(kubernetes_service) } + end + + context 'when user configured kubernetes from CI/CD > Clusters' do + let!(:cluster) { create(:cluster, :provided_by_gcp, projects: [project]) } + let(:platform_kubernetes) { cluster.platform_kubernetes } + + it { is_expected.to eq(platform_kubernetes) } + end + end + + describe 'Project#deployment_service' do + subject { project.deployment_service } + + it_behaves_like 'selects kubernetes instance' + end + + describe 'Project#kubernetes_service' do + subject { project.kubernetes_service } + + it_behaves_like 'selects kubernetes instance' + end +end |