2929import com .basistech .util .LanguageCode ;
3030import com .fasterxml .jackson .core .JsonProcessingException ;
3131import com .fasterxml .jackson .core .type .TypeReference ;
32- import com .fasterxml .jackson .databind .MapperFeature ;
3332import com .fasterxml .jackson .databind .ObjectMapper ;
34- import com .fasterxml .jackson .databind .SerializationFeature ;
3533import org .junit .jupiter .api .Test ;
3634
3735import java .util .List ;
4240class RecordSimilarityRequestTest {
4341
4442 private static final ObjectMapper MAPPER = ApiModelMixinModule .setupObjectMapper (new ObjectMapper ());
43+ private static final String EXPECTED_JSON = "{\" fields\" :{\" dob2\" :{\" type\" :\" rni_date\" ,\" weight\" :0.1},\" primaryName\" :{\" type\" :\" rni_name\" ,\" weight\" :0.5},\" dob\" :{\" type\" :\" rni_date\" ,\" weight\" :0.2},\" addr\" :{\" type\" :\" rni_address\" ,\" weight\" :0.5,\" scoreIfNull\" :0.8}},\" properties\" :{\" threshold\" :0.7,\" includeExplainInfo\" :true},\" records\" :{\" left\" :[{\" dob2\" :{\" date\" :\" 1993/04/16\" },\" primaryName\" :{\" text\" :\" Ethan R\" ,\" entityType\" :\" PERSON\" ,\" language\" :\" eng\" ,\" languageOfOrigin\" :\" eng\" ,\" script\" :\" Latn\" },\" dob\" :\" 1993-04-16\" ,\" addr\" :\" 123 Roadlane Ave\" },{\" primaryName\" :{\" text\" :\" Evan R\" },\" dob\" :{\" date\" :\" 1993-04-16\" }}],\" right\" :[{\" primaryName\" :{\" text\" :\" Seth R\" ,\" language\" :\" eng\" },\" dob\" :{\" date\" :\" 1993-04-16\" }},{\" dob2\" :{\" date\" :\" 1993/04/16\" },\" primaryName\" :\" Ivan R\" ,\" dob\" :{\" date\" :\" 1993-04-16\" },\" addr\" :{\" houseNumber\" :\" 123\" ,\" road\" :\" Roadlane Ave\" }}]}}" ;
44+ private static final String EXPECTED_JSON_WITH_PARAMS = "{\" fields\" :{\" dob2\" :{\" type\" :\" rni_date\" ,\" weight\" :0.1},\" primaryName\" :{\" type\" :\" rni_name\" ,\" weight\" :0.5},\" dob\" :{\" type\" :\" rni_date\" ,\" weight\" :0.2},\" addr\" :{\" type\" :\" rni_address\" ,\" weight\" :0.5}},\" properties\" :{\" threshold\" :0.7,\" includeExplainInfo\" :true,\" parameters\" :{\" timeDistanceWeight\" :\" 0.8\" ,\" stringDistanceWeight\" :\" 0.1\" }},\" records\" :{\" left\" :[{\" dob2\" :{\" date\" :\" 1993/04/16\" },\" primaryName\" :{\" text\" :\" Ethan R\" ,\" entityType\" :\" PERSON\" ,\" language\" :\" eng\" ,\" languageOfOrigin\" :\" eng\" ,\" script\" :\" Latn\" },\" dob\" :\" 1993-04-16\" ,\" addr\" :\" 123 Roadlane Ave\" },{\" primaryName\" :{\" text\" :\" Evan R\" },\" dob\" :{\" date\" :\" 1993-04-16\" }}],\" right\" :[{\" primaryName\" :{\" text\" :\" Seth R\" ,\" language\" :\" eng\" },\" dob\" :{\" date\" :\" 1993-04-16\" }},{\" dob2\" :{\" date\" :\" 1993/04/16\" },\" primaryName\" :\" Ivan R\" ,\" dob\" :{\" date\" :\" 1993-04-16\" },\" addr\" :{\" houseNumber\" :\" 123\" ,\" road\" :\" Roadlane Ave\" }}]}}" ;
45+ private static final String EXPECTED_JSON_WITH_UNIVERSE = "{\" fields\" :{\" dob2\" :{\" type\" :\" rni_date\" ,\" weight\" :0.1},\" primaryName\" :{\" type\" :\" rni_name\" ,\" weight\" :0.5},\" dob\" :{\" type\" :\" rni_date\" ,\" weight\" :0.2},\" addr\" :{\" type\" :\" rni_address\" ,\" weight\" :0.5}},\" properties\" :{\" threshold\" :0.7,\" includeExplainInfo\" :true,\" parameterUniverse\" :\" myParameterUniverse\" },\" records\" :{\" left\" :[{\" dob2\" :{\" date\" :\" 1993/04/16\" },\" primaryName\" :{\" text\" :\" Ethan R\" ,\" entityType\" :\" PERSON\" ,\" language\" :\" eng\" ,\" languageOfOrigin\" :\" eng\" ,\" script\" :\" Latn\" },\" dob\" :\" 1993-04-16\" ,\" addr\" :\" 123 Roadlane Ave\" },{\" primaryName\" :{\" text\" :\" Evan R\" },\" dob\" :{\" date\" :\" 1993-04-16\" }}],\" right\" :[{\" primaryName\" :{\" text\" :\" Seth R\" ,\" language\" :\" eng\" },\" dob\" :{\" date\" :\" 1993-04-16\" }},{\" dob2\" :{\" date\" :\" 1993/04/16\" },\" primaryName\" :\" Ivan R\" ,\" dob\" :{\" date\" :\" 1993-04-16\" },\" addr\" :{\" houseNumber\" :\" 123\" ,\" road\" :\" Roadlane Ave\" }}]}}" ;
4546
46- private static final String EXPECTED_JSON = "{\" fields\" :{\" addr \" :{\" type\" :\" rni_address \" ,\" weight\" :0.5 },\" dob \" :{\" type\" :\" rni_date \" ,\" weight\" :0.2 },\" dob2 \" :{\" type\" :\" rni_date\" ,\" weight\" :0.1 },\" primaryName \" :{\" type\" :\" rni_name \" ,\" weight\" :0.5}},\" properties\" :{\" includeExplainInfo \" :true ,\" threshold \" :0.7 },\" records\" :{\" left\" :[{\" addr \" :\" 123 Roadlane Ave \" , \" dob \" :\" 1993-04- 16\" ,\" dob2 \" :{\" date \" :\" 1993/04/16 \" } ,\" primaryName \" :{ \" entityType\" :\" PERSON\" ,\" language\" :\" eng\" ,\" languageOfOrigin\" :\" eng\" ,\" script\" :\" Latn\" ,\" text \" :\" Ethan R \" }},{ \" dob \" :{ \" date \" : \" 1993-04-16 \" }, \" primaryName\" :{\" text\" :\" Evan R\" }}] ,\" right \" :[{ \" dob\" :{\" date\" :\" 1993-04-16\" },\" primaryName \" :{\" language \" :\" eng \" , \" text\" :\" Seth R\" }},{ \" addr \" :{ \" address \" : \" 123 Roadlane Ave \" },\" dob\" :{\" date\" :\" 1993-04-16\" }, \" dob2\" :{\" date\" :\" 1993/04/16\" },\" primaryName\" :\" Ivan R\" }]}}" ;
47+ private static final String EXPECTED_JSON = "{\" fields\" :{\" dob2 \" :{\" type\" :\" rni_date \" ,\" weight\" :0.1 },\" primaryName \" :{\" type\" :\" rni_name \" ,\" weight\" :0.5 },\" dob \" :{\" type\" :\" rni_date\" ,\" weight\" :0.2 },\" addr \" :{\" type\" :\" rni_address \" ,\" weight\" :0.5}},\" properties\" :{\" threshold \" :0.7 ,\" includeExplainInfo \" :true },\" records\" :{\" left\" :[{\" dob2 \" :{ \" date \" :\" 1993/04/ 16\" } ,\" primaryName \" :{\" text \" :\" Ethan R \" ,\" entityType\" :\" PERSON\" ,\" language\" :\" eng\" ,\" languageOfOrigin\" :\" eng\" ,\" script\" :\" Latn\" } ,\" dob \" :\" 1993-04-16 \" , \" addr \" :\" 123 Roadlane Ave \" },{ \" primaryName\" :{\" text\" :\" Evan R\" },\" dob\" :{\" date\" :\" 1993-04-16\" }}] ,\" right \" :[ {\" primaryName \" :{ \" text\" :\" Seth R\" , \" language \" :\" eng \" },\" dob\" :{\" date\" :\" 1993-04-16\" }},{ \" dob2\" :{\" date\" :\" 1993/04/16\" },\" primaryName\" :\" Ivan R\" , \" dob \" :{ \" date \" : \" 1993-04-16 \" }, \" addr \" :{ \" address \" : \" 123 Roadlane Ave \" } }]}}" ;
4748 private static final RecordSimilarityRequest EXPECTED_REQUEST = RecordSimilarityRequest .builder ()
4849 .fields (Map .of (
50+ "addr" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_ADDRESS ).weight (0.5 ).scoreIfNull (0.8 ).build (),
51+ "dob2" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_DATE ).weight (0.1 ).scoreIfNull (null ).build (),
4952 "primaryName" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_NAME ).weight (0.5 ).build (),
53+ "dob" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_DATE ).weight (0.2 ).build ()))
54+ .properties (RecordSimilarityProperties .builder ().threshold (0.7 ).includeExplainInfo (true ).build ())
55+ .records (RecordSimilarityRecords .builder ()
56+ .left (
57+ List .of (
58+ Map .of (
59+ "primaryName" , NameField .FieldedName .builder ()
60+ .text ("Ethan R" ).entityType ("PERSON" )
61+ .language (LanguageCode .ENGLISH )
62+ .languageOfOrigin (LanguageCode .ENGLISH )
63+ .script (ISO15924 .Latn )
64+ .build (),
65+ "dob" , DateField .UnfieldedDate .builder ().date ("1993-04-16" ).build (),
66+ "dob2" , DateField .FieldedDate .builder ().date ("1993/04/16" ).build (),
67+ "addr" , AddressField .UnfieldedAddress .builder ().address ("123 Roadlane Ave" ).build ()
68+ ),
69+ Map .of (
70+ "primaryName" , NameField .FieldedName .builder ().text ("Evan R" ).build (),
71+ "dob" , DateField .FieldedDate .builder ().date ("1993-04-16" ).build ()
72+ )
73+ )
74+ ).right (
75+ List .of (
76+ Map .of (
77+ "primaryName" , NameField .FieldedName .builder ().text ("Seth R" ).language (LanguageCode .ENGLISH ).build (),
78+ "dob" , DateField .FieldedDate .builder ().date ("1993-04-16" ).build ()
79+ ),
80+ Map .of (
81+ "primaryName" , NameField .UnfieldedName .builder ().text ("Ivan R" ).build (),
82+ "dob" , DateField .FieldedDate .builder ().date ("1993-04-16" ).build (),
83+ "dob2" , DateField .FieldedDate .builder ().date ("1993/04/16" ).build (),
84+ "addr" , AddressField .FieldedAddress .builder ().houseNumber ("123" ).road ("Roadlane Ave" ).build ()
85+ )
86+ )
87+ ).build ()
88+ ).build ();
89+
90+ private static final RecordSimilarityRequest EXPECTED_REQUEST_WITH_PARAMS = RecordSimilarityRequest .builder ()
91+ .fields (Map .of (
92+ "dob2" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_DATE ).weight (0.1 ).build (),
93+ "primaryName" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_NAME ).weight (0.5 ).build (),
94+ "dob" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_DATE ).weight (0.2 ).build (),
95+ "addr" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_ADDRESS ).weight (0.5 ).build ()))
96+ .properties (RecordSimilarityProperties .builder ()
97+ .threshold (0.7 )
98+ .includeExplainInfo (true )
99+ .parameters (
100+ Map .of (
101+ "timeDistanceWeight" , "0.8" ,
102+ "stringDistanceWeight" , "0.1"
103+ )
104+ )
105+ .build ())
106+ .records (RecordSimilarityRecords .builder ()
107+ .left (
108+ List .of (
109+ Map .of (
110+ "primaryName" , NameField .FieldedName .builder ()
111+ .text ("Ethan R" ).entityType ("PERSON" )
112+ .language (LanguageCode .ENGLISH )
113+ .languageOfOrigin (LanguageCode .ENGLISH )
114+ .script (ISO15924 .Latn )
115+ .build (),
116+ "dob" , DateField .UnfieldedDate .builder ().date ("1993-04-16" ).build (),
117+ "dob2" , DateField .FieldedDate .builder ().date ("1993/04/16" ).build (),
118+ "addr" , AddressField .UnfieldedAddress .builder ().address ("123 Roadlane Ave" ).build ()
119+ ),
120+ Map .of (
121+ "primaryName" , NameField .FieldedName .builder ().text ("Evan R" ).build (),
122+ "dob" , DateField .FieldedDate .builder ().date ("1993-04-16" ).build ()
123+ )
124+ )
125+ ).right (
126+ List .of (
127+ Map .of (
128+ "primaryName" , NameField .FieldedName .builder ().text ("Seth R" ).language (LanguageCode .ENGLISH ).build (),
129+ "dob" , DateField .FieldedDate .builder ().date ("1993-04-16" ).build ()
130+ ),
131+ Map .of (
132+ "primaryName" , NameField .UnfieldedName .builder ().text ("Ivan R" ).build (),
133+ "dob" , DateField .FieldedDate .builder ().date ("1993-04-16" ).build (),
134+ "dob2" , DateField .FieldedDate .builder ().date ("1993/04/16" ).build (),
135+ "addr" , AddressField .FieldedAddress .builder ().houseNumber ("123" ).road ("Roadlane Ave" ).build ()
136+ )
137+ )
138+ ).build ()
139+ ).build ();
140+
141+ private static final RecordSimilarityRequest EXPECTED_REQUEST_WITH_UNIVERSE = RecordSimilarityRequest .builder ()
142+ .fields (Map .of (
50143 "dob" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_DATE ).weight (0.2 ).build (),
144+ "primaryName" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_NAME ).weight (0.5 ).build (),
51145 "dob2" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_DATE ).weight (0.1 ).build (),
52146 "addr" , RecordSimilarityFieldInfo .builder ().type (RecordFieldType .RNI_ADDRESS ).weight (0.5 ).build ()))
53- .properties (RecordSimilarityProperties .builder ().threshold (0.7 ).includeExplainInfo (true ).build ())
147+ .properties (RecordSimilarityProperties .builder ()
148+ .threshold (0.7 )
149+ .includeExplainInfo (true )
150+ .parameterUniverse ("myParameterUniverse" )
151+ .build ())
54152 .records (RecordSimilarityRecords .builder ()
55153 .left (
56154 List .of (
@@ -80,7 +178,7 @@ class RecordSimilarityRequestTest {
80178 "primaryName" , NameField .UnfieldedName .builder ().text ("Ivan R" ).build (),
81179 "dob" , DateField .FieldedDate .builder ().date ("1993-04-16" ).build (),
82180 "dob2" , DateField .FieldedDate .builder ().date ("1993/04/16" ).build (),
83- "addr" , AddressField .FieldedAddress .builder ().address ("123 Roadlane Ave" ).build ()
181+ "addr" , AddressField .FieldedAddress .builder ().houseNumber ("123" ). road ( " Roadlane Ave" ).build ()
84182 )
85183 )
86184 ).build ()
@@ -92,14 +190,27 @@ void testDeserialization() throws JsonProcessingException {
92190 MAPPER .enable (SerializationFeature .ORDER_MAP_ENTRIES_BY_KEYS );
93191 final RecordSimilarityRequest request = MAPPER .readValue (EXPECTED_JSON , new TypeReference <>() { });
94192 assertEquals (EXPECTED_REQUEST , request );
193+
194+ final RecordSimilarityRequest requestParams = MAPPER .readValue (EXPECTED_JSON_WITH_PARAMS , new TypeReference <>() { });
195+ assertEquals (EXPECTED_REQUEST_WITH_PARAMS , requestParams );
196+
197+ final RecordSimilarityRequest requestUniverse = MAPPER .readValue (EXPECTED_JSON_WITH_UNIVERSE , new TypeReference <>() { });
198+ assertEquals (EXPECTED_REQUEST_WITH_UNIVERSE , requestUniverse );
95199 }
96200
97201 @ Test
98202 void testSerialization () throws JsonProcessingException {
99- // For testing, force ordering
100- MAPPER .enable (MapperFeature .SORT_PROPERTIES_ALPHABETICALLY );
101- MAPPER .enable (SerializationFeature .ORDER_MAP_ENTRIES_BY_KEYS );
102- assertEquals (EXPECTED_JSON , MAPPER .writeValueAsString (EXPECTED_REQUEST ));
203+ final JsonNode expectedJson = MAPPER .readTree (EXPECTED_JSON );
204+ final JsonNode actualJson = MAPPER .valueToTree (EXPECTED_REQUEST );
205+ assertEquals (expectedJson , actualJson );
206+
207+ final JsonNode expectedParamJson = MAPPER .readTree (EXPECTED_JSON_WITH_PARAMS );
208+ final JsonNode actualParamJson = MAPPER .valueToTree (EXPECTED_REQUEST_WITH_PARAMS );
209+ assertEquals (expectedParamJson , actualParamJson );
210+
211+ final JsonNode expectedUniverseJson = MAPPER .readTree (EXPECTED_JSON_WITH_UNIVERSE );
212+ final JsonNode actualUniverseJson = MAPPER .valueToTree (EXPECTED_REQUEST_WITH_UNIVERSE );
213+ assertEquals (expectedUniverseJson , actualUniverseJson );
103214 }
104215
105216}
0 commit comments