| // Copyright 2024 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package gerrit |
| |
| import ( |
| "context" |
| "testing" |
| |
| "golang.org/x/oscar/internal/docs" |
| "golang.org/x/oscar/internal/storage" |
| "golang.org/x/oscar/internal/testutil" |
| ) |
| |
| func TestSyncGerritDocs(t *testing.T) { |
| check := testutil.Checker(t) |
| lg := testutil.Slogger(t) |
| db := storage.MemDB() |
| ctx := context.Background() |
| |
| gr := New("go-review.googlesource.com", lg, db, nil, nil) |
| check(gr.Testing().LoadTxtar("testdata/changes.txt")) |
| |
| check(gr.Add("test")) |
| // Sync the changes so the watcher has |
| // something to work with. |
| check(gr.Sync(ctx)) |
| |
| dc := docs.New(lg, db) |
| docs.Sync(dc, gr) |
| |
| var want = []string{ |
| "https://go-review.googlesource.com/c/test/+/1#related-content", |
| "https://go-review.googlesource.com/c/test/+/2#related-content", |
| "https://go-review.googlesource.com/c/test/+/3#related-content", |
| } |
| for d := range dc.Docs("") { |
| if len(want) == 0 { |
| t.Fatalf("unexpected extra doc: %s", d.ID) |
| } |
| if d.ID != want[0] { |
| t.Fatalf("doc mismatch: have %s, want %s", d.ID, want[0]) |
| } |
| want = want[1:] |
| if d.ID == ch1 { |
| if d.Title != ch1Title { |
| t.Errorf("#1 Title = %q, want %q", d.Title, ch1Title) |
| } |
| if d.Text != ch1Text { |
| t.Errorf("#1 Text = %q, want %q", d.Text, ch1Text) |
| } |
| } |
| } |
| if len(want) > 0 { |
| t.Fatalf("missing docs: %v", want) |
| } |
| |
| dc.Add("https://go-review.googlesource.com/c/test/+/1#related-content", "OLD TITLE", "OLD TEXT") |
| docs.Sync(dc, gr) |
| d, _ := dc.Get(ch1) |
| if d.Title != "OLD TITLE" || d.Text != "OLD TEXT" { |
| t.Errorf("Sync rewrote #1: Title=%q Text=%q, want OLD TITLE, OLD TEXT", d.Title, d.Text) |
| } |
| |
| docs.Restart(gr) |
| docs.Sync(dc, gr) |
| d, _ = dc.Get(ch1) |
| if d.Title == "OLD TITLE" || d.Text == "OLD TEXT" { |
| t.Errorf("Restart+Sync did not rewrite #1: Title=%q Text=%q", d.Title, d.Text) |
| } |
| } |
| |
| var ( |
| ch1 = "https://go-review.googlesource.com/c/test/+/1#related-content" |
| ch1Title = "this is change number 1" |
| ch1Text = "gerrit: test change\n\ncomment 1\n\nmessage 1\n\ncomment 2\n\nmessage 2" |
| ) |