gitlab-ce/spec/helpers/ci/status_helper_spec.rb

114 lines
3.9 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Ci::StatusHelper do
include IconsHelper
let(:success_commit) { double("Ci::Pipeline", status: 'success') }
let(:failed_commit) { double("Ci::Pipeline", status: 'failed') }
describe "#render_ci_icon" do
subject { helper.render_ci_icon("success") }
it "has 'Pipeline' as the status type in the title" do
is_expected.to include("title=\"Pipeline: passed\"")
end
it "has the success status icon" do
is_expected.to include("ci-icon-variant-success")
end
context "when pipeline has commit path" do
subject { helper.render_ci_icon("success", "/commit-path") }
it "links to commit" do
is_expected.to include("href=\"/commit-path\"")
end
it "has 'Pipeline' as the status type in the title" do
is_expected.to include("title=\"Pipeline: passed\"")
end
it "has the correct status icon" do
is_expected.to include("ci-icon-variant-success")
end
end
context "when showing status text" do
subject do
detailed_status = Gitlab::Ci::Status::Success.new(build(:ci_build, :success), build(:user))
helper.render_ci_icon(detailed_status, show_status_text: true)
end
it "contains status text" do
is_expected.to include("data-testid=\"ci-icon-text\"")
is_expected.to include("passed")
end
end
context "when tooltip_placement is provided" do
subject { helper.render_ci_icon("success", tooltip_placement: "right") }
it "has the provided tooltip placement" do
is_expected.to include("data-placement=\"right\"")
end
end
context "when container is provided" do
subject { helper.render_ci_icon("success", container: "my-container") }
it "has the provided container in data" do
is_expected.to include("data-container=\"my-container\"")
end
end
context "when status is success-with-warnings" do
subject { helper.render_ci_icon("success-with-warnings") }
it "renders warning variant of gl-badge" do
is_expected.to include('gl-badge badge badge-pill badge-warning')
end
end
context "when status is manual" do
subject { helper.render_ci_icon("manual") }
it "renders neutral variant of gl-badge" do
is_expected.to include('gl-badge badge badge-pill badge-neutral')
end
end
describe 'badge and icon appearance' do
using RSpec::Parameterized::TableSyntax
where(:status, :icon, :badge_variant) do
'success' | 'status_success_borderless' | 'success'
'success-with-warnings' | 'status_warning_borderless' | 'warning'
'pending' | 'status_pending_borderless' | 'warning'
'waiting-for-resource' | 'status_pending_borderless' | 'warning'
'failed' | 'status_failed_borderless' | 'danger'
'running' | 'status_running_borderless' | 'info'
'preparing' | 'status_preparing_borderless' | 'neutral'
'canceled' | 'status_canceled_borderless' | 'neutral'
'created' | 'status_created_borderless' | 'neutral'
'scheduled' | 'status_scheduled_borderless' | 'neutral'
'play' | 'play' | 'neutral'
'skipped' | 'status_skipped_borderless' | 'neutral'
'manual' | 'status_manual_borderless' | 'neutral'
'other-status' | 'status_canceled_borderless' | 'neutral'
end
with_them do
subject { helper.render_ci_icon(status) }
it 'uses the correct variant and icon for status' do
is_expected.to include("gl-badge badge badge-pill badge-#{badge_variant}")
is_expected.to include("ci-icon-variant-#{badge_variant}")
is_expected.to include("data-testid=\"#{icon}-icon\"")
end
end
end
end
end