diff --git a/cypress/e2e/add-forge-now-request-create.cy.js b/cypress/e2e/add-forge-now-request-create.cy.js --- a/cypress/e2e/add-forge-now-request-create.cy.js +++ b/cypress/e2e/add-forge-now-request-create.cy.js @@ -108,6 +108,45 @@ expect(rows.length).to.eq(2 + 1); }); }); + + it('should display search link when first forge origin has been loaded', function() { + const forgeUrl = 'https://cgit.example.org'; + cy.intercept(this.listAddForgeRequestsUrl + '**', {body: { + 'recordsTotal': 1, + 'draw': 1, + 'recordsFiltered': 1, + 'data': [ + { + 'id': 1, + 'inbound_email_address': 'add-forge-now+15.yPalKD34nGJ-FYHwKXdmPQVkQ2c@example.org', + 'status': 'FIRST_ORIGIN_LOADED', + 'submission_date': '2022-09-22T05:31:47.566000Z', + 'submitter_name': 'johndoe', + 'submitter_email': 'johndoe@example.org', + 'submitter_forward_username': true, + 'forge_type': 'cgit', + 'forge_url': forgeUrl, + 'forge_contact_email': 'admin@example.org', + 'forge_contact_name': 'Admin', + 'last_modified_date': '2022-09-22T05:31:47.576000Z' + } + ] + }}).as('addForgeRequestsList'); + + cy.visit(this.addForgeNowUrl); + + cy.get('#swh-add-forge-requests-list-tab').click(); + + cy.wait('@addForgeRequestsList'); + + let originsSearchUrl = `${this.Urls.browse_search()}?q=${encodeURIComponent(forgeUrl)}`; + originsSearchUrl += '&with_visit=true&with_content=true'; + + cy.get('.swh-search-forge-origins') + .should('have.attr', 'href', originsSearchUrl); + + }); + }); describe('Test add-forge-request creation', function() { diff --git a/cypress/e2e/add-forge-now-requests-moderation.cy.js b/cypress/e2e/add-forge-now-requests-moderation.cy.js --- a/cypress/e2e/add-forge-now-requests-moderation.cy.js +++ b/cypress/e2e/add-forge-now-requests-moderation.cy.js @@ -117,4 +117,45 @@ }); }); + it('should display useful links in requests table', function() { + const forgeUrl = 'https://cgit.example.org'; + const requestId = 1; + cy.intercept(this.listAddForgeRequestsUrl + '**', {body: { + 'recordsTotal': 1, + 'draw': 1, + 'recordsFiltered': 1, + 'data': [ + { + 'id': requestId, + 'inbound_email_address': 'add-forge-now+15.yPalKD34nGJ-FYHwKXdmPQVkQ2c@example.org', + 'status': 'FIRST_ORIGIN_LOADED', + 'submission_date': '2022-09-22T05:31:47.566000Z', + 'submitter_name': 'johndoe', + 'submitter_email': 'johndoe@example.org', + 'submitter_forward_username': true, + 'forge_type': 'cgit', + 'forge_url': forgeUrl, + 'forge_contact_email': 'admin@example.org', + 'forge_contact_name': 'Admin', + 'last_modified_date': '2022-09-22T05:31:47.576000Z', + 'last_moderator': 'foo@softwareheritage.org' + } + ] + }}).as('addForgeRequestsList'); + + cy.addForgeModeratorLogin(); + cy.visit(this.addForgeModerationUrl); + + cy.wait('@addForgeRequestsList'); + + let originsSearchUrl = `${this.Urls.browse_search()}?q=${encodeURIComponent(forgeUrl)}`; + originsSearchUrl += '&with_visit=true&with_content=true'; + + cy.get('.swh-forge-request-dashboard-link') + .should('have.attr', 'href', this.Urls.add_forge_now_request_dashboard(requestId)); + + cy.get('.swh-search-forge-origins') + .should('have.attr', 'href', originsSearchUrl); + }); + }); diff --git a/swh/web/add_forge_now/assets/create-request.js b/swh/web/add_forge_now/assets/create-request.js --- a/swh/web/add_forge_now/assets/create-request.js +++ b/swh/web/add_forge_now/assets/create-request.js @@ -119,6 +119,19 @@ render: function(data, type, row, meta) { return swh.add_forge_now.formatRequestStatusName(data); } + }, + { + render: (data, type, row) => { + if (row.status === 'FIRST_ORIGIN_LOADED') { + const sanitizedURL = $.fn.dataTable.render.text().display(row.forge_url); + let originsSearchUrl = `${Urls.browse_search()}?q=${encodeURIComponent(sanitizedURL)}`; + originsSearchUrl += '&with_visit=true&with_content=true'; + return `' + + ''; + } + return ''; + } } ], order: [[0, 'desc']] diff --git a/swh/web/add_forge_now/assets/moderation-dashboard.js b/swh/web/add_forge_now/assets/moderation-dashboard.js --- a/swh/web/add_forge_now/assets/moderation-dashboard.js +++ b/swh/web/add_forge_now/assets/moderation-dashboard.js @@ -68,6 +68,24 @@ render: function(data, type, row, meta) { return swh.add_forge_now.formatRequestStatusName(data); } + }, + { + render: (data, type, row) => { + let html = '
'; + const dashboardUrl = Urls.add_forge_now_request_dashboard(row.id); + html += `` + + ''; + if (row.status === 'FIRST_ORIGIN_LOADED') { + const sanitizedURL = $.fn.dataTable.render.text().display(row.forge_url); + let originsSearchUrl = `${Urls.browse_search()}?q=${encodeURIComponent(sanitizedURL)}`; + originsSearchUrl += '&with_visit=true&with_content=true'; + html += `' + + ''; + } + html += '
'; + return html; + } } ], order: [[0, 'desc']] diff --git a/swh/web/add_forge_now/templates/add-forge-list.html b/swh/web/add_forge_now/templates/add-forge-list.html --- a/swh/web/add_forge_now/templates/add-forge-list.html +++ b/swh/web/add_forge_now/templates/add-forge-list.html @@ -16,6 +16,7 @@ Forge type Forge URL Status + diff --git a/swh/web/add_forge_now/templates/add-forge-requests-moderation.html b/swh/web/add_forge_now/templates/add-forge-requests-moderation.html --- a/swh/web/add_forge_now/templates/add-forge-requests-moderation.html +++ b/swh/web/add_forge_now/templates/add-forge-requests-moderation.html @@ -33,6 +33,7 @@ Moderator Name Last Modified Date Status +