package validator_test

import (
	"fmt"	
	"testing"

	"github.com/fiskerinc/cloud-services/pkg/testhelper"
	"github.com/fiskerinc/cloud-services/pkg/validator"
)

func TestValidateVinCheckDigit(t *testing.T) {
	// these should pass vin regex validation
	//otherwise that error would be received here and the test run would fail because of expected tag name mismatch
	tests := []TestCar{
		{
			VIN: "WVWBN7AN1DE546002",
			//Expected: "Key: 'Error:Field' Error:Field validation for 'VIN' failed on the 'vincheck' tag",
			Expected: "Key: '' Error:Field validation for '' failed on the 'vincheck' tag",
		},
		{
			VIN: "WVWBC7AN1DE546002",
			//Expected: "Key: 'Error:Field' Error:Field validation for 'VIN' failed on the 'vincheck' tag",
			Expected: "Key: '' Error:Field validation for '' failed on the 'vincheck' tag",
		},
	}

	tests = append(tests, vinValidatorValidTests...)

	for _, test := range tests {
		err := validator.ValidateField(test.VIN, "vincheck")
		if err == nil && test.Expected != "" {
			t.Errorf(testhelper.TestErrorTemplate, test.VIN, test.Expected, err)
		} else if err != nil && err.Error() != test.Expected {
			t.Errorf(testhelper.TestErrorTemplate, test.VIN, test.Expected, err.Error())
		}
		fmt.Println(test, err)
	}
}

var vwGer2013Valid = "WVWBN7AN6DE546002"
var vwGer2013Invalid1 = "WVWBN7AN1DE546002"
var vwGer2013Invalid2 = "WVWBN7AN6DE54600"
var miniGer2009Valid = "WMWMS335X9TY38985"
var bugatFra1998Valid = "VF9SP3V31JM795073"
var dodgeUsa1998Valid = "1B3ES42C4WD736523"

// TEMP
var fskUsa2021Valid = "1F1BN7AN7MA000001"

// TEMP

//var unkJap2013Valid = "JS1GR7MA7D2101136"
//var audiGer2012Valid = "WAUFFAFM3CA000000"