public void TestStatusChangeAccept()

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");
        }