Add specs for Diff#colorized_diff and fix implementation

This commit is contained in:
Markus Schirp 2014-08-11 13:54:17 +00:00
parent a0b9bfd246
commit 7f86a53cc4
2 changed files with 18 additions and 19 deletions

View file

@ -36,9 +36,7 @@ module Mutant
#
def colorized_diff
return unless diff
diff.lines.map do |line|
self.class.colorize_line(line)
end.join
diff.lines.map(&self.class.method(:colorize_line)).join
end
memoize :colorized_diff
@ -109,6 +107,7 @@ module Mutant
Color::NONE
end.format(line)
end
private_class_method :colorize_line
end # Diff
end # Mutant

View file

@ -12,27 +12,27 @@ RSpec.describe Mutant::Diff do
end
describe '.colorize_line' do
let(:object) { described_class }
describe '#colorized_diff' do
let(:object) { described_class.new(old, new) }
subject { object.colorize_line(line) }
subject { object.colorized_diff }
context 'line beginning with "+"' do
let(:line) { '+line' }
context 'when there is a diff at begin of hunk' do
let(:old) { %w[foo bar] }
let(:new) { %w[baz bar] }
it { should eql(Mutant::Color::GREEN.format(line)) }
end
let(:expectation) do
[
"@@ -1,3 +1,3 @@\n",
Mutant::Color::RED.format("-foo\n"),
Mutant::Color::GREEN.format("+baz\n"),
" bar\n"
].join
end
context 'line beginning with "-"' do
let(:line) { '-line' }
it { should eql(expectation) }
it { should eql(Mutant::Color::RED.format(line)) }
end
context 'line beginning in other char' do
let(:line) { ' line' }
it { should eql(line) }
it_should_behave_like 'an idempotent method'
end
end