diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-12 15:09:37 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-12 15:09:37 +0000 |
commit | 2c89e169769ead722394a79ed67fcd08e96863dd (patch) | |
tree | 0dadb576846c484475b895f75fab41f71cdb952e /spec/models/project_services | |
parent | bd497e352ebd279536ae11855871162e82a3f88c (diff) | |
download | gitlab-ce-2c89e169769ead722394a79ed67fcd08e96863dd.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/project_services')
3 files changed, 112 insertions, 3 deletions
diff --git a/spec/models/project_services/alerts_service_spec.rb b/spec/models/project_services/alerts_service_spec.rb new file mode 100644 index 00000000000..4e63ece26d8 --- /dev/null +++ b/spec/models/project_services/alerts_service_spec.rb @@ -0,0 +1,109 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe AlertsService do + let_it_be(:project) { create(:project) } + let(:service_params) { { project: project, active: active } } + let(:active) { true } + let(:service) { described_class.new(service_params) } + + shared_context 'when active' do + let(:active) { true } + end + + shared_context 'when inactive' do + let(:active) { false } + end + + shared_context 'when persisted' do + before do + service.save! + service.reload + end + end + + describe '#url' do + include Gitlab::Routing + + subject { service.url } + + it { is_expected.to eq(project_alerts_notify_url(project, format: :json)) } + end + + describe '#json_fields' do + subject { service.json_fields } + + it { is_expected.to eq(%w(active token)) } + end + + describe '#as_json' do + subject { service.as_json(only: service.json_fields) } + + it { is_expected.to eq('active' => true, 'token' => nil) } + end + + describe '#token' do + shared_context 'reset token' do + before do + service.token = '' + service.valid? + end + end + + shared_context 'assign token' do |token| + before do + service.token = token + service.valid? + end + end + + shared_examples 'valid token' do + it { is_expected.to match(/\A\h{32}\z/) } + end + + shared_examples 'no token' do + it { is_expected.to be_blank } + end + + subject { service.token } + + context 'when active' do + include_context 'when active' + + context 'when resetting' do + let!(:previous_token) { service.token } + + include_context 'reset token' + + it_behaves_like 'valid token' + + it { is_expected.not_to eq(previous_token) } + end + + context 'when assigning' do + include_context 'assign token', 'random token' + + it_behaves_like 'valid token' + end + end + + context 'when inactive' do + include_context 'when inactive' + + context 'when resetting' do + let!(:previous_token) { service.token } + + include_context 'reset token' + + it_behaves_like 'no token' + end + end + + context 'when persisted' do + include_context 'when persisted' + + it_behaves_like 'valid token' + end + end +end diff --git a/spec/models/project_services/microsoft_teams_service_spec.rb b/spec/models/project_services/microsoft_teams_service_spec.rb index 83d3c8b3a70..d93b8a2cb40 100644 --- a/spec/models/project_services/microsoft_teams_service_spec.rb +++ b/spec/models/project_services/microsoft_teams_service_spec.rb @@ -37,9 +37,9 @@ describe MicrosoftTeamsService do end describe "#execute" do - let(:user) { create(:user) } + let(:user) { create(:user) } - set(:project) { create(:project, :repository, :wiki_repo) } + let_it_be(:project) { create(:project, :repository, :wiki_repo) } before do allow(chat_service).to receive_messages( diff --git a/spec/models/project_services/prometheus_service_spec.rb b/spec/models/project_services/prometheus_service_spec.rb index 49005d8c681..1922bb065cf 100644 --- a/spec/models/project_services/prometheus_service_spec.rb +++ b/spec/models/project_services/prometheus_service_spec.rb @@ -169,7 +169,7 @@ describe PrometheusService, :use_clean_rails_memory_store_caching do end context 'cluster belongs to projects group' do - set(:group) { create(:group) } + let_it_be(:group) { create(:group) } let(:project) { create(:prometheus_project, group: group) } let(:cluster) { create(:cluster_for_group, :with_installed_helm, groups: [group]) } |