Skip to content

Commit

Permalink
Update issue description later to link comments and attachments (#16)
Browse files Browse the repository at this point in the history
Signed-off-by: Benoit Donneaux <[email protected]>
  • Loading branch information
btlogy authored Jun 14, 2024
1 parent 450ee29 commit 7081bf9
Show file tree
Hide file tree
Showing 13 changed files with 276 additions and 7 deletions.
3 changes: 3 additions & 0 deletions accessor/gitea/accessor.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,9 @@ type Accessor interface {
// UpdateIssueIndex updates the issue_index table after adding a new issue
UpdateIssueIndex(issueID, ticketID int64) error

// UpdateIssueDescription updates the description of an existing issue in Gitea
UpdateIssueDescription(issueID int64, issueDescription string) error

/*
* Issue Assignees
*/
Expand Down
15 changes: 15 additions & 0 deletions accessor/gitea/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,3 +157,18 @@ func (accessor *DefaultAccessor) UpdateIssueIndex(issueID, ticketID int64) error

return err
}

// UpdateIssueDescription updates the description of an existing issue in Gitea
func (accessor *DefaultAccessor) UpdateIssueDescription(issueID int64, issueDescription string) error {
if err := accessor.db.Model(&Issue{}).
Where("id=?", issueID).
Update("content", issueDescription).
Error; err != nil {

return errors.Wrapf(err, "updating description for issue %d", issueID)
}

log.Info("updated description of issue %d", issueID)

return nil
}
12 changes: 8 additions & 4 deletions importer/setup_ticket_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ func expectIssueCreation(t *testing.T, ticket *TicketImport) {
DoAndReturn(func(issue *gitea.Issue) (int64, error) {
assertEquals(t, issue.Index, ticket.ticketID)
assertEquals(t, issue.Summary, ticket.summary)
assertEquals(t, issue.Description, ticket.descriptionMarkdown)
assertEquals(t, issue.Description, "")
assertEquals(t, issue.OriginalAuthorID, gitea.NullID)
assertEquals(t, issue.OriginalAuthorName, originalAuthorName)
assertEquals(t, issue.ReporterID, ticket.reporter.giteaUserID)
Expand Down Expand Up @@ -340,6 +340,13 @@ func expectRepoIssueIndexUpdates(t *testing.T, issueID, ticketID int64) {
Return(nil)
}

func expectIssueDescriptionUpdates(t *testing.T, issueID int64, issueDescription string) {
mockGiteaAccessor.
EXPECT().
UpdateIssueDescription(issueID, issueDescription).
Return(nil)
}

func expectIssueClosedTimeUpdate(t *testing.T, issueID int64) {
mockGiteaAccessor.
EXPECT().
Expand All @@ -352,9 +359,6 @@ func expectAllTicketActions(t *testing.T, ticket *TicketImport) {
expectUserLookup(t, ticket.owner)
expectUserLookup(t, ticket.reporter)

// expect to convert ticket description to markdown
expectDescriptionMarkdownConversion(t, ticket)

// expect to create Gitea issue
expectIssueCreation(t, ticket)

Expand Down
11 changes: 8 additions & 3 deletions importer/ticket.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,10 @@ func (importer *Importer) importTicket(ticket *trac.Ticket, closed bool, userMap
}
}

convertedDescription := importer.markdownConverter.TicketConvert(ticket.TicketID, ticket.Description)
convertedDescription = MapRevisions(convertedDescription, revisionMap)
// Create the issue with empty description first
issue := gitea.Issue{Index: ticket.TicketID, Summary: ticket.Summary, ReporterID: reporterID,
Milestone: ticket.MilestoneName, OriginalAuthorID: 0, OriginalAuthorName: originalAuthorName,
Closed: closed, Description: convertedDescription, Created: ticket.Created, Updated: ticket.Updated}
Closed: closed, Description: "", Created: ticket.Created, Updated: ticket.Updated}
issueID, err := importer.giteaAccessor.AddIssue(&issue)
if err != nil {
return gitea.NullID, err
Expand Down Expand Up @@ -135,6 +134,12 @@ func (importer *Importer) ImportTickets(
if err = importer.giteaAccessor.UpdateIssueIndex(issueID, ticket.TicketID); err != nil {
return err
}

// Update the issue description after creation - so link to itself can be resolved (e.g.: comment)
convertedDescription := importer.markdownConverter.TicketConvert(ticket.TicketID, ticket.Description)
if err = importer.giteaAccessor.UpdateIssueDescription(issueID, MapRevisions(convertedDescription, revisionMap)); err != nil {
return err
}
return nil
})
if err != nil {
Expand Down
26 changes: 26 additions & 0 deletions importer/ticketAttachment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ func TestImportTicketWithAttachments(t *testing.T) {
// expect all issue counts to be updated
expectIssueCountUpdates(t)

// expect to convert ticket description to markdown
expectDescriptionMarkdownConversion(t, closedTicket)

// expect to update Gitea issue description
expectIssueDescriptionUpdates(t, closedTicket.issueID, closedTicket.descriptionMarkdown)

dataImporter.ImportTickets(userMap, componentMap, priorityMap, resolutionMap, severityMap, typeMap, versionMap, revisionMap)
}

Expand Down Expand Up @@ -74,6 +80,14 @@ func TestImportMultipleTicketsWithAttachments(t *testing.T) {
// expect all issue counts to be updated
expectIssueCountUpdates(t)

// expect to convert ticket description to markdown
expectDescriptionMarkdownConversion(t, closedTicket)
expectDescriptionMarkdownConversion(t, openTicket)

// expect to update Gitea issue description
expectIssueDescriptionUpdates(t, closedTicket.issueID, closedTicket.descriptionMarkdown)
expectIssueDescriptionUpdates(t, openTicket.issueID, openTicket.descriptionMarkdown)

dataImporter.ImportTickets(userMap, componentMap, priorityMap, resolutionMap, severityMap, typeMap, versionMap, revisionMap)
}

Expand Down Expand Up @@ -105,6 +119,12 @@ func TestImportTicketWithAttachmentButNoTracUser(t *testing.T) {
// expect all issue counts to be updated
expectIssueCountUpdates(t)

// expect to convert ticket description to markdown
expectDescriptionMarkdownConversion(t, noTracUserTicket)

// expect to update Gitea issue description
expectIssueDescriptionUpdates(t, noTracUserTicket.issueID, noTracUserTicket.descriptionMarkdown)

dataImporter.ImportTickets(userMap, componentMap, priorityMap, resolutionMap, severityMap, typeMap, versionMap, revisionMap)
}

Expand Down Expand Up @@ -136,5 +156,11 @@ func TestImportTicketWithAttachmentButUnmappedTracUser(t *testing.T) {
// expect all issue counts to be updated
expectIssueCountUpdates(t)

// expect to convert ticket description to markdown
expectDescriptionMarkdownConversion(t, unmappedTracUserTicket)

// expect to update Gitea issue description
expectIssueDescriptionUpdates(t, unmappedTracUserTicket.issueID, unmappedTracUserTicket.descriptionMarkdown)

dataImporter.ImportTickets(userMap, componentMap, priorityMap, resolutionMap, severityMap, typeMap, versionMap, revisionMap)
}
26 changes: 26 additions & 0 deletions importer/ticketComment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ func TestImportTicketWithComments(t *testing.T) {
// expect all issue counts to be updated
expectIssueCountUpdates(t)

// expect to convert ticket description to markdown
expectDescriptionMarkdownConversion(t, closedTicket)

// expect to update Gitea issue description
expectIssueDescriptionUpdates(t, closedTicket.issueID, closedTicket.descriptionMarkdown)

dataImporter.ImportTickets(userMap, componentMap, priorityMap, resolutionMap, severityMap, typeMap, versionMap, revisionMap)
}

Expand Down Expand Up @@ -74,6 +80,14 @@ func TestImportMultipleTicketsWithComments(t *testing.T) {
// expect all issue counts to be updated
expectIssueCountUpdates(t)

// expect to convert ticket description to markdown
expectDescriptionMarkdownConversion(t, closedTicket)
expectDescriptionMarkdownConversion(t, openTicket)

// expect to update Gitea issue description
expectIssueDescriptionUpdates(t, closedTicket.issueID, closedTicket.descriptionMarkdown)
expectIssueDescriptionUpdates(t, openTicket.issueID, openTicket.descriptionMarkdown)

dataImporter.ImportTickets(userMap, componentMap, priorityMap, resolutionMap, severityMap, typeMap, versionMap, revisionMap)
}

Expand Down Expand Up @@ -105,6 +119,12 @@ func TestImportTicketWithCommentButNoTracUser(t *testing.T) {
// expect all issue counts to be updated
expectIssueCountUpdates(t)

// expect to convert ticket description to markdown
expectDescriptionMarkdownConversion(t, noTracUserTicket)

// expect to update Gitea issue description
expectIssueDescriptionUpdates(t, noTracUserTicket.issueID, noTracUserTicket.descriptionMarkdown)

dataImporter.ImportTickets(userMap, componentMap, priorityMap, resolutionMap, severityMap, typeMap, versionMap, revisionMap)
}

Expand Down Expand Up @@ -136,5 +156,11 @@ func TestImportTicketWithCommentButUnmappedTracUser(t *testing.T) {
// expect all issue counts to be updated
expectIssueCountUpdates(t)

// expect to convert ticket description to markdown
expectDescriptionMarkdownConversion(t, unmappedTracUserTicket)

// expect to update Gitea issue description
expectIssueDescriptionUpdates(t, unmappedTracUserTicket.issueID, unmappedTracUserTicket.descriptionMarkdown)

dataImporter.ImportTickets(userMap, componentMap, priorityMap, resolutionMap, severityMap, typeMap, versionMap, revisionMap)
}
Loading

0 comments on commit 7081bf9

Please sign in to comment.