Skip to content

Commit a44d808

Browse files
author
Zhen Li
committed
Updated Result to ues native enumerator API
1 parent 2cd9ba7 commit a44d808

21 files changed

+517
-613
lines changed

Neo4j.Driver/Neo4j.Driver.IntegrationTests/ConnectionIT.cs

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ public void ShouldDoHandShake()
5454
{
5555
using (var session = driver.Session())
5656
{
57-
var resultCursor = session.Run("RETURN 2 as Number" );
58-
resultCursor.Keys.Should().Contain("Number");
59-
resultCursor.Keys.Count.Should().Be(1);
57+
var result = session.Run("RETURN 2 as Number" );
58+
result.Keys.Should().Contain("Number");
59+
result.Keys.Count.Should().Be(1);
6060
}
6161
}
6262
}
@@ -75,13 +75,14 @@ public void ShouldEstablishConnectionWhenAuthEnabled()
7575
});
7676
try
7777
{
78-
using (var driver = GraphDatabase.Driver(ServerEndPoint, AuthTokens.Basic("neo4j", "neo4j")))
78+
using (var driver = GraphDatabase.Driver(ServerEndPoint, AuthTokens.Basic("neo4j", "neo4j"),
79+
Config.Builder.WithLogger(new DebugLogger { Level = LogLevel.Trace }).ToConfig()))
7980
{
8081
using (var session = driver.Session())
8182
{
82-
var exception = Record.Exception(() => session.Run("RETURN 2 as Number"));
83+
var exception = Record.Exception(() => session.Run("CREATE () RETURN 2 as Number").ToList());
8384
exception.Should().BeOfType<ClientException>();
84-
exception.Message.Should().StartWith("The credentials have expired and need to be updated.");
85+
exception.Message.Should().StartWith("The credentials you provided were valid");
8586
}
8687
}
8788
// update auth and run something
@@ -93,7 +94,8 @@ public void ShouldEstablishConnectionWhenAuthEnabled()
9394
{"principal", "neo4j"},
9495
{"credentials", "neo4j"},
9596
{"new_credentials", "lala"}
96-
})))
97+
}),
98+
Config.Builder.WithLogger(new DebugLogger { Level = LogLevel.Trace }).ToConfig()))
9799
using (var session = driver.Session())
98100
{
99101
var resultCursor = session.Run("RETURN 2 as Number");
@@ -117,8 +119,8 @@ public void GetsSummary()
117119
using (var driver = GraphDatabase.Driver(ServerEndPoint, Config.Builder.WithLogger(new DebugLogger { Level = LogLevel.Trace }).ToConfig()))
118120
using (var session = driver.Session())
119121
{
120-
var cursor = session.Run("PROFILE CREATE (p:Person { Name: 'Test'})");
121-
var stats = cursor.Summary.Counters;
122+
var result = session.Run("PROFILE CREATE (p:Person { Name: 'Test'})");
123+
var stats = result.Summary.Counters;
122124
output.WriteLine(stats.ToString());
123125
}
124126
}
@@ -134,9 +136,9 @@ public void ShouldBeAbleToRunMultiStatementsInOneTransaction()
134136
tx.Run("MATCH (n) DETACH DELETE n RETURN count(*)");
135137
var result = tx.Run("CREATE (n {name:'Steve Brook'}) RETURN n.name");
136138

