style(issues): check kv close in history tests, tagged switches for issue transitions, parallel IsDone subtests
3 files · +9 -6
M internal/adapters/kvstore/issue_history_internal_test.go +1 -1
| @@ -14,7 +14,7 @@ func TestPreparedEventSequenceConflict(t *testing.T) { | |||
| 14 | 14 | ctx := context.Background() | |
| 15 | 15 | db, err := kv.Open(ctx, t.TempDir(), kv.Options{}) | |
| 16 | 16 | require.NoError(t, err) | |
| 17 | - | defer db.Close(ctx) | |
| 17 | + | t.Cleanup(func() { require.NoError(t, db.Close(ctx)) }) | |
| 18 | 18 | repo, err := domain.ParseRepoName("proj") | |
| 19 | 19 | require.NoError(t, err) | |
| 20 | 20 | events := []domain.IssueEvent{{Kind: domain.IssueEventClosed, MergeRequest: 9}} | |
| @@ -14,7 +14,7 @@ func TestPreparedEventSequenceConflict(t *testing.T) { | |||||
| 14 | ctx := context.Background() | 14 | ctx := context.Background() | ||
| 15 | db, err := kv.Open(ctx, t.TempDir(), kv.Options{}) | 15 | db, err := kv.Open(ctx, t.TempDir(), kv.Options{}) | ||
| 16 | require.NoError(t, err) | 16 | require.NoError(t, err) | ||
| 17 | - | defer db.Close(ctx) | 17 | + | t.Cleanup(func() { require.NoError(t, db.Close(ctx)) }) |
| 18 | repo, err := domain.ParseRepoName("proj") | 18 | repo, err := domain.ParseRepoName("proj") | ||
| 19 | require.NoError(t, err) | 19 | require.NoError(t, err) | ||
| 20 | events := []domain.IssueEvent{{Kind: domain.IssueEventClosed, MergeRequest: 9}} | 20 | events := []domain.IssueEvent{{Kind: domain.IssueEventClosed, MergeRequest: 9}} | ||
M internal/domain/issue_test.go +1 -0
| @@ -141,6 +141,7 @@ func TestIssueIsDone(t *testing.T) { | |||
| 141 | 141 | t.Parallel() | |
| 142 | 142 | for _, state := range []domain.IssueState{"", "unknown", domain.IssueStateOpen, domain.IssueStateClosed, domain.IssueStateResolved} { | |
| 143 | 143 | t.Run(string(state), func(t *testing.T) { | |
| 144 | + | t.Parallel() | |
| 144 | 145 | issue := domain.Issue{State: state} | |
| 145 | 146 | assert.Equal(t, state == domain.IssueStateClosed || state == domain.IssueStateResolved, issue.IsDone()) | |
| 146 | 147 | assert.Equal(t, state == domain.IssueStateOpen, issue.IsOpen()) | |
| @@ -141,6 +141,7 @@ func TestIssueIsDone(t *testing.T) { | |||||
| 141 | t.Parallel() | 141 | t.Parallel() | ||
| 142 | for _, state := range []domain.IssueState{"", "unknown", domain.IssueStateOpen, domain.IssueStateClosed, domain.IssueStateResolved} { | 142 | for _, state := range []domain.IssueState{"", "unknown", domain.IssueStateOpen, domain.IssueStateClosed, domain.IssueStateResolved} { | ||
| 143 | t.Run(string(state), func(t *testing.T) { | 143 | t.Run(string(state), func(t *testing.T) { | ||
| 144 | + | t.Parallel() | |||
| 144 | issue := domain.Issue{State: state} | 145 | issue := domain.Issue{State: state} | ||
| 145 | assert.Equal(t, state == domain.IssueStateClosed || state == domain.IssueStateResolved, issue.IsDone()) | 146 | assert.Equal(t, state == domain.IssueStateClosed || state == domain.IssueStateResolved, issue.IsDone()) | ||
| 146 | assert.Equal(t, state == domain.IssueStateOpen, issue.IsOpen()) | 147 | assert.Equal(t, state == domain.IssueStateOpen, issue.IsOpen()) | ||
M internal/usecase/issues.go +7 -5
| @@ -277,10 +277,11 @@ func (i *Issues) transition(ctx context.Context, p domain.Principal, name domain | |||
| 277 | 277 | } | |
| 278 | 278 | verb := "close" | |
| 279 | 279 | kind := domain.IssueEventClosed | |
| 280 | - | if to == domain.IssueStateOpen { | |
| 280 | + | switch to { | |
| 281 | + | case domain.IssueStateOpen: | |
| 281 | 282 | verb = "reopen" | |
| 282 | 283 | kind = domain.IssueEventReopened | |
| 283 | - | } else if to == domain.IssueStateResolved { | |
| 284 | + | case domain.IssueStateResolved: | |
| 284 | 285 | verb = "resolve" | |
| 285 | 286 | kind = domain.IssueEventResolved | |
| 286 | 287 | } | |
| @@ -305,11 +306,12 @@ func (i *Issues) transition(ctx context.Context, p domain.Principal, name domain | |||
| 305 | 306 | log.Info().Str("repo", name.String()).Int64("number", number). | |
| 306 | 307 | Str("principal", p.Label()).Str("token_id", p.TokenID()).Msg("issue " + verb + "d") | |
| 307 | 308 | recordActivity(ctx, i.meta, repo.Name, issue.UpdatedAt) | |
| 308 | - | if to == domain.IssueStateOpen { | |
| 309 | + | switch to { | |
| 310 | + | case domain.IssueStateOpen: | |
| 309 | 311 | i.bus.Publish(ctx, domain.IssueReopened{Issue: issue, At: issue.UpdatedAt, Visibility: repo.Visibility, CreatedAt: repo.CreatedAt}) | |
| 310 | - | } else if to == domain.IssueStateResolved { | |
| 312 | + | case domain.IssueStateResolved: | |
| 311 | 313 | i.bus.Publish(ctx, domain.IssueResolved{Issue: issue, At: issue.UpdatedAt, Visibility: repo.Visibility, CreatedAt: repo.CreatedAt}) | |
| 312 | - | } else { | |
| 314 | + | default: | |
| 313 | 315 | i.bus.Publish(ctx, domain.IssueClosed{Issue: issue, At: issue.UpdatedAt, Visibility: repo.Visibility, CreatedAt: repo.CreatedAt}) | |
| 314 | 316 | } | |
| 315 | 317 | return issue, nil | |
| @@ -277,10 +277,11 @@ func (i *Issues) transition(ctx context.Context, p domain.Principal, name domain | |||||
| 277 | } | 277 | } | ||
| 278 | verb := "close" | 278 | verb := "close" | ||
| 279 | kind := domain.IssueEventClosed | 279 | kind := domain.IssueEventClosed | ||
| 280 | - | if to == domain.IssueStateOpen { | 280 | + | switch to { |
| 281 | + | case domain.IssueStateOpen: | |||
| 281 | verb = "reopen" | 282 | verb = "reopen" | ||
| 282 | kind = domain.IssueEventReopened | 283 | kind = domain.IssueEventReopened | ||
| 283 | - | } else if to == domain.IssueStateResolved { | 284 | + | case domain.IssueStateResolved: |
| 284 | verb = "resolve" | 285 | verb = "resolve" | ||
| 285 | kind = domain.IssueEventResolved | 286 | kind = domain.IssueEventResolved | ||
| 286 | } | 287 | } | ||
| @@ -305,11 +306,12 @@ func (i *Issues) transition(ctx context.Context, p domain.Principal, name domain | |||||
| 305 | log.Info().Str("repo", name.String()).Int64("number", number). | 306 | log.Info().Str("repo", name.String()).Int64("number", number). | ||
| 306 | Str("principal", p.Label()).Str("token_id", p.TokenID()).Msg("issue " + verb + "d") | 307 | Str("principal", p.Label()).Str("token_id", p.TokenID()).Msg("issue " + verb + "d") | ||
| 307 | recordActivity(ctx, i.meta, repo.Name, issue.UpdatedAt) | 308 | recordActivity(ctx, i.meta, repo.Name, issue.UpdatedAt) | ||
| 308 | - | if to == domain.IssueStateOpen { | 309 | + | switch to { |
| 310 | + | case domain.IssueStateOpen: | |||
| 309 | i.bus.Publish(ctx, domain.IssueReopened{Issue: issue, At: issue.UpdatedAt, Visibility: repo.Visibility, CreatedAt: repo.CreatedAt}) | 311 | i.bus.Publish(ctx, domain.IssueReopened{Issue: issue, At: issue.UpdatedAt, Visibility: repo.Visibility, CreatedAt: repo.CreatedAt}) | ||
| 310 | - | } else if to == domain.IssueStateResolved { | 312 | + | case domain.IssueStateResolved: |
| 311 | i.bus.Publish(ctx, domain.IssueResolved{Issue: issue, At: issue.UpdatedAt, Visibility: repo.Visibility, CreatedAt: repo.CreatedAt}) | 313 | i.bus.Publish(ctx, domain.IssueResolved{Issue: issue, At: issue.UpdatedAt, Visibility: repo.Visibility, CreatedAt: repo.CreatedAt}) | ||
| 312 | - | } else { | 314 | + | default: |
| 313 | i.bus.Publish(ctx, domain.IssueClosed{Issue: issue, At: issue.UpdatedAt, Visibility: repo.Visibility, CreatedAt: repo.CreatedAt}) | 315 | i.bus.Publish(ctx, domain.IssueClosed{Issue: issue, At: issue.UpdatedAt, Visibility: repo.Visibility, CreatedAt: repo.CreatedAt}) | ||
| 314 | } | 316 | } | ||
| 315 | return issue, nil | 317 | return issue, nil | ||