diff options
Diffstat (limited to 'spec/components/pajamas')
-rw-r--r-- | spec/components/pajamas/alert_component_spec.rb | 100 |
1 files changed, 69 insertions, 31 deletions
diff --git a/spec/components/pajamas/alert_component_spec.rb b/spec/components/pajamas/alert_component_spec.rb index 628d715ff64..e596f07a15a 100644 --- a/spec/components/pajamas/alert_component_spec.rb +++ b/spec/components/pajamas/alert_component_spec.rb @@ -2,13 +2,23 @@ require "spec_helper" RSpec.describe Pajamas::AlertComponent, :aggregate_failures, type: :component do - context 'with content' do + context 'slots' do + let_it_be(:body) { 'Alert body' } + let_it_be(:actions) { 'Alert actions' } + before do - render_inline(described_class.new) { '_content_' } + render_inline described_class.new do |c| + c.body { body } + c.actions { actions } + end end - it 'has content' do - expect(rendered_component).to have_text('_content_') + it 'renders alert body' do + expect(rendered_component).to have_content(body) + end + + it 'renders actions' do + expect(rendered_component).to have_content(actions) end end @@ -25,47 +35,71 @@ RSpec.describe Pajamas::AlertComponent, :aggregate_failures, type: :component do it 'renders the default variant' do expect(rendered_component).to have_selector('.gl-alert-info') expect(rendered_component).to have_selector("[data-testid='information-o-icon']") + expect(rendered_component).not_to have_selector('.gl-alert-no-icon') end it 'renders a dismiss button' do expect(rendered_component).to have_selector('.gl-dismiss-btn.js-close') expect(rendered_component).to have_selector("[data-testid='close-icon']") + expect(rendered_component).not_to have_selector('.gl-alert-not-dismissible') end end context 'with custom options' do context 'with simple options' do - context 'without dismissible content' do - before do - render_inline described_class.new( - title: '_title_', - dismissible: false, - alert_class: '_alert_class_', - alert_data: { - feature_id: '_feature_id_', - dismiss_endpoint: '_dismiss_endpoint_' - } - ) - end + before do + render_inline described_class.new( + title: '_title_', + alert_class: '_alert_class_', + alert_data: { + feature_id: '_feature_id_', + dismiss_endpoint: '_dismiss_endpoint_' + } + ) + end - it 'sets the title' do - expect(rendered_component).to have_selector('.gl-alert-title') - expect(rendered_component).to have_content('_title_') - expect(rendered_component).not_to have_selector('.gl-alert-icon-no-title') - end + it 'sets the title' do + expect(rendered_component).to have_selector('.gl-alert-title') + expect(rendered_component).to have_content('_title_') + expect(rendered_component).not_to have_selector('.gl-alert-icon-no-title') + end - it 'sets to not be dismissible' do - expect(rendered_component).not_to have_selector('.gl-dismiss-btn.js-close') - expect(rendered_component).not_to have_selector("[data-testid='close-icon']") - end + it 'sets the alert_class' do + expect(rendered_component).to have_selector('._alert_class_') + end - it 'sets the alert_class' do - expect(rendered_component).to have_selector('._alert_class_') - end + it 'sets the alert_data' do + expect(rendered_component).to have_selector('[data-feature-id="_feature_id_"][data-dismiss-endpoint="_dismiss_endpoint_"]') + end + end - it 'sets the alert_data' do - expect(rendered_component).to have_selector('[data-feature-id="_feature_id_"][data-dismiss-endpoint="_dismiss_endpoint_"]') - end + context 'with dismissible disabled' do + before do + render_inline described_class.new(dismissible: false) + end + + it 'has the "not dismissible" class' do + expect(rendered_component).to have_selector('.gl-alert-not-dismissible') + end + + it 'does not render the dismiss button' do + expect(rendered_component).not_to have_selector('.gl-dismiss-btn.js-close') + expect(rendered_component).not_to have_selector("[data-testid='close-icon']") + end + end + + context 'with the icon hidden' do + before do + render_inline described_class.new(show_icon: false) + end + + it 'has the hidden icon class' do + expect(rendered_component).to have_selector('.gl-alert-no-icon') + end + + it 'does not render the icon' do + expect(rendered_component).not_to have_selector('.gl-alert-icon') + expect(rendered_component).not_to have_selector("[data-testid='information-o-icon']") end end @@ -79,6 +113,10 @@ RSpec.describe Pajamas::AlertComponent, :aggregate_failures, type: :component do ) end + it 'does not have "not dismissible" class' do + expect(rendered_component).not_to have_selector('.gl-alert-not-dismissible') + end + it 'renders a dismiss button and data' do expect(rendered_component).to have_selector('.gl-dismiss-btn.js-close._close_button_class_') expect(rendered_component).to have_selector("[data-testid='close-icon']") |