package gitinfo

import (
	"context"
	"strings"
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"

	"go.skia.org/infra/go/git"
	vcstu "go.skia.org/infra/go/vcsinfo/testutils"
)

func TestVCSSuite(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	ctx := context.Background()
	r, err := NewGitInfo(ctx, repoDir, false, false)
	require.NoError(t, err)
	vcstu.TestDisplay(t, r)
}

func TestFrom(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	r, err := NewGitInfo(context.TODO(), repoDir, false, false)
	require.NoError(t, err)
	vcstu.TestFrom(t, r)
}

func TestLastN(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	ctx := context.Background()
	r, err := NewGitInfo(ctx, repoDir, false, false)
	if err != nil {
		t.Fatal(err)
	}

	testCases := []struct {
		n      int
		values []string
	}{
		{
			n:      0,
			values: []string{},
		},
		{
			n:      1,
			values: []string{"8652a6df7dc8a7e6addee49f6ed3c2308e36bd18"},
		},
		{
			n:      2,
			values: []string{"7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18"},
		},
		{
			n:      5,
			values: []string{"7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18"},
		},
	}
	for _, tc := range testCases {
		assert.ElementsMatch(t, tc.values, r.LastN(ctx, tc.n))
	}
}

func TestByIndex(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	r, err := NewGitInfo(context.TODO(), repoDir, false, false)
	require.NoError(t, err)
	vcstu.TestByIndex(t, r)
}

func TestLastNIndex(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	r, err := NewGitInfo(context.TODO(), repoDir, false, false)
	require.NoError(t, err)
	vcstu.TestLastNIndex(t, r)
}

func TestIndexOf(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	ctx := context.Background()
	r, err := NewGitInfo(ctx, repoDir, false, false)
	if err != nil {
		t.Fatal(err)
	}
	vcstu.TestIndexOf(t, r)
	require.Equal(t, "7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", r.firstCommit)
}

func TestRange(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	r, err := NewGitInfo(context.TODO(), repoDir, false, false)
	require.NoError(t, err)
	vcstu.TestRange(t, r)
}
func TestLog(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	ctx := context.Background()
	r, err := NewGitInfo(ctx, repoDir, false, false)
	if err != nil {
		t.Fatal(err)
	}

	got, err := r.Log(ctx, "7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", "")
	if err != nil {
		t.Fatal(err)
	}
	want := `commit 7a669cfa3f4cd3482a4fd03989f75efcc7595f7f
Author: Joe Gregorio <jcgregorio@google.com>
Date:   Wed Jul 30 08:00:42 2014 -0400

    First "checkin"
    ` + "\n" + `    With quotes.

README.txt
`

	if got != want {
		t.Errorf("Log failed: \nGot  %q \nWant %q", got, want)
	}

	got, err = r.Log(ctx, "7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18")
	if err != nil {
		t.Fatal(err)
	}
	want = `commit 8652a6df7dc8a7e6addee49f6ed3c2308e36bd18
Author: Joe Gregorio <jcgregorio@google.com>
Date:   Wed Jul 30 08:01:55 2014 -0400

    Added code. No body.

README.txt
hello.go
`

	if got != want {
		t.Errorf("Log failed: \nGot  %q \nWant %q", got, want)
	}

}

func TestLogFine(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	ctx := context.Background()
	r, err := NewGitInfo(ctx, repoDir, false, false)
	if err != nil {
		t.Fatal(err)
	}

	got, err := r.LogFine(ctx, "7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", "", "--format=format:%H")
	if err != nil {
		t.Fatal(err)
	}
	want := `7a669cfa3f4cd3482a4fd03989f75efcc7595f7f`

	if got != want {
		t.Errorf("Log failed: \nGot  %q \nWant %q", got, want)
	}

	got, err = r.LogFine(ctx, "7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18", "--format=format:%H")
	if err != nil {
		t.Fatal(err)
	}
	want = `8652a6df7dc8a7e6addee49f6ed3c2308e36bd18`

	if got != want {
		t.Errorf("Log failed: \nGot  %q \nWant %q", got, want)
	}
}

