1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
# frozen_string_literal: true
require "spec_helper"
RSpec.describe RapidDiffs::DiffFileComponent, type: :component, feature_category: :code_review_workflow do
let_it_be(:diff_file) { build(:diff_file) }
let(:repository) { diff_file.repository }
let(:project) { repository.container }
let(:namespace) { project.namespace }
let(:web_component) { page.find('diff-file') }
it "renders" do
render_component
expect(page).to have_selector('diff-file')
expect(page).to have_selector('diff-file-mounted')
end
it "renders server data" do
render_component
diff_path = "/#{namespace.to_param}/#{project.to_param}/-/blob/#{diff_file.content_sha}/#{diff_file.file_path}/diff"
expect(web_component['data-blob-diff-path']).to eq(diff_path)
end
context "when is text diff" do
before do
allow(diff_file).to receive(:text_diff?).and_return(true)
end
it "renders parallel text viewer" do
render_component
expect(web_component['data-viewer']).to eq('text_inline')
end
it "renders parallel text viewer" do
render_component(parallel_view: true)
expect(web_component['data-viewer']).to eq('text_parallel')
end
end
context "when non-text content changed" do
before do
allow(diff_file).to receive(:text_diff?).and_return(false)
allow(diff_file).to receive(:content_changed?).and_return(true)
end
it "renders no preview" do
render_component
expect(web_component['data-viewer']).to eq('no_preview')
end
end
context "when no viewer found" do
before do
allow(diff_file).to receive(:text_diff?).and_return(false)
allow(diff_file).to receive(:content_changed?).and_return(false)
end
it "renders no preview" do
render_component
expect(web_component['data-viewer']).to eq('no_preview')
end
end
def render_component(**args)
render_inline(described_class.new(diff_file: diff_file, **args))
end
end
|