package git

import (
	"io/ioutil"
	"testing"
)

func TestResetToCommit(t *testing.T) {
	t.Parallel()
	repo := createTestRepo(t)
	seedTestRepo(t, repo)
	// create commit to reset to
	commitId, _ := updateReadme(t, repo, "testing reset")
	// create commit to reset from
	nextCommitId, _ := updateReadme(t, repo, "will be reset")

	// confirm that we wrote "will be reset" to the readme
	newBytes, err := ioutil.ReadFile(pathInRepo(repo, "README"))
	checkFatal(t, err)
	if string(newBytes) != "will be reset" {
		t.Fatalf("expected %s to equal 'will be reset'", string(newBytes))
	}

	// confirm that the head of the repo is the next commit id
	head, err := repo.Head()
	checkFatal(t, err)
	if head.Target().String() != nextCommitId.String() {
		t.Fatalf(
			"expected to be at latest commit %s, but was %s",
			nextCommitId.String(),
			head.Target().String(),
		)
	}

	commitToResetTo, err := repo.LookupCommit(commitId)
	checkFatal(t, err)

	repo.ResetToCommit(commitToResetTo, ResetHard, &CheckoutOpts{})

	// check that the file now reads "testing reset" like it did before
	bytes, err := ioutil.ReadFile(pathInRepo(repo, "README"))
	checkFatal(t, err)
	if string(bytes) != "testing reset" {
		t.Fatalf("expected %s to equal 'testing reset'", string(bytes))
	}
}
