123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe 'Ticket zoom > Customer & Organization Avatars', authenticated_as: :authenticate, type: :system do
- let(:group) { create(:group) }
- let(:agent) { create(:agent, groups: [group]) }
- let(:customer) { create(:customer) }
- let(:ticket) { create(:ticket, group: group, customer: customer) }
- let(:article) { create(:ticket_article, ticket: ticket) }
- def authenticate
- ticket && article
- agent
- end
- before do
- visit "#ticket/zoom/#{ticket.id}"
- end
- context 'without organization' do
- before do
- click('.content.active .tabsSidebar-tab[data-tab="customer"]')
- end
- shared_examples 'displaying customer avatar' do |containers, vip|
- it "displays customer avatar with the crown in: #{containers}", if: vip do
- containers.each do |container|
- within "#{container} .avatar--unique" do
- expect(page).to have_css('.icon-crown')
- end
- end
- end
- it "displays customer avatar without the crown in: #{containers}", if: !vip do
- containers.each do |container|
- within "#{container} .avatar--unique" do
- expect(page).to have_no_css('.icon-crown')
- end
- end
- end
- end
- shared_examples 'not displaying organization avatar' do |container|
- it "does not display organization avatar in '#{container}'" do
- within container do
- expect(page).to have_no_css('.avatar--organization')
- end
- end
- end
- it_behaves_like 'not displaying organization avatar', '.ticketZoom-header'
- context 'with customer vip status' do
- let(:customer) { create(:customer, vip: true) }
- it_behaves_like 'displaying customer avatar', ['.ticketZoom-header', '.sidebar[data-tab="customer"]'], true
- end
- context 'without customer vip status' do
- let(:customer) { create(:customer, vip: false) }
- it_behaves_like 'displaying customer avatar', ['.ticketZoom-header', '.sidebar[data-tab="customer"]'], false
- end
- end
- context 'with organization' do
- let(:organization) { create(:organization, vip: vip_organization) }
- let(:customer) { create(:customer, organization: organization) }
- before do
- click('.content.active .tabsSidebar-tab[data-tab="organization"]')
- end
- shared_examples 'displaying organization avatar' do |containers, active, vip|
- it "displays active organization avatar with the crown in: #{containers}", if: active && vip do
- containers.each do |container|
- within "#{container} .avatar--organization" do
- expect(page).to have_css('.icon-organization').and have_css('.icon-crown-silver')
- end
- end
- end
- it "displays active organization avatar without the crown in: #{containers}", if: active && !vip do
- containers.each do |container|
- within "#{container} .avatar--organization" do
- expect(page).to have_css('.icon-organization').and have_no_css('.icon-crown-silver')
- end
- end
- end
- it "displays inactive active organization avatar with the crown in: #{containers}", if: !active && vip do
- containers.each do |container|
- within "#{container} .avatar--organization" do
- expect(page).to have_css('.icon-inactive-organization').and have_css('.icon-crown-silver')
- end
- end
- end
- it "displays inactive organization avatar without the crown in: #{containers}", if: !active && !vip do
- containers.each do |container|
- within "#{container} .avatar--organization" do
- expect(page).to have_css('.icon-inactive-organization').and have_no_css('.icon-crown-silver')
- end
- end
- end
- end
- context 'with organization vip status' do
- let(:vip_organization) { true }
- it_behaves_like 'displaying organization avatar', ['.ticketZoom-header', '.sidebar[data-tab="organization"]'], true, true
- end
- context 'without organization vip status' do
- let(:vip_organization) { false }
- it_behaves_like 'displaying organization avatar', ['.ticketZoom-header', '.sidebar[data-tab="organization"]'], true, false
- end
- context 'with inactive organization' do
- let(:organization) { create(:organization, vip: vip_organization, active: false) }
- context 'with organization vip status' do
- let(:vip_organization) { true }
- it_behaves_like 'displaying organization avatar', ['.ticketZoom-header', '.sidebar[data-tab="organization"]'], false, true
- end
- context 'without organization vip status' do
- let(:vip_organization) { false }
- it_behaves_like 'displaying organization avatar', ['.ticketZoom-header', '.sidebar[data-tab="organization"]'], false, false
- end
- end
- end
- end
|