コード例 #1
0
        public async Task SubmitDraw_Succeeds_ReturnsSuccess()
        {
            // Arrange
            var serialNumber = SerialNumber.CreateNewSerialNumber(Guid.NewGuid().ToString());
            var emailStr     = $"{Guid.NewGuid().ToString()}@{Guid.NewGuid().ToString()}.com";
            var dto          = new SubmitDrawRequest
            {
                FirstName    = Guid.NewGuid().ToString(),
                LastName     = Guid.NewGuid().ToString(),
                EmailAddress = emailStr,
                SerialNumber = serialNumber.Serial,
            };

            var email = new EmailAddress(emailStr);

            serialNumberRepositoryMock.Setup(x => x.GetSerialNumber(serialNumber.Serial))
            .ReturnsAsync(() => serialNumber);

            drawSubmissionsServiceMock.Setup(x => x.Submit(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <EmailAddress>(), It.IsAny <SerialNumber>()))
            .ReturnsAsync(() => new DrawSubmission(dto.FirstName, dto.LastName, email, serialNumber));

            // Act
            var response = await sut.SubmitDraw(dto);

            // Assert
            Assert.IsInstanceOf <OkObjectResult>(response);

            var payload      = (response as OkObjectResult).Value;
            var typedPayLoad = payload as DrawSubmissionListingDto;

            Assert.That(typedPayLoad.FirstName, Is.EqualTo(dto.FirstName));
            Assert.That(typedPayLoad.LastName, Is.EqualTo(dto.LastName));
            Assert.That(typedPayLoad.SerialNumber, Is.EqualTo(dto.SerialNumber));
            Assert.That(typedPayLoad.EmailAddress, Is.EqualTo(dto.EmailAddress));
        }
コード例 #2
0
        public async Task Submit_Succeeds()
        {
            // Arrange
            var serial       = Guid.NewGuid().ToString();
            var serialNumber = SerialNumber.CreateNewSerialNumber(serial);

            var firstName    = Guid.NewGuid().ToString();
            var lastName     = Guid.NewGuid().ToString();
            var emailAddress = $"{Guid.NewGuid().ToString()}@{Guid.NewGuid().ToString()}.com";

            // Act
            await sut.Submit(firstName, lastName, new EmailAddress(emailAddress), serialNumber);

            await Context.SaveChangesAsync();


            // Assert
            var submission = await Context.DrawSubmissions
                             .Include(x => x.SerialNumber) // Loads the adjacent entity to only roundtrip the database once
                             .SingleOrDefaultAsync();

            Assert.NotNull(submission);

            Assert.That(submission.FirstName, Is.EqualTo(firstName));
            Assert.That(submission.LastName, Is.EqualTo(lastName));
            Assert.That(submission.EmailAddress.Value, Is.EqualTo(emailAddress));

            Assert.That(submission.SerialNumber.UsageCount, Is.EqualTo(1));

            eventDispathcerMock.Verify(x => x.Publish(It.IsAny <IDomainEvent>()));
        }
コード例 #3
0
        public async Task Validate_ValidSerial_ReturnsSuccess()
        {
            var serialNumber = Guid.NewGuid().ToString();

            serialNumberRepositoryMock.Setup(x => x.GetSerialNumber(serialNumber))
            .ReturnsAsync(() => SerialNumber.CreateNewSerialNumber(serialNumber));

            var response = await sut.Validate(serialNumber);

            Assert.IsInstanceOf <OkObjectResult>(response);

            var payload = UnWrapResponse(response);

            Assert.IsTrue(payload.IsValid);
        }
コード例 #4
0
        public async Task GetSubmissions_WithNumberOfItems_GetsCorrectPageNumber(int numberOfItems, int expectedPages)
        {
            var submissions = Enumerable.Range(0, numberOfItems)
                              .Select(indexer => new DrawSubmission(
                                          firstName: Guid.NewGuid().ToString(),
                                          lastName: Guid.NewGuid().ToString(),
                                          emailAddress: new EmailAddress($"{Guid.NewGuid().ToString()}@{Guid.NewGuid().ToString()}.com"),
                                          serialNumber: SerialNumber.CreateNewSerialNumber(Guid.NewGuid().ToString())));

            await Context.DrawSubmissions.AddRangeAsync(submissions);

            await Context.SaveChangesAsync();

            var result = await sut.GetSubmissions(1);

            Assert.That(result.NumberOfPages, Is.EqualTo(expectedPages));
        }
コード例 #5
0
        public async Task Validate_ExeededLimit_ReturnsFailedResult()
        {
            var serialNumber = Guid.NewGuid().ToString();

            serialNumberRepositoryMock.Setup(x => x.GetSerialNumber(serialNumber))
            .ReturnsAsync(() =>
            {
                var serial = SerialNumber.CreateNewSerialNumber(serialNumber);
                serial.Use();
                serial.Use();
                return(serial);
            });

            var response = await sut.Validate(serialNumber);

            Assert.IsInstanceOf <OkObjectResult>(response);

            var payload = UnWrapResponse(response);

            Assert.IsFalse(payload.IsValid);
        }
コード例 #6
0
 public void Setup()
 {
     sut = SerialNumber.CreateNewSerialNumber(Guid.NewGuid().ToString());
 }