in src/Shared/Infrastructure/Infrastructure.Persistence.IntegrationTests/StatusChangeRepositoryTests.cs [59:88]
public void TestStatusChangeAccept()
{
var medicalCode = "ABC123";
var infectedStatusId = 1;
var repository = ServiceProvider.GetService<IStatusChangeRepository>();
var changeRequest = new StatusChangeRequest(infectedStatusId, new DateTime(2020, 4, 1), "Comment");
Assert.That(repository.TryCreateChangeRequest(medicalCode, changeRequest, "medicalUserToken"),
Is.True, "Creating a new code is successful");
Assert.That(repository.TryAcceptChangeRequest(medicalCode + "invalid", 24),
Is.EqualTo(AcceptChangeResponse.Error(AcceptChangeResult.MissingCode)), "Accepting with missing code fails");
Assert.That(repository.TryAcceptChangeRequest(medicalCode, 0),
Is.EqualTo(AcceptChangeResponse.Error(AcceptChangeResult.ExpiredCode)), "Accepting after expiration fails");
Assert.That(repository.TryAcceptChangeRequest(medicalCode, 24),
Is.EqualTo(AcceptChangeResponse.Success(infectedStatusId, changeRequest.StatusChangedOn)),
"Accepting with good code succeeds");
// verify that AcceptedAt is set
var statusChange = new Table<StatusChange>(CassandraSession.Session)
.FirstOrDefault(row => row.MedicalCode == medicalCode)
.Execute();
Assert.That(statusChange.AcceptedAt, Is.Not.Null);
Assert.That(
repository.TryAcceptChangeRequest(medicalCode, 24),
Is.EqualTo(AcceptChangeResponse.Error(AcceptChangeResult.ReusedCode)), "Accepting with a taken code fails");
}