@@ -947,3 +947,86 @@ func TestResolveMetadataFromInfo(t *testing.T) {
947947func buildStyleName (vinInfo * coremodels.DrivlyVINResponse ) string {
948948 return strings .TrimSpace (vinInfo .Trim + " " + vinInfo .SubModel )
949949}
950+
951+ func (s * DecodeVINQueryHandlerSuite ) TestDecodeVINQueryHandler_vinInfoFromKnown_multipleWMI () {
952+ vinny := "1FMCU0G61MUA52727"
953+ v := vinutil .VIN (vinny )
954+ // insert into wmi
955+ wmi1 := models.Wmi {
956+ Wmi : "1FM" ,
957+ ManufacturerName : "Ford" ,
958+ }
959+ wmi2 := models.Wmi {
960+ Wmi : "1FM" ,
961+ ManufacturerName : "Lincoln" ,
962+ }
963+ err := wmi1 .Insert (s .ctx , s .pdb .DBS ().Writer , boil .Infer ())
964+ require .NoError (s .T (), err )
965+ err = wmi2 .Insert (s .ctx , s .pdb .DBS ().Writer , boil .Infer ())
966+ require .NoError (s .T (), err )
967+ // mock call to get definition by id
968+ definitionID := "ford_escape_2020"
969+
970+ s .mockDeviceDefinitionOnChainService .EXPECT ().GetDefinitionByID (gomock .Any (), gomock .AnyOf ("lincoln_escape_2020" , definitionID )).AnyTimes ().Return (& coremodels.DeviceDefinitionTablelandModel {
971+ ID : definitionID ,
972+ KSUID : ksuid .New ().String (),
973+ Model : "Escape" ,
974+ Year : 2020 ,
975+ DeviceType : common .DefaultDeviceType ,
976+ ImageURI : "" ,
977+ Metadata : nil ,
978+ }, nil , nil )
979+ //s.mockDeviceDefinitionOnChainService.EXPECT().GetDefinitionByID(gomock.Any(), "lincoln_escape_2020").AnyTimes().Return(nil, nil, fmt.Errorf("not found"))
980+
981+ got , err := s .queryHandler .vinInfoFromKnown (v , "Escape" , 2020 )
982+ require .NoError (s .T (), err )
983+ assert .Equal (s .T (), "1FMCU0G61MUA52727" , got .VIN )
984+ assert .Equal (s .T (), "Ford" , got .Make )
985+ assert .Equal (s .T (), "Escape" , got .Model )
986+ assert .Equal (s .T (), int32 (2020 ), got .Year )
987+ }
988+
989+ func (s * DecodeVINQueryHandlerSuite ) TestDecodeVINQueryHandler_vinInfoFromKnown_singleWMI () {
990+ vinny := "1FMCU0G61MUA52727"
991+ v := vinutil .VIN (vinny )
992+ // insert into wmi
993+ wmi1 := models.Wmi {
994+ Wmi : "1FM" ,
995+ ManufacturerName : "Ford" ,
996+ }
997+
998+ err := wmi1 .Insert (s .ctx , s .pdb .DBS ().Writer , boil .Infer ())
999+ require .NoError (s .T (), err )
1000+
1001+ got , err := s .queryHandler .vinInfoFromKnown (v , "Escape" , 2020 )
1002+ require .NoError (s .T (), err )
1003+ assert .Equal (s .T (), "1FMCU0G61MUA52727" , got .VIN )
1004+ assert .Equal (s .T (), "Ford" , got .Make )
1005+ assert .Equal (s .T (), "Escape" , got .Model )
1006+ assert .Equal (s .T (), int32 (2020 ), got .Year )
1007+ }
1008+
1009+ func (s * DecodeVINQueryHandlerSuite ) TestDecodeVINQueryHandler_vinInfoFromKnown_multipleWMINoDDFound () {
1010+ vinny := "1FMCU0G61MUA52727"
1011+ v := vinutil .VIN (vinny )
1012+ // insert into wmi
1013+ wmi1 := models.Wmi {
1014+ Wmi : "1FM" ,
1015+ ManufacturerName : "Ford" ,
1016+ }
1017+ wmi2 := models.Wmi {
1018+ Wmi : "1FM" ,
1019+ ManufacturerName : "Lincoln" ,
1020+ }
1021+ err := wmi1 .Insert (s .ctx , s .pdb .DBS ().Writer , boil .Infer ())
1022+ require .NoError (s .T (), err )
1023+ err = wmi2 .Insert (s .ctx , s .pdb .DBS ().Writer , boil .Infer ())
1024+ require .NoError (s .T (), err )
1025+ // mock call to get definition by id
1026+ definitionID := "ford_escape_2020"
1027+ s .mockDeviceDefinitionOnChainService .EXPECT ().GetDefinitionByID (gomock .Any (), gomock .AnyOf ("lincoln_escape_2020" , definitionID )).Times (2 ).Return (nil , nil , fmt .Errorf ("not found" ))
1028+
1029+ got , err := s .queryHandler .vinInfoFromKnown (v , "Escape" , 2020 )
1030+ require .Error (s .T (), err , "vinInfoFromKnown: unable to determine the right OEM between Ford, Lincoln for WMI %s 1FM" )
1031+ require .Nil (s .T (), got )
1032+ }
0 commit comments