194 lines
4.1 KiB
Ruby
194 lines
4.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Gitlab::GithubImport::Representation::DiffNotes::SuggestionFormatter do
|
|
it 'does nothing when there is any text before the suggestion tag' do
|
|
note = <<~BODY
|
|
looks like```suggestion but it isn't
|
|
```
|
|
BODY
|
|
|
|
note_formatter = described_class.new(note: note)
|
|
|
|
expect(note_formatter.formatted_note).to eq(note)
|
|
expect(note_formatter.contains_suggestion?).to eq(false)
|
|
end
|
|
|
|
it 'handles nil value for note' do
|
|
note = nil
|
|
|
|
note_formatter = described_class.new(note: note)
|
|
|
|
expect(note_formatter.formatted_note).to eq(note)
|
|
expect(note_formatter.contains_suggestion?).to eq(false)
|
|
end
|
|
|
|
it 'does not allow over 3 leading spaces for valid suggestion' do
|
|
note = <<~BODY
|
|
Single-line suggestion
|
|
```suggestion
|
|
sug1
|
|
```
|
|
BODY
|
|
|
|
note_formatter = described_class.new(note: note)
|
|
|
|
expect(note_formatter.formatted_note).to eq(note)
|
|
expect(note_formatter.contains_suggestion?).to eq(false)
|
|
end
|
|
|
|
it 'allows up to 3 leading spaces' do
|
|
note = <<~BODY
|
|
Single-line suggestion
|
|
```suggestion
|
|
sug1
|
|
```
|
|
BODY
|
|
|
|
expected = <<~BODY
|
|
Single-line suggestion
|
|
```suggestion:-0+0
|
|
sug1
|
|
```
|
|
BODY
|
|
|
|
note_formatter = described_class.new(note: note)
|
|
|
|
expect(note_formatter.formatted_note).to eq(expected)
|
|
expect(note_formatter.contains_suggestion?).to eq(true)
|
|
end
|
|
|
|
it 'does nothing when there is any text without space after the suggestion tag' do
|
|
note = <<~BODY
|
|
```suggestionbut it isn't
|
|
```
|
|
BODY
|
|
|
|
note_formatter = described_class.new(note: note)
|
|
|
|
expect(note_formatter.formatted_note).to eq(note)
|
|
expect(note_formatter.contains_suggestion?).to eq(false)
|
|
end
|
|
|
|
it 'formats single-line suggestions' do
|
|
note = <<~BODY
|
|
Single-line suggestion
|
|
```suggestion
|
|
sug1
|
|
```
|
|
BODY
|
|
|
|
expected = <<~BODY
|
|
Single-line suggestion
|
|
```suggestion:-0+0
|
|
sug1
|
|
```
|
|
BODY
|
|
|
|
note_formatter = described_class.new(note: note)
|
|
|
|
expect(note_formatter.formatted_note).to eq(expected)
|
|
expect(note_formatter.contains_suggestion?).to eq(true)
|
|
end
|
|
|
|
it 'ignores text after suggestion tag on the same line' do
|
|
note = <<~BODY
|
|
looks like
|
|
```suggestion text to be ignored
|
|
suggestion
|
|
```
|
|
BODY
|
|
|
|
expected = <<~BODY
|
|
looks like
|
|
```suggestion:-0+0
|
|
suggestion
|
|
```
|
|
BODY
|
|
|
|
note_formatter = described_class.new(note: note)
|
|
|
|
expect(note_formatter.formatted_note).to eq(expected)
|
|
expect(note_formatter.contains_suggestion?).to eq(true)
|
|
end
|
|
|
|
it 'formats multiple single-line suggestions' do
|
|
note = <<~BODY
|
|
Single-line suggestion
|
|
```suggestion
|
|
sug1
|
|
```
|
|
OR
|
|
```suggestion
|
|
sug2
|
|
```
|
|
BODY
|
|
|
|
expected = <<~BODY
|
|
Single-line suggestion
|
|
```suggestion:-0+0
|
|
sug1
|
|
```
|
|
OR
|
|
```suggestion:-0+0
|
|
sug2
|
|
```
|
|
BODY
|
|
|
|
note_formatter = described_class.new(note: note)
|
|
|
|
expect(note_formatter.formatted_note).to eq(expected)
|
|
expect(note_formatter.contains_suggestion?).to eq(true)
|
|
end
|
|
|
|
it 'formats multi-line suggestions' do
|
|
note = <<~BODY
|
|
Multi-line suggestion
|
|
```suggestion
|
|
sug1
|
|
```
|
|
BODY
|
|
|
|
expected = <<~BODY
|
|
Multi-line suggestion
|
|
```suggestion:-2+0
|
|
sug1
|
|
```
|
|
BODY
|
|
|
|
note_formatter = described_class.new(note: note, start_line: 6, end_line: 8)
|
|
|
|
expect(note_formatter.formatted_note).to eq(expected)
|
|
expect(note_formatter.contains_suggestion?).to eq(true)
|
|
end
|
|
|
|
it 'formats multiple multi-line suggestions' do
|
|
note = <<~BODY
|
|
Multi-line suggestion
|
|
```suggestion
|
|
sug1
|
|
```
|
|
OR
|
|
```suggestion
|
|
sug2
|
|
```
|
|
BODY
|
|
|
|
expected = <<~BODY
|
|
Multi-line suggestion
|
|
```suggestion:-2+0
|
|
sug1
|
|
```
|
|
OR
|
|
```suggestion:-2+0
|
|
sug2
|
|
```
|
|
BODY
|
|
|
|
note_formatter = described_class.new(note: note, start_line: 6, end_line: 8)
|
|
|
|
expect(note_formatter.formatted_note).to eq(expected)
|
|
expect(note_formatter.contains_suggestion?).to eq(true)
|
|
end
|
|
end
|