diff --git a/cypress/integration/origin-save.spec.js b/cypress/integration/origin-save.spec.js
--- a/cypress/integration/origin-save.spec.js
+++ b/cypress/integration/origin-save.spec.js
@@ -54,7 +54,7 @@
// Mocks API response : /save/(:object_type)/(:origin_url)
// object_type : {'git', 'hg', 'svn'}
-function genOriginSaveResponse(objectType, saveRequestStatus, originUrl, saveRequestDate, saveTaskStatus) {
+function genOriginSaveResponse(objectType, saveRequestStatus, originUrl, saveRequestDate, saveTaskStatus, visitDate = Date().toString()) {
return {
'visit_type': objectType,
'save_request_status': saveRequestStatus,
@@ -62,7 +62,7 @@
'id': 1,
'save_request_date': saveRequestDate,
'save_task_status': saveTaskStatus,
- 'visit_date': null
+ 'visit_date': visitDate
};
};
@@ -189,6 +189,25 @@
});
});
+ it('should not add timestamp to the browse origin URL is no visit date has been found', function() {
+ const originUrl = 'https://git.example.org/example.git';
+ const saveRequestData = genOriginSaveResponse('git', 'accepted', originUrl, Date().toString(), 'succeed', null);
+ const saveRequestsListData = {
+ 'recordsTotal': 1,
+ 'draw': 2,
+ 'recordsFiltered': 1,
+ 'data': [saveRequestData]
+ };
+ cy.route('GET', '/save/requests/list/**', saveRequestsListData);
+ cy.get('#swh-origin-save-requests-list-tab').click();
+ cy.get('tbody tr').then(rows => {
+ const firstRowCells = rows[0].cells;
+ const browseOriginUrl = `${this.Urls.browse_origin()}?origin_url=${originUrl}`;
+ const browseOriginLink = `${originUrl}`;
+ expect($(firstRowCells[2]).html()).to.have.string(browseOriginLink);
+ });
+ });
+
it('should display/close task info popover when clicking on the info button', function() {
cy.route('GET', '/save/requests/list/**', '@originSaveJSON');
cy.route('GET', '/save/task/info/**', '@saveTaskInfoJSON');
diff --git a/swh/web/assets/src/bundles/admin/origin-save.js b/swh/web/assets/src/bundles/admin/origin-save.js
--- a/swh/web/assets/src/bundles/admin/origin-save.js
+++ b/swh/web/assets/src/bundles/admin/origin-save.js
@@ -85,7 +85,9 @@
const sanitizedURL = $.fn.dataTable.render.text().display(data);
if (row.save_task_status === 'succeed') {
let browseOriginUrl = `${Urls.browse_origin()}?origin_url=${sanitizedURL}`;
- browseOriginUrl += `×tamp=${row.visit_date}`;
+ if (row.visit_date) {
+ browseOriginUrl += `×tamp=${encodeURIComponent(row.visit_date)}`;
+ }
html += `${sanitizedURL}`;
} else {
html += sanitizedURL;
diff --git a/swh/web/assets/src/bundles/save/index.js b/swh/web/assets/src/bundles/save/index.js
--- a/swh/web/assets/src/bundles/save/index.js
+++ b/swh/web/assets/src/bundles/save/index.js
@@ -90,7 +90,9 @@
const sanitizedURL = $.fn.dataTable.render.text().display(data);
if (row.save_task_status === 'succeed') {
let browseOriginUrl = `${Urls.browse_origin()}?origin_url=${sanitizedURL}`;
- browseOriginUrl += `×tamp=${encodeURIComponent(row.visit_date)}`;
+ if (row.visit_date) {
+ browseOriginUrl += `×tamp=${encodeURIComponent(row.visit_date)}`;
+ }
html += `${sanitizedURL}`;
} else {
html += sanitizedURL;