137-
while (result.Next())
139+
foreach (var record in result)
138140
{
139-
foreach (var keyValuePair in result.Values())
141+
foreach (var keyValuePair in record.Values)
140142
{
141143
output.WriteLine($"{keyValuePair.Key} = {keyValuePair.Value}");
142144
}
@@ -150,11 +152,11 @@ public void BuffersResultsOfOneQuerySoTheyCanBeReadAfterAnotherSubsequentQueryHa
150152
using (var driver = GraphDatabase.Driver("bolt://localhost"))
151153
using (var session = driver.Session())
152154
{
153-
var cursor1 = session.Run("unwind range(1,3) as n RETURN n");
154-
var cursor2 = session.Run("unwind range(4,6) as n RETURN n");
155-
156-
var result2All = cursor2.Stream().ToList();
157-
var result1All = cursor1.Stream().ToList();
155+
var result1 = session.Run("unwind range(1,3) as n RETURN n");
156+
var result2 = session.Run("unwind range(4,6) as n RETURN n");
157+
158+
var result2All = result2.ToList();
159+
var result1All = result1.ToList();
158160

159161
result2All.Select(r => r.Values["n"].As<int>()).Should().ContainInOrder(4, 5, 6);
160162
result1All.Select(r => r.Values["n"].As<int>()).Should().ContainInOrder(1, 2, 3);

Neo4j.Driver/Neo4j.Driver.IntegrationTests/Examples.cs

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ public void MinimalExample()
4747
using (var session = driver.Session())
4848
{
4949
session.Run("CREATE (neo:Person {name:'Neo', age:23})");
50-
var cursor = session.Run("MATCH (p:Person) WHERE p.name = 'Neo' RETURN p.age");
50+
var result = session.Run("MATCH (p:Person) WHERE p.name = 'Neo' RETURN p.age");
5151

52-
foreach (var record in cursor.Stream())
52+
foreach (var record in result)
5353
{
5454
output.WriteLine($"Neo is {record["p.age"]} years old.");
5555
}
@@ -82,8 +82,8 @@ public void Statement()
8282
var session = driver.Session();
8383

8484
//tag::statement[]
85-
var cursor = session.Run("CREATE (p:Person { name: {name} })", new Dictionary<string, object> {{"name", "The One"}});
86-
var theOnesCreated = cursor.Summary.Counters.NodesCreated;
85+
var result = session.Run("CREATE (p:Person { name: {name} })", new Dictionary<string, object> {{"name", "The One"}});
86+
var theOnesCreated = result.Summary.Counters.NodesCreated;
8787
output.WriteLine($"There were {theOnesCreated} the ones created.");
8888
//end::statement[]
8989
driver.Dispose();
@@ -96,8 +96,8 @@ public void StatementWithoutParams()
9696
var session = driver.Session();
9797

9898
//tag::statement-without-parameters[]
99-
var cursor = session.Run("CREATE (p:Person { name: 'The One' })");
100-
var theOnesCreated = cursor.Summary.Counters.NodesCreated;
99+
var result = session.Run("CREATE (p:Person { name: 'The One' })");
100+
var theOnesCreated = result.Summary.Counters.NodesCreated;
101101
output.WriteLine($"There were {theOnesCreated} the ones created.");
102102
//end::statement-without-parameters[]
103103
driver.Dispose();
@@ -111,13 +111,12 @@ public void ResultCursor()
111111
session.Run("CREATE (p:Person { name: 'The One', age: 44 })");
112112

113113
//tag::result-cursor[]
114-
var cursor = session.Run("MATCH (p:Person { name: {name} }) RETURN p.age",
114+
var result = session.Run("MATCH (p:Person { name: {name} }) RETURN p.age",
115115
new Dictionary<string, object> { { "name", "The One" } });
116116

117-
while (cursor.Next())
117+
foreach (var record in result)
118118
{
119-
output.WriteLine($"Record: {cursor.Position}");
120-
foreach (var keyValuePair in cursor.Values())
119+
foreach (var keyValuePair in record.Values)
121120
{
122121
output.WriteLine($"{keyValuePair.Key} = {keyValuePair.Value}");
123122
}
@@ -135,10 +134,10 @@ public void RetainResultQuery()
135134
session.Run("CREATE (p:Person { name: 'The One', age: 44 })");
136135

137136
//tag::retain-result-query[]
138-
var cursor = session.Run("MATCH (p:Person { name: {name} }) RETURN p.age",
137+
var result = session.Run("MATCH (p:Person { name: {name} }) RETURN p.age",
139138
new Dictionary<string, object> { { "name", "The One" } });
140139

141-
var records = cursor.Stream().ToList();
140+
var records = result.ToList();
142141

143142
session.Dispose();
144143

@@ -162,10 +161,10 @@ public void RetainResultProcess()
162161
session.Run("CREATE (p:Person { name: 'The One', age: 44 })");
163162

164163
//tag::retain-result-process[]
165-
var cursor = session.Run("MATCH (p:Person { name: {name} }) RETURN p.age",
164+
var result = session.Run("MATCH (p:Person { name: {name} }) RETURN p.age",
166165
new Dictionary<string, object> { { "name", "The One" } });
167166

168-
var records = cursor.Stream().ToList();
167+
var records = result.ToList();
169168

170169
session.Dispose();
171170

@@ -242,10 +241,10 @@ public void ResultSummaryQueryProfile()
242241
var session = driver.Session();
243242

244243
//tag::result-summary-query-profile[]
245-
var cursor = session.Run("PROFILE MATCH (p:Person { name: {name} }) RETURN id(p)",
244+
var result = session.Run("PROFILE MATCH (p:Person { name: {name} }) RETURN id(p)",
246245
new Dictionary<string, object> { { "name", "The One" } });
247246

248-
IResultSummary summary = cursor.Summary;
247+
IResultSummary summary = result.Summary;
249248

250249
output.WriteLine(summary.StatementType.ToString());
251250
output.WriteLine(summary.Profile.ToString());
@@ -294,11 +293,8 @@ private void ClearDatabase()
294293
{
295294
Driver driver = GraphDatabase.Driver("bolt://localhost:7687");
296295
var session = driver.Session();
297-
var cursor = session.Run("MATCH (n) DETACH DELETE n RETURN count(*)");
298-
while (cursor.Next())
299-
{
300-
// consume
301-
}
296+
var result = session.Run("MATCH (n) DETACH DELETE n RETURN count(*)");
297+
result.ToList();
302298
driver.Dispose();
303299
}
304300

Neo4j.Driver/Neo4j.Driver.Tck.Tests/TCK/MatchAcceptanceTestSteps.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,16 @@ public void ResetDatabase()
6262
[Then(@"result:")]
6363
public void ThenResult(Table table)
6464
{
65-
var records = new List<Record>();
65+
var records = new List<IRecord>();
6666
foreach (var row in table.Rows)
6767
{
6868
records.Add( new Record(row.Keys.ToArray(), row.Values.Select(value => Parser.Parse(value)).ToArray()));
6969
}
70-
var resultCursor = ScenarioContext.Current.Get<IResultCursor>();
71-
AssertRecordsAreTheSame(resultCursor.Stream().ToList(), records);
70+
var resultCursor = ScenarioContext.Current.Get<IStatementResult>();
71+
AssertRecordsAreTheSame(resultCursor.ToList(), records);
7272
}
7373

74-
private void AssertRecordsAreTheSame(List<Record> actual, List<Record> expected)
74+
private void AssertRecordsAreTheSame(List<IRecord> actual, List<IRecord> expected)
7575
{
7676
actual.Should().HaveSameCount(expected);
7777
foreach (var aRecord in actual)
@@ -80,7 +80,7 @@ private void AssertRecordsAreTheSame(List<Record> actual, List<Record> expected)
8080
}
8181
}
8282

83-
private bool AssertContains(List<Record> records, Record aRecord)
83+
private bool AssertContains(List<IRecord> records, IRecord aRecord)
8484
{
8585
// ReSharper disable once LoopCanBeConvertedToQuery
8686
foreach (var record in records)

Neo4j.Driver/Neo4j.Driver.Tck.Tests/TCK/TypeSystem.feature.steps.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ protected static void AssertEqual(dynamic value, dynamic other)
8585
[Binding]
8686
public class DriverTypesTestEchoingSingleParameterSteps : TckStepsBase
8787
{
88-
private IResultCursor _result;
88+
private IStatementResult _statementResult;
8989

9090
[BeforeTestRun]
9191
public static void GlobalBeforeScenario()
@@ -206,30 +206,30 @@ public void GivenAddingMapMToListL()
206206
[When(@"the driver asks the server to echo this value back")]
207207
public void WhenTheDriverAsksTheServerToEchoThisValueBack()
208208
{
209-
_result = Driver.Session().Run("Return {input}", new Dictionary<string, object> {{"input", _expected}});
209+
_statementResult = Driver.Session().Run("Return {input}", new Dictionary<string, object> {{"input", _expected}});
210210
}
211211

212212
[When(@"the driver asks the server to echo this list back")]
213213
public void WhenTheDriverAsksTheServerToEchoThisListBack()
214214
{
215215
_expected = _list;
216-
_result = Driver.Session().Run("Return {input}", new Dictionary<string, object> {{"input", _expected}});
216+
_statementResult = Driver.Session().Run("Return {input}", new Dictionary<string, object> {{"input", _expected}});
217217
}
218218

219219
[When(@"the driver asks the server to echo this map back")]
220220
public void WhenTheDriverAsksTheServerToEchoThisMapBack()
221221
{
222222
_expected = _map;
223-
_result = Driver.Session().Run("Return {input}", new Dictionary<string, object> {{"input", _expected}});
223+
_statementResult = Driver.Session().Run("Return {input}", new Dictionary<string, object> {{"input", _expected}});
224224
}
225225

226226
[When(@"the value given in the result should be the same as what was sent")]
227227
public void WhenTheValueGivenInTheResultShouldBeTheSameAsWhatWasSent()
228228
{
229229
// param : input
230-
_result.Next().Should().BeTrue();
231-
_result.AtEnd.Should().BeTrue();
232-
var actual = _result.Get(0);
230+
var record = _statementResult.Single(); // TODO check no exception throw
231+
record.Should().NotBeNull();
232+
var actual = record[0];
233233
AssertEqual(_expected, actual);
234234
}
235235

Neo4j.Driver/Neo4j.Driver.Tests/Neo4j.Driver.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898
<Compile Include="PackStream\UnpackerTests.cs" />
9999
<Compile Include="PackStream\PackerTests.cs" />
100100
<Compile Include="Result\PeekingEnumeratorTests.cs" />
101-
<Compile Include="Result\ResultCursorTests.cs" />
101+
<Compile Include="Result\StatementResultTests.cs" />
102102
<Compile Include="Connector\ChunkedInputTests.cs" />
103103
<Compile Include="PackStream\PackStreamMessageFormatV1Tests.cs" />
104104
<Compile Include="Properties\AssemblyInfo.cs" />

0 commit comments

Comments
 (0)