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 += `&timestamp=${row.visit_date}`; + if (row.visit_date) { + browseOriginUrl += `&timestamp=${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 += `&timestamp=${encodeURIComponent(row.visit_date)}`; + if (row.visit_date) { + browseOriginUrl += `&timestamp=${encodeURIComponent(row.visit_date)}`; + } html += `${sanitizedURL}`; } else { html += sanitizedURL;