Пример #1
0
        public async Task TestGetByNumberInputMatches()
        {
            // Arrange
            var phoneNumbers = GeneratePhoneNumberEntityList();

            var mockDbSet = phoneNumbers.AsQueryable().BuildMockDbSet();

            var mockContext = new Mock <DemographicsDbContext>();

            mockContext
            .Setup(x => x.Set <PhoneNumber>())
            .Returns(mockDbSet.Object)
            .Verifiable();

            var testModel = new PhoneNumberInputModel
            {
                Number = "1234567890"
            };

            var repository = new PhoneNumberRepository(mockContext.Object);

            // Act
            var result = await repository.GetByNumber(testModel);

            // Assert
            Assert.NotNull(result);
            Assert.Equal("1234567890", result.Number);
        }
Пример #2
0
        /// <summary>
        /// Handle an incoming <see cref="PhoneNumberInputModel"/> DTO.
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        private async Task HandleIncomingPhoneNumber(Patient entity, PhoneNumberInputModel model)
        {
            if (entity == null || model == null || string.IsNullOrEmpty(model.Number))
            {
                throw new ArgumentNullException();
            }

            // Does a functionally identical entity already exist?
            var result = await _unitOfWork.PhoneNumberRepository.GetByNumber(model);

            if (result == null) // No--create a new entity and link it up
            {
                var phoneNumber = _mapper.Map <PhoneNumber>(model);

                // Get rid of symbols
                // phoneNumber.Number = Regex.Replace(phoneNumber.Number, @"[- ().]", "");

                _unitOfWork.PhoneNumberRepository.Create(phoneNumber);

                entity.PatientPhoneNumbers.Add(new PatientPhoneNumber
                {
                    Patient     = entity,
                    PhoneNumber = phoneNumber
                });
            }
            // Yes--link it up if it isn't already linked (if it is already linked, no need to do anything)
            else if (!entity.PatientPhoneNumbers.Any(pa => pa.PatientId == entity.Id && pa.PhoneNumberId == result.Id))
            {
                entity.PatientPhoneNumbers.Add(new PatientPhoneNumber
                {
                    Patient     = entity,
                    PhoneNumber = result
                });
            }
        }
Пример #3
0
        /// <summary>
        /// Gets a <see cref="PhoneNumber"/> entity by its <seealso cref="PhoneNumber.Number"/> property.
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public async Task <PhoneNumber> GetByNumber(PhoneNumberInputModel model)
        {
            if (model == null || string.IsNullOrWhiteSpace(model.Number))
            {
                throw new ArgumentNullException();
            }

            var numberToCompare = Regex.Replace(model.Number, @"[- ().]", "");

            var result =
                await base.GetByCondition(pn =>
                                          pn.Number.Contains(numberToCompare))
                .FirstOrDefaultAsync();

            return(result);
        }
Пример #4
0
        public void TestGetNumberModelNumberEmpty()
        {
            // Arrange
            var repository = new PhoneNumberRepository(null);

            var testObject = new PhoneNumberInputModel
            {
                Number = ""
            };

            // Act
            async Task <PhoneNumber> TestAction() => await repository.GetByNumber(testObject);

            // Assert
            Assert.ThrowsAsync <ArgumentNullException>(TestAction);
        }