コード例 #1
0
        public async Task ShouldGetReferral_WhenExistingReferralCodeIsPassed()
        {
            // Arrange
            var referral = new Domain.Models.Referral
            {
                CustomerId   = Guid.NewGuid(),
                Id           = Guid.NewGuid().ToString("D"),
                ReferralCode = "123456"
            };

            var fixture = new ReferralServiceTestsFixture()
            {
                Referral  = null,
                Referrals = new List <Domain.Models.Referral>()
                {
                    referral
                }
            };

            // Act
            var result = await fixture.Service.GetReferralByReferralCodeAsync(fixture.ReferralCode);

            // Assert
            Assert.Equal(referral, result);
        }
コード例 #2
0
        public async Task ShouldGenerateReferral_WhenCollisionForReferralCodeIsDetected()
        {
            // Arrange
            var referral = new Domain.Models.Referral
            {
                CustomerId   = Guid.NewGuid(),
                Id           = Guid.NewGuid().ToString("D"),
                ReferralCode = "123456"
            };

            var fixture = new ReferralServiceTestsFixture()
            {
                Referral  = null,
                Created   = true,
                Referrals = new List <Domain.Models.Referral>()
                {
                    referral,
                    referral
                }
            };

            // Act
            var result = await fixture.Service.GetOrCreateReferralForCustomerIdAsync(fixture.CustomerId);

            // Assert
            Assert.Equal(fixture.ReferralCode, result);

            fixture.ReferralRepositoryMock.Verify(c => c.GetByReferralCodeAsync(It.IsAny <string>()), Times.Exactly(3));
            fixture.ReferralRepositoryMock.Verify(c => c.CreateIfNotExistAsync(It.IsAny <Domain.Models.Referral>()), Times.Once);
        }
コード例 #3
0
        public async Task ShouldGetReferral_WhenValidDataIsPassed()
        {
            // Arrange
            var fixture = new ReferralServiceTestsFixture();

            // Act
            var result = await fixture.Service.GetReferralByCustomerIdAsync(fixture.CustomerId);

            // Assert
            Assert.Equal(fixture.Referral, result);
        }
コード例 #4
0
        public async Task ShouldReturnExistingReferralCode_WhenCustomAlreadyHasOne()
        {
            // Arrange
            var fixture = new ReferralServiceTestsFixture();

            // Act
            var result = await fixture.Service.GetOrCreateReferralForCustomerIdAsync(fixture.CustomerId);

            // Assert
            Assert.Equal(fixture.ReferralCode, result);

            fixture.ReferralRepositoryMock.Verify(c => c.GetByReferralCodeAsync(It.IsAny <string>()), Times.Never);
            fixture.ReferralRepositoryMock.Verify(c => c.CreateIfNotExistAsync(It.IsAny <Domain.Models.Referral>()), Times.Never);
        }
コード例 #5
0
        public async Task ShouldThrowCustomerNotFound_WhenDataDoesNotExist()
        {
            // Arrange
            var fixture = new ReferralServiceTestsFixture()
            {
                Referral = null
            };

            // Act

            // Assert
            await Assert.ThrowsAsync <CustomerNotFoundException>(async() =>
            {
                await fixture.Service.GetReferralByCustomerIdAsync(fixture.CustomerId);
            });
        }
コード例 #6
0
        public async Task ShouldGenerateReferral_WhenValidDataIsPassed()
        {
            // Arrange
            var fixture = new ReferralServiceTestsFixture()
            {
                Referral = null,
                Created  = true
            };

            // Act
            var result = await fixture.Service.GetOrCreateReferralForCustomerIdAsync(fixture.CustomerId);

            // Assert
            Assert.Equal(fixture.ReferralCode, result);

            fixture.ReferralRepositoryMock.Verify(c => c.GetByReferralCodeAsync(It.IsAny <string>()), Times.Once);
            fixture.ReferralRepositoryMock.Verify(c => c.CreateIfNotExistAsync(It.IsAny <Domain.Models.Referral>()), Times.Once);
        }
コード例 #7
0
        public async Task ShouldThrowArgumentNullException_WhenNullReferralCodeIsPassed()
        {
            // Arrange
            var referral = new Domain.Models.Referral
            {
                CustomerId   = Guid.NewGuid(),
                Id           = Guid.NewGuid().ToString("D"),
                ReferralCode = "123456"
            };

            var fixture = new ReferralServiceTestsFixture();

            // Act

            // Assert
            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
            {
                await fixture.Service.GetReferralByReferralCodeAsync(null);
            });
        }
コード例 #8
0
        public async Task ShouldThrowCustomerNotFound_WhenNonExistingReferralCodeIsPassed()
        {
            // Arrange
            var referral = new Domain.Models.Referral
            {
                CustomerId   = Guid.NewGuid(),
                Id           = Guid.NewGuid().ToString("D"),
                ReferralCode = "123456"
            };

            var fixture = new ReferralServiceTestsFixture();

            // Act

            // Assert
            await Assert.ThrowsAsync <CustomerNotFoundException>(async() =>
            {
                await fixture.Service.GetReferralByReferralCodeAsync(fixture.ReferralCode);
            });
        }
コード例 #9
0
        public async Task ShouldNotCreateCustomerReferral_WhenExistentCustomerIdIsPassed()
        {
            // Arrange
            var referral = new Domain.Models.Referral
            {
                CustomerId   = Guid.NewGuid(),
                Id           = Guid.NewGuid().ToString("D"),
                ReferralCode = "123456"
            };

            var fixture = new ReferralServiceTestsFixture()
            {
                Referral = referral
            };

            // Act
            await fixture.Service.CreateReferralForCustomerIfNotExistAsync(fixture.CustomerId);

            // Assert
            fixture.ReferralRepositoryMock.Verify(c =>
                                                  c.CreateIfNotExistAsync(It.Is <Domain.Models.Referral>(
                                                                              x => x.CustomerId == fixture.CustomerId)), Times.Never);
        }