Fix system note comparison and standardize note setup
Fix https://gitlab.com/gitlab-org/gitlab-ce/issues/32551
This commit is contained in:
parent
e4eec19156
commit
682cfbb4dc
4 changed files with 32 additions and 17 deletions
|
@ -287,6 +287,13 @@ const normalizeNewlines = function(str) {
|
|||
}
|
||||
};
|
||||
|
||||
Notes.prototype.setupNewNote = function($note) {
|
||||
// Update datetime format on the recent note
|
||||
gl.utils.localTimeAgo($note.find('.js-timeago'), false);
|
||||
this.collapseLongCommitList();
|
||||
this.taskList.init();
|
||||
};
|
||||
|
||||
/*
|
||||
Render note in main comments area.
|
||||
|
||||
|
@ -312,10 +319,7 @@ const normalizeNewlines = function(str) {
|
|||
|
||||
const $newNote = Notes.animateAppendNote(noteEntity.html, $notesList);
|
||||
|
||||
// Update datetime format on the recent note
|
||||
gl.utils.localTimeAgo($newNote.find('.js-timeago'), false);
|
||||
this.collapseLongCommitList();
|
||||
this.taskList.init();
|
||||
this.setupNewNote($newNote);
|
||||
this.refresh();
|
||||
return this.updateNotesCount(1);
|
||||
}
|
||||
|
@ -341,9 +345,7 @@ const normalizeNewlines = function(str) {
|
|||
}
|
||||
else {
|
||||
const $updatedNote = Notes.animateUpdateNote(noteEntity.html, $note);
|
||||
|
||||
// Update datetime format on the recent note
|
||||
gl.utils.localTimeAgo($updatedNote.find('.js-timeago'), false);
|
||||
this.setupNewNote($updatedNote);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -665,10 +667,8 @@ const normalizeNewlines = function(str) {
|
|||
if (this.updatedNotesTrackingMap[noteId]) {
|
||||
const $newNote = $(this.updatedNotesTrackingMap[noteId].html);
|
||||
$note.replaceWith($newNote);
|
||||
this.setupNewNote($newNote);
|
||||
this.updatedNotesTrackingMap[noteId] = null;
|
||||
|
||||
// Update datetime format on the recent note
|
||||
gl.utils.localTimeAgo($newNote.find('.js-timeago'), false);
|
||||
}
|
||||
else {
|
||||
$note.find('.js-finish-edit-warning').hide();
|
||||
|
@ -1144,7 +1144,7 @@ const normalizeNewlines = function(str) {
|
|||
// There can be CRLF vs LF mismatches if we don't sanitize and compare the same way
|
||||
const sanitizedNoteEntityText = normalizeNewlines(noteEntity.note.trim());
|
||||
const currentNoteText = normalizeNewlines(
|
||||
$note.find('.original-note-content').text().trim()
|
||||
$note.find('.original-note-content').first().text().trim()
|
||||
);
|
||||
return sanitizedNoteEntityText !== currentNoteText;
|
||||
};
|
||||
|
|
|
@ -29,8 +29,6 @@
|
|||
- if note.system
|
||||
%span.system-note-message
|
||||
= note.redacted_note_html
|
||||
.original-note-content.hidden
|
||||
= note.note
|
||||
%a{ href: "##{dom_id(note)}" }
|
||||
= time_ago_with_tooltip(note.created_at, placement: 'bottom', html_class: 'note-created-ago')
|
||||
- unless note.system?
|
||||
|
|
|
@ -31,12 +31,12 @@ feature 'Issue notes polling', :feature, :js do
|
|||
|
||||
it 'has .original-note-content to compare against' do
|
||||
expect(page).to have_selector("#note_#{existing_note.id}", text: note_text)
|
||||
expect(page).to have_selector("#note_#{existing_note.id} .original-note-content", visible: false)
|
||||
expect(page).to have_selector("#note_#{existing_note.id} .original-note-content", count: 1, visible: false)
|
||||
|
||||
update_note(existing_note, updated_text)
|
||||
|
||||
expect(page).to have_selector("#note_#{existing_note.id}", text: updated_text)
|
||||
expect(page).to have_selector("#note_#{existing_note.id} .original-note-content", visible: false)
|
||||
expect(page).to have_selector("#note_#{existing_note.id} .original-note-content", count: 1, visible: false)
|
||||
end
|
||||
|
||||
it 'displays the updated content' do
|
||||
|
@ -98,12 +98,28 @@ feature 'Issue notes polling', :feature, :js do
|
|||
|
||||
it 'has .original-note-content to compare against' do
|
||||
expect(page).to have_selector("#note_#{existing_note.id}", text: note_text)
|
||||
expect(page).to have_selector("#note_#{existing_note.id} .original-note-content", visible: false)
|
||||
expect(page).to have_selector("#note_#{existing_note.id} .original-note-content", count: 1, visible: false)
|
||||
|
||||
update_note(existing_note, updated_text)
|
||||
|
||||
expect(page).to have_selector("#note_#{existing_note.id}", text: updated_text)
|
||||
expect(page).to have_selector("#note_#{existing_note.id} .original-note-content", visible: false)
|
||||
expect(page).to have_selector("#note_#{existing_note.id} .original-note-content", count: 1, visible: false)
|
||||
end
|
||||
end
|
||||
|
||||
context 'system notes' do
|
||||
let(:user) { create(:user) }
|
||||
let(:note_text) { "Some system note" }
|
||||
let!(:system_note) { create(:system_note, noteable: issue, project: project, author: user, note: note_text) }
|
||||
|
||||
before do
|
||||
login_as(user)
|
||||
visit namespace_project_issue_path(project.namespace, project, issue)
|
||||
end
|
||||
|
||||
it 'has .original-note-content to compare against' do
|
||||
expect(page).to have_selector("#note_#{system_note.id}", text: note_text)
|
||||
expect(page).to have_selector("#note_#{system_note.id} .original-note-content", count: 1, visible: false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -139,6 +139,7 @@ import '~/notes';
|
|||
]);
|
||||
|
||||
notes = jasmine.createSpyObj('notes', [
|
||||
'setupNewNote',
|
||||
'refresh',
|
||||
'collapseLongCommitList',
|
||||
'updateNotesCount',
|
||||
|
|
Loading…
Reference in a new issue