Skip to content

Commit 5d44375

Browse files
QueryOffset and QuerySequence (#99)
Change in QueryOffset and QuerySequence: on reference null or empty throws QueryException message
1 parent e5cae97 commit 5d44375

File tree

2 files changed

+51
-25
lines changed

2 files changed

+51
-25
lines changed

RabbitMQ.Stream.Client/StreamSystem.cs

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,13 @@ public async Task<bool> StreamExists(string stream)
111111
return response.StreamInfos is { Count: >= 1 } &&
112112
response.StreamInfos[stream].ResponseCode == ResponseCode.Ok;
113113
}
114+
private static void MaybeThrowQueryException(string reference, string stream)
115+
{
116+
if (string.IsNullOrEmpty(reference) || string.IsNullOrEmpty(stream))
117+
{
118+
throw new QueryException("Stream name and reference can't be empty or null");
119+
}
120+
}
114121

115122
/// <summary>
116123
/// QueryOffset retrieves the last consumer offset stored
@@ -121,15 +128,7 @@ public async Task<bool> StreamExists(string stream)
121128
/// <returns></returns>
122129
public async Task<ulong> QueryOffset(string reference, string stream)
123130
{
124-
if (string.IsNullOrEmpty(reference))
125-
{
126-
return 0;
127-
}
128-
129-
if (string.IsNullOrEmpty(stream))
130-
{
131-
throw new QueryException("Stream name can't be empty");
132-
}
131+
MaybeThrowQueryException(reference, stream);
133132

134133
var response = await client.QueryOffset(reference, stream);
135134
ClientExceptions.MaybeThrowException(response.ResponseCode,
@@ -146,15 +145,7 @@ public async Task<ulong> QueryOffset(string reference, string stream)
146145
/// <returns></returns>
147146
public async Task<ulong> QuerySequence(string reference, string stream)
148147
{
149-
if (string.IsNullOrEmpty(reference))
150-
{
151-
return 0;
152-
}
153-
154-
if (string.IsNullOrEmpty(stream))
155-
{
156-
throw new QueryException("Stream name can't be empty");
157-
}
148+
MaybeThrowQueryException(reference, stream);
158149

159150
var response = await client.QueryPublisherSequence(reference, stream);
160151
ClientExceptions.MaybeThrowException(response.ResponseCode,

Tests/SystemTests.cs

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,30 +155,65 @@ await Assert.ThrowsAsync<CreateStreamException>(
155155

156156
[Fact]
157157
[WaitTestBeforeAfter]
158-
public async void ValidateQuery()
158+
public async void ValidateQueryOffset()
159159
{
160160
// here we just validate the Query for Offset and Sequence
161161
// if the reference is == "" return must be 0
162162
// stream name is mandatory
163163
var config = new StreamSystemConfig();
164164
var system = await StreamSystem.Create(config);
165-
var res = await system.QueryOffset("", "stream_we_don_t_care");
166-
Assert.True(res == 0);
167165

168-
res = await system.QuerySequence("", "stream_we_don_t_care");
169-
Assert.True(res == 0);
166+
await Assert.ThrowsAsync<QueryException>(
167+
async () =>
168+
{
169+
await system.QueryOffset(string.Empty, "stream_we_don_t_care");
170+
}
171+
);
172+
173+
await Assert.ThrowsAsync<QueryException>(
174+
async () =>
175+
{
176+
await system.QueryOffset("reference_we_don_care", string.Empty);
177+
}
178+
);
179+
180+
await Assert.ThrowsAsync<QueryException>(
181+
async () =>
182+
{
183+
await system.QueryOffset(string.Empty, string.Empty);
184+
}
185+
);
186+
await system.Close();
187+
}
188+
189+
[Fact]
190+
[WaitTestBeforeAfter]
191+
public async void ValidateQuerySequence()
192+
{
193+
// here we just validate the Query for Offset and Sequence
194+
// if the reference is == "" return must be 0
195+
// stream name is mandatory
196+
var config = new StreamSystemConfig();
197+
var system = await StreamSystem.Create(config);
198+
199+
await Assert.ThrowsAsync<QueryException>(
200+
async () =>
201+
{
202+
await system.QuerySequence(string.Empty, "stream_we_don_t_care");
203+
}
204+
);
170205

171206
await Assert.ThrowsAsync<QueryException>(
172207
async () =>
173208
{
174-
await system.QueryOffset("reference_we_don_care", "");
209+
await system.QuerySequence("reference_we_don_care", string.Empty);
175210
}
176211
);
177212

178213
await Assert.ThrowsAsync<QueryException>(
179214
async () =>
180215
{
181-
await system.QuerySequence("reference_we_don_care", "");
216+
await system.QuerySequence(string.Empty, string.Empty);
182217
}
183218
);
184219
await system.Close();

0 commit comments

Comments
 (0)