package engineer

import (
	"sync"
	"testing"

	"github.com/stretchr/testify/require"
	"gorm.io/gorm/schema"
)

func TestEngineerSchema(t *testing.T) {
	t.Parallel()

	engineerSchema, err := schema.Parse(&Engineer{}, &sync.Map{}, schema.NamingStrategy{})
	require.NoError(t, err)
	require.Equal(t, "engineer_engineers", engineerSchema.Table)

	require.Len(t, engineerSchema.PrimaryFields, 1)
	require.Equal(t, "email", engineerSchema.PrimaryFields[0].DBName)

	eligibilityIndex := engineerSchema.LookIndex("idx_engineer_eligibility")
	require.NotNil(t, eligibilityIndex)
	require.Len(t, eligibilityIndex.Fields, 1)
	require.Equal(t, "dispatch_enabled", eligibilityIndex.Fields[0].DBName)
	require.NotNil(t, engineerSchema.LookUpField("DispatchEnabled"))
	require.NotNil(t, engineerSchema.LookUpField("LastDispatchedAt"))
	require.NotNil(t, engineerSchema.LookUpField("LastDispatchedIssue"))
	require.Nil(t, engineerSchema.LookUpField("LastAssignedAt"))
	require.Nil(t, engineerSchema.LookUpField("Name"))
	require.Nil(t, engineerSchema.LookUpField("SourceActive"))
	require.Nil(t, engineerSchema.LookUpField("SourceSyncedAt"))
	require.Nil(t, engineerSchema.LookUpField("ExpertiseJSON"))
}
