// SPDX-FileCopyrightText: 2025 Romain Maneschi // // SPDX-License-Identifier: EUPL-1.2 package main import ( "bytes" "fmt" "io/fs" "testing" "time" gitroot "gitroot.dev/libs/golang/plugin/model" "gitroot.dev/libs/golang/plugin/test" ) var firstRender = `
  • aaaa - first (Wed Feb 12 14:33:00 1986) <moi>
  • ` var secondRender = `
  • bbbb - second (Wed Feb 12 14:33:00 1986) <moi>
  • aaaa - first (Wed Feb 12 14:33:00 1986) <moi>
  • ` var thirdRender = `
  • dddd - four (Wed Feb 12 14:33:00 1986) <moi>
  • cccc - commit not found
  • bbbb - second (Wed Feb 12 14:33:00 1986) <moi>
  • aaaa - first (Wed Feb 12 14:33:00 1986) <moi>
  • ` var fourRender = `
  • dddd - four (Wed Feb 12 14:33:00 1986) <moi>
  • cccc - third (Wed Feb 12 14:33:00 1986) <moi>
  • bbbb - second (Wed Feb 12 14:33:00 1986) <moi>
  • aaaa - first (Wed Feb 12 14:33:00 1986) <moi>
  • ` func TestBranchRender(t *testing.T) { p := &Plugin{ server: test.NewFakeServer(t), } p.Init("repo", false, `{"branchesDir": "branches"}`) p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "aaaa", Message: "first", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: NullCommitHash}) p.RenderBranches() all, err := fs.ReadFile(p.server.Webcontent(), "branches/index.html") if err != nil { t.Fatal(err) } if !bytes.Contains(all, []byte("test")) { t.Fatalf("test not found") } branch, err := fs.ReadFile(p.server.Webcontent(), "branches/test.html") if err != nil { t.Fatal(err) } if !bytes.Contains(branch, []byte(firstRender)) { t.Fatalf("init commit \n---\n%s", branch) } p.branchCommits = make([]*branchCommits, 0) p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "bbbb", Message: "second", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "aaaa"}) p.RenderBranches() branch2, err := fs.ReadFile(p.server.Webcontent(), "branches/test.html") if err != nil { t.Fatal(err) } if !bytes.Contains(branch2, []byte(secondRender)) { t.Fatalf("second commit \n---\n%s", branch2) } p.branchCommits = make([]*branchCommits, 0) p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "dddd", Message: "four", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "cccc"}) p.RenderBranches() branch3, err := fs.ReadFile(p.server.Webcontent(), "branches/test.html") if err != nil { t.Fatal(err) } if !bytes.Contains(branch3, []byte(thirdRender)) { t.Fatalf("third commit \n---\n%s", branch3) } p.branchCommits = make([]*branchCommits, 0) p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "cccc", Message: "third", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "bbbb"}) p.RenderBranches() branch4, err := fs.ReadFile(p.server.Webcontent(), "branches/test.html") if err != nil { t.Fatal(err) } if !bytes.Contains(branch4, []byte(fourRender)) { t.Fatalf("four commit \n---\n%s", branch4) } p.branchCommits = make([]*branchCommits, 0) p.AddIfNotExist(gitroot.Commit{Branch: "test", Hash: "bbbb", Message: "second", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "aaaa"}) p.RenderBranches() branch4, err = fs.ReadFile(p.server.Webcontent(), "branches/test.html") if err != nil { t.Fatal(err) } if !bytes.Contains(branch4, []byte(fourRender)) { t.Fatalf("five commit \n---\n%s", branch4) } } func TestFillCommits(t *testing.T) { fromCalled := "" toCalled := "" p := &Plugin{ server: test.NewFakeServerWithOverride(t, test.Override{ Commits: func(from, to string) ([]gitroot.Commit, error) { fromCalled = from toCalled = to return []gitroot.Commit{ {Branch: "fillCommits", Hash: "dddd", Message: "four", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "cccc"}, {Branch: "fillCommits", Hash: "cccc", Message: "third", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "bbbb"}, }, nil }, }), } p.Init("repo", false, `{"branchesDir": "branches"}`) p.AddIfNotExist(gitroot.Commit{Branch: "fillCommits", Hash: "aaaa", Message: "first", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: NullCommitHash}) p.AddIfNotExist(gitroot.Commit{Branch: "fillCommits", Hash: "bbbb", Message: "second", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "aaaa"}) p.AddIfNotExist(gitroot.Commit{Branch: "fillCommits", Hash: "eeee", Message: "five", Date: time.Date(1986, time.February, 12, 14, 33, 0, 0, time.UTC), CommitterName: "moi", ParentHash: "dddd"}) p.RenderBranches() if fromCalled != "dddd" { t.Fatal(fmt.Errorf("from not dddd but %s", fromCalled)) } if toCalled != "bbbb" { t.Fatal(fmt.Errorf("to not bbbb but %s", toCalled)) } branch, err := fs.ReadFile(p.server.Webcontent(), "branches/fillCommits.html") if err != nil { t.Fatal(err) } if !bytes.Contains(branch, []byte(fourRender)) { t.Fatalf("init commit \n---\n%s", branch) } }