func TestLogArgs(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	ctx := context.Background()
	r, err := NewGitInfo(ctx, repoDir, false, false)
	if err != nil {
		t.Fatal(err)
	}
	got, err := r.LogArgs(ctx, "7a669cfa3f4cd3482a4fd03989f75efcc7595f7f..8652a6df7dc8a7e6addee49f6ed3c2308e36bd18", "--format=format:%H")
	if err != nil {
		t.Fatal(err)
	}
	want := `8652a6df7dc8a7e6addee49f6ed3c2308e36bd18`
	if got != want {
		t.Errorf("Log failed: \nGot  %q \nWant %q", got, want)
	}

}

func TestShortList(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	ctx := context.Background()
	r, err := NewGitInfo(ctx, repoDir, false, false)
	if err != nil {
		t.Fatal(err)
	}

	l, err := r.ShortList(ctx, "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18", "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18")
	if err != nil {
		t.Fatal(err)
	}

	if got, want := len(l.Commits), 0; got != want {
		t.Fatalf("Wrong number of zero results: Got %v Want %v", got, want)
	}

	c, err := r.ShortList(ctx, "7a669cfa3f4cd3482a4fd03989f75efcc7595f7f", "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18")
	if err != nil {
		t.Fatal(err)
	}

	expected := []struct {
		Hash    string
		Author  string
		Subject string
	}{
		{
			Hash:    "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18",
			Author:  "Joe Gregorio",
			Subject: "Added code. No body.",
		},
	}
	if got, want := len(c.Commits), len(expected); got != want {
		t.Fatalf("Wrong number of results: Got %v Want %v", got, want)
	}
	for i, o := range c.Commits {
		if got, want := o.Hash, expected[i].Hash; got != want {
			t.Errorf("Wrong hash: Got %v Want %v", got, want)
		}
		if got, want := o.Author, expected[i].Author; got != want {
			t.Errorf("Wrong author: Got %v Want %v", got, want)
		}
		if got, want := o.Subject, expected[i].Subject; got != want {
			t.Errorf("Wrong subject: Got %v Want %v", got, want)
		}
	}
}

func TestRevList(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	ctx := context.Background()
	r, err := NewGitInfo(ctx, repoDir, false, true)
	if err != nil {
		t.Fatal(err)
	}

	const rev1 = "7a669cfa3f4cd3482a4fd03989f75efcc7595f7f"
	const rev2 = "8652a6df7dc8a7e6addee49f6ed3c2308e36bd18"
	revs := []string{rev2, rev1} // rev-list is reverse-chronological.
	testCases := []struct {
		Input    []string
		Expected []string
	}{
		{
			Input:    []string{git.MasterBranch},
			Expected: revs,
		},
		{
			Input:    []string{"HEAD"},
			Expected: revs,
		},
		{
			Input:    []string{"7a669cf..8652a6d"},
			Expected: []string{rev2},
		},
		{
			Input:    []string{"8652a6d", "^7a669cf"},
			Expected: []string{rev2},
		},
		{
			Input:    []string{"8652a6d..7a669cf"},
			Expected: []string{},
		},
	}
	for _, tc := range testCases {
		actual, err := r.RevList(ctx, tc.Input...)
		if err != nil {
			t.Fatal(err)
		}
		assert.Equal(t, tc.Expected, actual, "Failed test for: git rev-list %s\nGot:  %v\nWant: %v", strings.Join(tc.Input, " "), actual, tc.Expected)
	}
}

func TestBranchInfo(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	ctx := context.Background()
	r, err := NewGitInfo(ctx, repoDir, false, true)
	if err != nil {
		t.Fatal(err)
	}

	allBranches, err := r.GetBranches(ctx)
	require.NoError(t, err)
	branches := []string{}
	for _, b := range allBranches {
		branches = append(branches, b.Name)
	}
	vcstu.TestBranchInfo(t, r, branches)
}

func TestSetBranch(t *testing.T) {
	repoDir, cleanup := vcstu.InitTempRepo(t)
	defer cleanup()

	ctx := context.Background()
	r, err := NewGitInfo(ctx, repoDir, false, true)
	if err != nil {
		t.Fatal(err)
	}

	branches, err := r.GetBranches(ctx)
	require.NoError(t, err)
	require.Equal(t, 2, len(branches))

	err = r.Checkout(ctx, "test-branch-1")
	require.NoError(t, err)

	commits := r.LastN(ctx, 10)
	require.Equal(t, 3, len(commits))
	require.Equal(t, "3f5a807d432ac232a952bbf223bc6952e4b49b2c", commits[2])
}
