Skip to content

Commit

Permalink
Add specs for DiffParser service
Browse files Browse the repository at this point in the history
  • Loading branch information
eduardoj committed Jan 17, 2023
1 parent b456573 commit 746033a
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/api/app/services/diff_parser/line.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,9 @@ def initialize(content:, state:, index:, original_index:, changed_index:)
@original_index = original_index
@changed_index = changed_index
end

def ==(other)
content == other.content && state == other.state && index == other.index && original_index == other.original_index && changed_index == other.changed_index
end
end
end
50 changes: 50 additions & 0 deletions src/api/spec/services/diff_parser_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
require 'rails_helper'

RSpec.describe DiffParser, type: :service do
let(:content) { Rails.root.join("spec/support/files/#{file}").expand_path }
let(:parser) { described_class.new(content: content) }

let(:result) { result_array.map { |line| DiffParser::Line.new(content: line[0], state: line[1], index: line[2], original_index: line[3], changed_index: line[4]) } }

subject { parser.call }

describe '#call' do
context 'empty diff' do
let(:content) { '' }

let(:result_array) { [] }

it { expect(subject).to eq(result) }
end

context 'simple diff' do
let(:file) { 'diff_simple.diff' }

let(:result_array) do
[
["@@ -1,1 +1,1 @@\n", 'range', 1, nil, nil],
["-a\n", 'removed', 2, 1, nil],
["+b\n", 'added', 3, nil, 1]
]
end

it 'parses correctly' do expect(subject).to eq(result) end
end

context 'diff with no newline comments' do
let(:file) { 'diff_with_no_newline_comments.diff' }

let(:result_array) do
[
["@@ -1,1 +1,1 @@\n", 'range', 1, nil, nil],
["-a\n", 'removed', 2, 1, nil],
["\\ No newline at end of file\n", 'comment', 3, nil, nil],
["+b\n", 'added', 4, nil, 1],
["\\ No newline at end of file\n", 'comment', 5, nil, nil]
]
end

it 'parses correctly' do expect(subject).to eq(result) end
end
end
end
3 changes: 3 additions & 0 deletions src/api/spec/support/files/diff_simple.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@@ -1,1 +1,1 @@
-a
+b
5 changes: 5 additions & 0 deletions src/api/spec/support/files/diff_with_no_newline_comments.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@@ -1,1 +1,1 @@
-a
\ No newline at end of file
+b
\ No newline at end of file

0 comments on commit 746033a

Please sign in to comment.