fix: own comments trigger NEW
This commit is contained in:
@@ -303,6 +303,56 @@ func TestReplayReconcilesReplyBeforeAskingAboutAmbiguousDelivery(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestReplyProjectionUsesRemoteCommentWithoutTemporaryDuplicate(t *testing.T) {
|
||||
store := loadMutationQueue("")
|
||||
enqueued := time.Now().Add(-time.Second)
|
||||
operation := mutationOperation{
|
||||
ID: "reply", Kind: mutationReply, Owner: "o", Repository: "r", Number: 1,
|
||||
ThreadID: "thread", Body: "body", Viewer: "me", EnqueuedAt: enqueued,
|
||||
}
|
||||
if err := store.add(operation); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
m := NewApp(nil, "o", "r", false, 50, time.Minute)
|
||||
m.mutations = store
|
||||
details := PRDetails{
|
||||
PullRequest: PullRequest{Owner: "o", Repository: "r", Number: 1},
|
||||
Threads: []ReviewThread{{ID: "thread", Comments: []ReviewComment{
|
||||
{ID: "remote", Author: "me", Body: "body", CreatedAt: enqueued.Add(time.Second)},
|
||||
}}},
|
||||
}
|
||||
|
||||
projected := m.projectQueuedMutations(details)
|
||||
if len(projected.Threads[0].Comments) != 1 || projected.Threads[0].Comments[0].ID != "remote" {
|
||||
t.Fatalf("single remote reply was duplicated: %#v", projected.Threads[0].Comments)
|
||||
}
|
||||
|
||||
details.Threads[0].Comments = append(details.Threads[0].Comments, ReviewComment{
|
||||
ID: "actual-duplicate", Author: "me", Body: "body", CreatedAt: enqueued.Add(2 * time.Second),
|
||||
})
|
||||
projected = m.projectQueuedMutations(details)
|
||||
if len(projected.Threads[0].Comments) != 2 {
|
||||
t.Fatalf("remote duplicates were not preserved exactly: %#v", projected.Threads[0].Comments)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSuccessfulReplyCheckpointsRemoteCommentID(t *testing.T) {
|
||||
store := loadMutationQueue("")
|
||||
operation := mutationOperation{
|
||||
ID: "reply", Kind: mutationReply, Owner: "o", Repository: "r", Number: 1,
|
||||
ThreadID: "thread", Body: "body", Viewer: "me", EnqueuedAt: time.Now(),
|
||||
}
|
||||
if err := store.add(operation); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
details := PRDetails{Threads: []ReviewThread{{ID: "thread", ViewerCanReply: true}}}
|
||||
result := executeQueuedMutation(context.Background(), &recordingService{}, store, operation, details)
|
||||
stored, ok := store.front()
|
||||
if result.state != mutationReplayVerifying || !ok || stored.ReplyID != "new-comment" {
|
||||
t.Fatalf("reply verification identity was not checkpointed: result=%#v stored=%#v", result, stored)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSuccessfulResolutionWaitsForLiveVerification(t *testing.T) {
|
||||
store := loadMutationQueue("")
|
||||
operation := mutationOperation{
|
||||
|
||||
Reference in New Issue
Block a user