123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe 'Public Knowledge Base answer', type: :system do
- include_context 'basic Knowledge Base'
- context 'when not authenticated', authenticated_as: false do
- context 'video content' do
- before do
- published_answer_with_video
- end
- it 'shows video player' do
- visit help_answer_path(primary_locale.system_locale.locale, category, published_answer_with_video)
- iframe = find('iframe')
- expect(iframe['src']).to start_with('https://www.youtube.com/embed/')
- end
- end
- context 'publishing time' do
- it 'shown for published item' do
- open_answer published_answer
- expect(page).to have_css('.article-meta time')
- end
- it 'shown for published item scheduled to be archived' do
- published_answer.update! archived_at: 1.day.from_now
- open_answer published_answer
- expect(page).to have_css('.article-meta time')
- end
- end
- end
- context 'when logged in as editor' do
- before do # simulate translation being created before publishing
- travel_to published_answer.published_at - 1.week do
- published_answer.translations.first.touch
- end
- end
- context 'publishing time' do
- it 'shown for published item' do
- open_answer published_answer
- within '.article .article-meta' do
- expect(page).to have_time_tag published_answer.published_at
- end
- end
- it 'shown for published item scheduled to be archived' do
- published_answer.update! archived_at: 1.day.from_now
- open_answer published_answer
- within '.article .article-meta' do
- expect(page).to have_time_tag published_answer.published_at
- end
- end
- it 'not shown for item scheduled to be published' do
- draft_answer.update! published_at: 1.day.from_now
- open_answer draft_answer
- within '.article' do
- expect(page).not_to have_time_tag
- end
- end
- it 'not shown for draft item' do
- open_answer draft_answer
- within '.article' do
- expect(page).not_to have_time_tag
- end
- end
- it 'not shown for internal item' do
- open_answer internal_answer
- within '.article' do
- expect(page).not_to have_time_tag
- end
- end
- it 'not shown for archived item' do
- open_answer archived_answer
- within '.article' do
- expect(page).not_to have_time_tag
- end
- end
- it 'replaced by update time if later than publishing time' do
- translation = published_answer.translations.first
- translation.content.update! body: 'updated body'
- open_answer published_answer
- within '.article .article-meta' do
- expect(page).to have_time_tag published_answer.translations.first.updated_at
- end
- end
- end
- end
- context 'tags' do
- before do
- visit help_answer_path(locale_name, category, published_answer_with_tag)
- end
- it 'shows an associated tag' do
- expect(page).to have_css('.tags a', text: published_answer_tag_name)
- end
- it 'links to tag page' do
- click '.tags a'
- expect(current_url).to end_with help_tag_path(locale_name, published_answer_tag_name)
- end
- end
- def open_answer(answer, locale: primary_locale.system_locale.locale)
- visit help_answer_path(locale, answer.category, answer)
- end
- end
|