Commit c19d58de authored by Filipa Lacerda's avatar Filipa Lacerda

Merge branch '32551-fix-system-note-comparison-and-standardize-note-setup' into 'master'

Fix system note comparison and standardize note setup

Closes #32551

See merge request !11532
parents 6ad2a9c2 682cfbb4
...@@ -287,6 +287,13 @@ const normalizeNewlines = function(str) { ...@@ -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. Render note in main comments area.
...@@ -312,10 +319,7 @@ const normalizeNewlines = function(str) { ...@@ -312,10 +319,7 @@ const normalizeNewlines = function(str) {
const $newNote = Notes.animateAppendNote(noteEntity.html, $notesList); const $newNote = Notes.animateAppendNote(noteEntity.html, $notesList);
// Update datetime format on the recent note this.setupNewNote($newNote);
gl.utils.localTimeAgo($newNote.find('.js-timeago'), false);
this.collapseLongCommitList();
this.taskList.init();
this.refresh(); this.refresh();
return this.updateNotesCount(1); return this.updateNotesCount(1);
} }
...@@ -341,9 +345,7 @@ const normalizeNewlines = function(str) { ...@@ -341,9 +345,7 @@ const normalizeNewlines = function(str) {
} }
else { else {
const $updatedNote = Notes.animateUpdateNote(noteEntity.html, $note); const $updatedNote = Notes.animateUpdateNote(noteEntity.html, $note);
this.setupNewNote($updatedNote);
// Update datetime format on the recent note
gl.utils.localTimeAgo($updatedNote.find('.js-timeago'), false);
} }
} }
}; };
...@@ -665,10 +667,8 @@ const normalizeNewlines = function(str) { ...@@ -665,10 +667,8 @@ const normalizeNewlines = function(str) {
if (this.updatedNotesTrackingMap[noteId]) { if (this.updatedNotesTrackingMap[noteId]) {
const $newNote = $(this.updatedNotesTrackingMap[noteId].html); const $newNote = $(this.updatedNotesTrackingMap[noteId].html);
$note.replaceWith($newNote); $note.replaceWith($newNote);
this.setupNewNote($newNote);
this.updatedNotesTrackingMap[noteId] = null; this.updatedNotesTrackingMap[noteId] = null;
// Update datetime format on the recent note
gl.utils.localTimeAgo($newNote.find('.js-timeago'), false);
} }
else { else {
$note.find('.js-finish-edit-warning').hide(); $note.find('.js-finish-edit-warning').hide();
...@@ -1144,7 +1144,7 @@ const normalizeNewlines = function(str) { ...@@ -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 // There can be CRLF vs LF mismatches if we don't sanitize and compare the same way
const sanitizedNoteEntityText = normalizeNewlines(noteEntity.note.trim()); const sanitizedNoteEntityText = normalizeNewlines(noteEntity.note.trim());
const currentNoteText = normalizeNewlines( const currentNoteText = normalizeNewlines(
$note.find('.original-note-content').text().trim() $note.find('.original-note-content').first().text().trim()
); );
return sanitizedNoteEntityText !== currentNoteText; return sanitizedNoteEntityText !== currentNoteText;
}; };
......
...@@ -29,8 +29,6 @@ ...@@ -29,8 +29,6 @@
- if note.system - if note.system
%span.system-note-message %span.system-note-message
= note.redacted_note_html = note.redacted_note_html
.original-note-content.hidden
= note.note
%a{ href: "##{dom_id(note)}" } %a{ href: "##{dom_id(note)}" }
= time_ago_with_tooltip(note.created_at, placement: 'bottom', html_class: 'note-created-ago') = time_ago_with_tooltip(note.created_at, placement: 'bottom', html_class: 'note-created-ago')
- unless note.system? - unless note.system?
......
...@@ -31,12 +31,12 @@ feature 'Issue notes polling', :feature, :js do ...@@ -31,12 +31,12 @@ feature 'Issue notes polling', :feature, :js do
it 'has .original-note-content to compare against' 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}", 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) 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}", 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
it 'displays the updated content' do it 'displays the updated content' do
...@@ -98,12 +98,28 @@ feature 'Issue notes polling', :feature, :js do ...@@ -98,12 +98,28 @@ feature 'Issue notes polling', :feature, :js do
it 'has .original-note-content to compare against' 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}", 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) 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}", 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 end
end end
......
...@@ -139,6 +139,7 @@ import '~/notes'; ...@@ -139,6 +139,7 @@ import '~/notes';
]); ]);
notes = jasmine.createSpyObj('notes', [ notes = jasmine.createSpyObj('notes', [
'setupNewNote',
'refresh', 'refresh',
'collapseLongCommitList', 'collapseLongCommitList',
'updateNotesCount', 'updateNotesCount',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment