package formatter

import (
	"testing"

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

func TestFilePathParsing(t *testing.T) {

	testCases := []struct {
		filePath         string
		expectedFileName string
	}{
		// locally cloned repo
		{
			filePath:         "/Users/user/Github/Netbird/netbird/formatter/formatter.go",
			expectedFileName: "formatter/formatter.go",
		},
		// locally cloned repo with duplicated name in path
		{
			filePath:         "/Users/user/netbird/repos/netbird/formatter/formatter.go",
			expectedFileName: "formatter/formatter.go",
		},
		// locally cloned repo with renamed package root
		{
			filePath:         "/Users/user/Github/MyOwnNetbirdClient/formatter/formatter.go",
			expectedFileName: "formatter/formatter.go",
		},
	}

	hook := NewContextHook()

	for _, testCase := range testCases {
		parsedString := hook.parseSrc(testCase.filePath)
		assert.Equal(t, testCase.expectedFileName, parsedString, "Parsed filepath does not match expected for %s", testCase.filePath)
	}

}