1616 * See the License for the specific language governing permissions and
1717 * limitations under the License.
1818 */
19- package org .neo4j .driver .internal .summary ;
19+ package org .neo4j .driver .internal .util ;
2020
2121import org .junit .Test ;
2222
2626
2727import org .neo4j .driver .internal .BoltServerAddress ;
2828import org .neo4j .driver .internal .spi .Connection ;
29- import org .neo4j .driver .internal .util . ServerVersion ;
29+ import org .neo4j .driver .internal .summary . InternalInputPosition ;
3030import org .neo4j .driver .v1 .Statement ;
3131import org .neo4j .driver .v1 .Value ;
3232import org .neo4j .driver .v1 .summary .Notification ;
3535import org .neo4j .driver .v1 .summary .ResultSummary ;
3636
3737import static java .util .Arrays .asList ;
38+ import static java .util .Collections .emptyList ;
3839import static java .util .Collections .emptyMap ;
3940import static java .util .Collections .singletonMap ;
4041import static org .junit .Assert .assertEquals ;
4445import static org .mockito .Mockito .mock ;
4546import static org .mockito .Mockito .when ;
4647import static org .neo4j .driver .internal .summary .InternalSummaryCounters .EMPTY_STATS ;
47- import static org .neo4j .driver .internal .summary .ResultSummaryCreator .create ;
48+ import static org .neo4j .driver .internal .util .MetadataUtil .extractResultAvailableAfter ;
49+ import static org .neo4j .driver .internal .util .MetadataUtil .extractStatementKeys ;
50+ import static org .neo4j .driver .internal .util .MetadataUtil .extractSummary ;
4851import static org .neo4j .driver .v1 .Values .parameters ;
4952import static org .neo4j .driver .v1 .Values .value ;
5053import static org .neo4j .driver .v1 .Values .values ;
5356import static org .neo4j .driver .v1 .summary .StatementType .SCHEMA_WRITE ;
5457import static org .neo4j .driver .v1 .summary .StatementType .WRITE_ONLY ;
5558
56- public class ResultSummaryCreatorTest
59+ public class MetadataUtilTest
5760{
61+ @ Test
62+ public void shouldExtractStatementKeys ()
63+ {
64+ List <String > keys = asList ( "hello" , " " , "world" , "!" );
65+ List <String > extractedKeys = extractStatementKeys ( singletonMap ( "fields" , value ( keys ) ) );
66+ assertEquals ( keys , extractedKeys );
67+ }
68+
69+ @ Test
70+ public void shouldExtractEmptyStatementKeysWhenNoneInMetadata ()
71+ {
72+ List <String > extractedKeys = extractStatementKeys ( emptyMap () );
73+ assertEquals ( emptyList (), extractedKeys );
74+ }
75+
76+ @ Test
77+ public void shouldExtractResultAvailableAfter ()
78+ {
79+ long extractedResultAvailableAfter = extractResultAvailableAfter (
80+ singletonMap ( "result_available_after" , value ( 424242 ) ) );
81+ assertEquals ( 424242L , extractedResultAvailableAfter );
82+ }
83+
84+ @ Test
85+ public void shouldExtractNoResultAvailableAfterWhenNoneInMetadata ()
86+ {
87+ long extractedResultAvailableAfter = extractResultAvailableAfter ( emptyMap () );
88+ assertEquals ( -1 , extractedResultAvailableAfter );
89+ }
90+
5891 @ Test
5992 public void shouldBuildResultSummaryWithStatement ()
6093 {
6194 Statement statement = new Statement ( "UNWIND range(10, 100) AS x CREATE (:Node {name: $name, x: x})" ,
6295 singletonMap ( "name" , "Apa" ) );
6396
64- ResultSummary summary = create ( statement , connectionMock (), 42 , emptyMap () );
97+ ResultSummary summary = extractSummary ( statement , connectionMock (), 42 , emptyMap () );
6598
6699 assertEquals ( statement , summary .statement () );
67100 }
@@ -71,7 +104,7 @@ public void shouldBuildResultSummaryWithServerInfo()
71104 {
72105 Connection connection = connectionMock ( new BoltServerAddress ( "server:42" ), ServerVersion .v3_2_0 );
73106
74- ResultSummary summary = create ( statement (), connection , 42 , emptyMap () );
107+ ResultSummary summary = extractSummary ( statement (), connection , 42 , emptyMap () );
75108
76109 assertEquals ( "server:42" , summary .server ().address () );
77110 assertEquals ( "Neo4j/3.2.0" , summary .server ().version () );
@@ -107,7 +140,7 @@ public void shouldBuildResultSummaryWithCounters()
107140
108141 Map <String ,Value > metadata = singletonMap ( "stats" , stats );
109142
110- ResultSummary summary = create ( statement (), connectionMock (), 42 , metadata );
143+ ResultSummary summary = extractSummary ( statement (), connectionMock (), 42 , metadata );
111144
112145 assertEquals ( 42 , summary .counters ().nodesCreated () );
113146 assertEquals ( 4242 , summary .counters ().nodesDeleted () );
@@ -125,7 +158,7 @@ public void shouldBuildResultSummaryWithCounters()
125158 @ Test
126159 public void shouldBuildResultSummaryWithoutCounters ()
127160 {
128- ResultSummary summary = create ( statement (), connectionMock (), 42 , emptyMap () );
161+ ResultSummary summary = extractSummary ( statement (), connectionMock (), 42 , emptyMap () );
129162 assertEquals ( EMPTY_STATS , summary .counters () );
130163 }
131164
@@ -146,7 +179,7 @@ public void shouldBuildResultSummaryWithPlan()
146179 ) );
147180 Map <String ,Value > metadata = singletonMap ( "plan" , plan );
148181
149- ResultSummary summary = create ( statement (), connectionMock (), 42 , metadata );
182+ ResultSummary summary = extractSummary ( statement (), connectionMock (), 42 , metadata );
150183
151184 assertTrue ( summary .hasPlan () );
152185 assertEquals ( "Projection" , summary .plan ().operatorType () );
@@ -166,7 +199,7 @@ public void shouldBuildResultSummaryWithPlan()
166199 @ Test
167200 public void shouldBuildResultSummaryWithoutPlan ()
168201 {
169- ResultSummary summary = create ( statement (), connectionMock (), 42 , emptyMap () );
202+ ResultSummary summary = extractSummary ( statement (), connectionMock (), 42 , emptyMap () );
170203 assertFalse ( summary .hasPlan () );
171204 assertNull ( summary .plan () );
172205 }
@@ -192,7 +225,7 @@ public void shouldBuildResultSummaryWithProfiledPlan()
192225 ) );
193226 Map <String ,Value > metadata = singletonMap ( "profile" , profile );
194227
195- ResultSummary summary = create ( statement (), connectionMock (), 42 , metadata );
228+ ResultSummary summary = extractSummary ( statement (), connectionMock (), 42 , metadata );
196229
197230 assertTrue ( summary .hasPlan () );
198231 assertTrue ( summary .hasProfile () );
@@ -216,7 +249,7 @@ public void shouldBuildResultSummaryWithProfiledPlan()
216249 @ Test
217250 public void shouldBuildResultSummaryWithoutProfiledPlan ()
218251 {
219- ResultSummary summary = create ( statement (), connectionMock (), 42 , emptyMap () );
252+ ResultSummary summary = extractSummary ( statement (), connectionMock (), 42 , emptyMap () );
220253 assertFalse ( summary .hasProfile () );
221254 assertNull ( summary .profile () );
222255 }
@@ -249,7 +282,7 @@ public void shouldBuildResultSummaryWithNotifications()
249282 Value notifications = value ( notification1 , notification2 );
250283 Map <String ,Value > metadata = singletonMap ( "notifications" , notifications );
251284
252- ResultSummary summary = create ( statement (), connectionMock (), 42 , metadata );
285+ ResultSummary summary = extractSummary ( statement (), connectionMock (), 42 , metadata );
253286
254287 assertEquals ( 2 , summary .notifications ().size () );
255288 Notification firstNotification = summary .notifications ().get ( 0 );
@@ -271,7 +304,7 @@ public void shouldBuildResultSummaryWithNotifications()
271304 @ Test
272305 public void shouldBuildResultSummaryWithoutNotifications ()
273306 {
274- ResultSummary summary = create ( statement (), connectionMock (), 42 , emptyMap () );
307+ ResultSummary summary = extractSummary ( statement (), connectionMock (), 42 , emptyMap () );
275308 assertEquals ( 0 , summary .notifications ().size () );
276309 }
277310
@@ -280,7 +313,7 @@ public void shouldBuildResultSummaryWithResultAvailableAfter()
280313 {
281314 int value = 42_000 ;
282315
283- ResultSummary summary = create ( statement (), connectionMock (), value , emptyMap () );
316+ ResultSummary summary = extractSummary ( statement (), connectionMock (), value , emptyMap () );
284317
285318 assertEquals ( 42 , summary .resultAvailableAfter ( TimeUnit .SECONDS ) );
286319 assertEquals ( value , summary .resultAvailableAfter ( TimeUnit .MILLISECONDS ) );
@@ -292,7 +325,7 @@ public void shouldBuildResultSummaryWithResultConsumedAfter()
292325 int value = 42_000 ;
293326 Map <String ,Value > metadata = singletonMap ( "result_consumed_after" , value ( value ) );
294327
295- ResultSummary summary = create ( statement (), connectionMock (), 42 , metadata );
328+ ResultSummary summary = extractSummary ( statement (), connectionMock (), 42 , metadata );
296329
297330 assertEquals ( 42 , summary .resultConsumedAfter ( TimeUnit .SECONDS ) );
298331 assertEquals ( value , summary .resultConsumedAfter ( TimeUnit .MILLISECONDS ) );
@@ -301,15 +334,15 @@ public void shouldBuildResultSummaryWithResultConsumedAfter()
301334 @ Test
302335 public void shouldBuildResultSummaryWithoutResultConsumedAfter ()
303336 {
304- ResultSummary summary = create ( statement (), connectionMock (), 42 , emptyMap () );
337+ ResultSummary summary = extractSummary ( statement (), connectionMock (), 42 , emptyMap () );
305338 assertEquals ( -1 , summary .resultConsumedAfter ( TimeUnit .SECONDS ) );
306339 assertEquals ( -1 , summary .resultConsumedAfter ( TimeUnit .MILLISECONDS ) );
307340 }
308341
309342 private static ResultSummary createWithStatementType ( Value typeValue )
310343 {
311344 Map <String ,Value > metadata = singletonMap ( "type" , typeValue );
312- return create ( statement (), connectionMock (), 42 , metadata );
345+ return extractSummary ( statement (), connectionMock (), 42 , metadata );
313346 }
314347
315348 private static Statement statement ()
0 commit comments