diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-29 15:09:20 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-29 15:09:20 +0300 |
commit | a0b26c6df5eb37ba347a0ffb3bb54ddaab7979a8 (patch) | |
tree | b39a9cae3bfe890917b9e99d280813f18007461d /spec/models/project_services/gitlab_issue_tracker_service_spec.rb | |
parent | 9ce66d4dcfe444ac27fb13b3e064de8bbf3572ef (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/project_services/gitlab_issue_tracker_service_spec.rb')
-rw-r--r-- | spec/models/project_services/gitlab_issue_tracker_service_spec.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/spec/models/project_services/gitlab_issue_tracker_service_spec.rb b/spec/models/project_services/gitlab_issue_tracker_service_spec.rb new file mode 100644 index 00000000000..a6b7cb05836 --- /dev/null +++ b/spec/models/project_services/gitlab_issue_tracker_service_spec.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe GitlabIssueTrackerService do + describe "Associations" do + it { is_expected.to belong_to :project } + it { is_expected.to have_one :service_hook } + end + + describe 'Validations' do + context 'when service is active' do + subject { described_class.new(project: create(:project), active: true) } + + it { is_expected.to validate_presence_of(:issues_url) } + it_behaves_like 'issue tracker service URL attribute', :issues_url + end + + context 'when service is inactive' do + subject { described_class.new(project: create(:project), active: false) } + + it { is_expected.not_to validate_presence_of(:issues_url) } + end + end + + describe 'project and issue urls' do + let(:project) { create(:project) } + let(:service) { project.create_gitlab_issue_tracker_service(active: true) } + + context 'with absolute urls' do + before do + allow(described_class).to receive(:default_url_options).and_return(script_name: "/gitlab/root") + end + + it 'gives the correct path' do + expect(service.project_url).to eq("http://#{Gitlab.config.gitlab.host}/gitlab/root/#{project.full_path}/-/issues") + expect(service.new_issue_url).to eq("http://#{Gitlab.config.gitlab.host}/gitlab/root/#{project.full_path}/-/issues/new") + expect(service.issue_url(432)).to eq("http://#{Gitlab.config.gitlab.host}/gitlab/root/#{project.full_path}/-/issues/432") + end + end + + context 'with relative urls' do + before do + allow(described_class).to receive(:default_url_options).and_return(script_name: "/gitlab/root") + end + + it 'gives the correct path' do + expect(service.issue_tracker_path).to eq("/gitlab/root/#{project.full_path}/-/issues") + expect(service.new_issue_path).to eq("/gitlab/root/#{project.full_path}/-/issues/new") + expect(service.issue_path(432)).to eq("/gitlab/root/#{project.full_path}/-/issues/432") + end + end + end +end |