Merge pull request 'Fix #2 - RequestsAhead not recalculating correctly' (#3) from requests-ahead-bug into main
Reviewed-on: https://git.hobbs.zone/henry/AccessQueueService/pulls/3
This commit is contained in:
commit
036168359b
|
@ -12,7 +12,7 @@ namespace AccessQueueService.Data
|
||||||
public int GetActiveTicketsCount(DateTime activeCutoff) => _accessTickets
|
public int GetActiveTicketsCount(DateTime activeCutoff) => _accessTickets
|
||||||
.Count(t => t.Value.ExpiresOn > DateTime.UtcNow && t.Value.LastActive >activeCutoff);
|
.Count(t => t.Value.ExpiresOn > DateTime.UtcNow && t.Value.LastActive >activeCutoff);
|
||||||
public int GetQueueCount() => _accessQueue.Count;
|
public int GetQueueCount() => _accessQueue.Count;
|
||||||
public int IndexOfTicket(Guid userId)
|
public int GetRequestsAhead(Guid userId)
|
||||||
{
|
{
|
||||||
var index = 0;
|
var index = 0;
|
||||||
foreach (var ticket in _accessQueue)
|
foreach (var ticket in _accessQueue)
|
||||||
|
|
|
@ -10,7 +10,7 @@ namespace AccessQueueService.Data
|
||||||
public int GetQueueCount();
|
public int GetQueueCount();
|
||||||
public AccessTicket? GetTicket(Guid userId);
|
public AccessTicket? GetTicket(Guid userId);
|
||||||
public void UpsertTicket(AccessTicket ticket);
|
public void UpsertTicket(AccessTicket ticket);
|
||||||
public int IndexOfTicket(Guid userId);
|
public int GetRequestsAhead(Guid userId);
|
||||||
public void Enqueue(AccessTicket ticket);
|
public void Enqueue(AccessTicket ticket);
|
||||||
public int DeleteExpiredTickets();
|
public int DeleteExpiredTickets();
|
||||||
public bool RemoveUser(Guid userId);
|
public bool RemoveUser(Guid userId);
|
||||||
|
|
|
@ -68,9 +68,8 @@ namespace AccessQueueService.Services
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var indexOfTicket = _accessQueueRepo.IndexOfTicket(userId);
|
var requestsAhead = _accessQueueRepo.GetRequestsAhead(userId);
|
||||||
var requestsAhead = _accessQueueRepo.GetQueueCount() - indexOfTicket - 1;
|
if (requestsAhead == -1)
|
||||||
if (indexOfTicket == -1)
|
|
||||||
{
|
{
|
||||||
_accessQueueRepo.Enqueue(new AccessTicket
|
_accessQueueRepo.Enqueue(new AccessTicket
|
||||||
{
|
{
|
||||||
|
@ -82,7 +81,7 @@ namespace AccessQueueService.Services
|
||||||
return new AccessResponse
|
return new AccessResponse
|
||||||
{
|
{
|
||||||
ExpiresOn = null,
|
ExpiresOn = null,
|
||||||
RequestsAhead = requestsAhead
|
RequestsAhead = _accessQueueRepo.GetQueueCount() - 1
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -245,6 +245,19 @@ namespace AccessQueueServiceTests
|
||||||
Assert.Equal(0, response.RequestsAhead);
|
Assert.Equal(0, response.RequestsAhead);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task RequestAccess_ShouldShowCorrectRequestsAhead_WhenAccessRerequested()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < CAP_LIMIT + 3; i++)
|
||||||
|
{
|
||||||
|
await _accessService.RequestAccess(Guid.NewGuid());
|
||||||
|
}
|
||||||
|
var id = Guid.NewGuid();
|
||||||
|
var response = await _accessService.RequestAccess(id);
|
||||||
|
Assert.Equal(3, response.RequestsAhead);
|
||||||
|
response = await _accessService.RequestAccess(id);
|
||||||
|
Assert.Equal(3, response?.RequestsAhead);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue