From 5bdd76d5dcae95675d11464b865413add1449187 Mon Sep 17 00:00:00 2001 From: Romain Bertrand Date: Sat, 3 Jan 2026 11:54:12 +0100 Subject: [PATCH] test(func): add tests for "issue edit" --- tests/functional/functional_test.go | 178 ++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) diff --git a/tests/functional/functional_test.go b/tests/functional/functional_test.go index 73f098c..5d662dd 100644 --- a/tests/functional/functional_test.go +++ b/tests/functional/functional_test.go @@ -302,6 +302,184 @@ func TestCLIIssueClose(t *testing.T) { t.Logf("Successfully tested issue close via API for CLI #%d", issueNum) } +// TestEditIssueTitle verifies we can edit an issue's title +func TestEditIssueTitle(t *testing.T) { + env := NewTestEnv(t) + + // Create a test issue + issueNum := env.CreateTestIssue( + "[FGJ E2E Test] Original Title", + "This issue's title will be edited", + ) + + defer env.CleanupIssue(issueNum) + + // Edit the title + newTitle := "[FGJ E2E Test] Updated Title" + _, _, err := env.Client.EditIssue(env.Owner, env.RepoName, issueNum, gitea.EditIssueOption{ + Title: newTitle, + }) + if err != nil { + t.Fatalf("failed to edit issue title: %v", err) + } + + // Verify the title was updated + issue, _, err := env.Client.GetIssue(env.Owner, env.RepoName, issueNum) + if err != nil { + t.Fatalf("failed to get issue: %v", err) + } + + if issue.Title != newTitle { + t.Fatalf("expected title '%s', got '%s'", newTitle, issue.Title) + } + + t.Logf("Successfully edited issue #%d title", issueNum) +} + +// TestEditIssueBody verifies we can edit an issue's body +func TestEditIssueBody(t *testing.T) { + env := NewTestEnv(t) + + // Create a test issue + issueNum := env.CreateTestIssue( + "[FGJ E2E Test] Edit Body Test", + "Original body content", + ) + + defer env.CleanupIssue(issueNum) + + // Edit the body + newBody := "Updated body content from functional test" + _, _, err := env.Client.EditIssue(env.Owner, env.RepoName, issueNum, gitea.EditIssueOption{ + Body: &newBody, + }) + if err != nil { + t.Fatalf("failed to edit issue body: %v", err) + } + + // Verify the body was updated + issue, _, err := env.Client.GetIssue(env.Owner, env.RepoName, issueNum) + if err != nil { + t.Fatalf("failed to get issue: %v", err) + } + + if issue.Body != newBody { + t.Fatalf("expected body '%s', got '%s'", newBody, issue.Body) + } + + t.Logf("Successfully edited issue #%d body", issueNum) +} + +// TestEditIssueState verifies we can edit an issue's state +func TestEditIssueState(t *testing.T) { + env := NewTestEnv(t) + + // Create a test issue (starts as open) + issueNum := env.CreateTestIssue( + "[FGJ E2E Test] Edit State Test", + "This issue's state will be changed", + ) + + defer env.CleanupIssue(issueNum) + + // Verify it starts as open + issue, _, err := env.Client.GetIssue(env.Owner, env.RepoName, issueNum) + if err != nil { + t.Fatalf("failed to get issue: %v", err) + } + + if issue.State != "open" { + t.Fatalf("expected initial state 'open', got '%s'", issue.State) + } + + // Edit state to closed + closedState := gitea.StateClosed + _, _, err = env.Client.EditIssue(env.Owner, env.RepoName, issueNum, gitea.EditIssueOption{ + State: &closedState, + }) + if err != nil { + t.Fatalf("failed to edit issue state: %v", err) + } + + // Verify state changed to closed + issue, _, err = env.Client.GetIssue(env.Owner, env.RepoName, issueNum) + if err != nil { + t.Fatalf("failed to get issue: %v", err) + } + + if issue.State != "closed" { + t.Fatalf("expected state 'closed' after edit, got '%s'", issue.State) + } + + // Edit state back to open + openState := gitea.StateOpen + _, _, err = env.Client.EditIssue(env.Owner, env.RepoName, issueNum, gitea.EditIssueOption{ + State: &openState, + }) + if err != nil { + t.Fatalf("failed to reopen issue: %v", err) + } + + // Verify state is now open + issue, _, err = env.Client.GetIssue(env.Owner, env.RepoName, issueNum) + if err != nil { + t.Fatalf("failed to get issue: %v", err) + } + + if issue.State != "open" { + t.Fatalf("expected state 'open' after reopen, got '%s'", issue.State) + } + + t.Logf("Successfully edited issue #%d state", issueNum) +} + +// TestEditIssueMultipleFields verifies we can edit multiple issue fields at once +func TestEditIssueMultipleFields(t *testing.T) { + env := NewTestEnv(t) + + // Create a test issue + issueNum := env.CreateTestIssue( + "[FGJ E2E Test] Original Multi-Edit", + "Original body for multi-field edit", + ) + + defer env.CleanupIssue(issueNum) + + // Edit title, body, and state at once + newTitle := "[FGJ E2E Test] Updated Multi-Edit" + newBody := "Updated body from multi-field edit test" + closedState := gitea.StateClosed + + _, _, err := env.Client.EditIssue(env.Owner, env.RepoName, issueNum, gitea.EditIssueOption{ + Title: newTitle, + Body: &newBody, + State: &closedState, + }) + if err != nil { + t.Fatalf("failed to edit multiple issue fields: %v", err) + } + + // Verify all fields were updated + issue, _, err := env.Client.GetIssue(env.Owner, env.RepoName, issueNum) + if err != nil { + t.Fatalf("failed to get issue: %v", err) + } + + if issue.Title != newTitle { + t.Fatalf("expected title '%s', got '%s'", newTitle, issue.Title) + } + + if issue.Body != newBody { + t.Fatalf("expected body '%s', got '%s'", newBody, issue.Body) + } + + if issue.State != "closed" { + t.Fatalf("expected state 'closed', got '%s'", issue.State) + } + + t.Logf("Successfully edited multiple fields on issue #%d", issueNum) +} + // TestCLIPRList verifies the `fgj pr list` command works func TestCLIPRList(t *testing.T) { env := NewTestEnv(t)