63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'rails_helper'
 | |
| 
 | |
| RSpec.describe FormattingHelper do
 | |
|   include Devise::Test::ControllerHelpers
 | |
| 
 | |
|   describe '#rss_status_content_format' do
 | |
|     subject { helper.rss_status_content_format(status) }
 | |
| 
 | |
|     context 'with a simple status' do
 | |
|       let(:status) { Fabricate.build :status, text: 'Hello world' }
 | |
| 
 | |
|       it 'renders the formatted elements' do
 | |
|         expect(parsed_result.css('p').first.text)
 | |
|           .to eq('Hello world')
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     context 'with a spoiler and an emoji and a poll' do
 | |
|       let(:status) { Fabricate(:status, text: 'Hello :world: <>', spoiler_text: 'This is a spoiler<>', poll: Fabricate(:poll, options: %w(Yes<> No))) }
 | |
| 
 | |
|       before { Fabricate :custom_emoji, shortcode: 'world' }
 | |
| 
 | |
|       it 'renders the formatted elements' do
 | |
|         expect(spoiler_node.css('strong').text)
 | |
|           .to eq('Content warning:')
 | |
|         expect(spoiler_node.text)
 | |
|           .to include('This is a spoiler<>')
 | |
|         expect(content_node.text)
 | |
|           .to eq('Hello  <>')
 | |
|         expect(content_node.css('img').first.to_h.symbolize_keys)
 | |
|           .to include(
 | |
|             rel: 'emoji',
 | |
|             title: ':world:'
 | |
|           )
 | |
|         expect(poll_node.css('radio').first.text)
 | |
|           .to eq('Yes<>')
 | |
|         expect(poll_node.css('radio').first.to_h.symbolize_keys)
 | |
|           .to include(
 | |
|             disabled: 'disabled'
 | |
|           )
 | |
|       end
 | |
| 
 | |
|       def spoiler_node
 | |
|         parsed_result.css('p').first
 | |
|       end
 | |
| 
 | |
|       def content_node
 | |
|         parsed_result.css('p')[1]
 | |
|       end
 | |
| 
 | |
|       def poll_node
 | |
|         parsed_result.css('p').last
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     def parsed_result
 | |
|       Nokogiri::HTML.fragment(subject)
 | |
|     end
 | |
|   end
 | |
| end
 |