File: diff_file_component_spec.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (67 lines) | stat: -rw-r--r-- 1,970 bytes parent folder | download
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