public void IndexPostAssignsImportSuccessToTrue_WhenImportSucceeds()
        {
            var importRequestViewModels = new List <ImportRequestViewModel>
            {
                new ImportRequestViewModel {
                    Id = "Id", Name = "Name", Address = "Address", City = "City", Email = "*****@*****.**", Phone = "111-111-1111", State = "State", Zip = "Zip"
                }
            };

            var iFormFile  = new Mock <IFormFile>();
            var csvFactory = new Mock <ICsvFactory>();
            var csvReader  = new Mock <ICsvReader>();
            var mediator   = new Mock <IMediator>();

            iFormFile.Setup(x => x.OpenReadStream()).Returns(new MemoryStream());
            iFormFile.Setup(x => x.Name).Returns(It.IsAny <string>());
            csvFactory.Setup(x => x.CreateReader(It.IsAny <TextReader>())).Returns(csvReader.Object);
            csvReader.Setup(x => x.Configuration).Returns(new CsvConfiguration());
            csvReader.Setup(x => x.GetRecords <ImportRequestViewModel>()).Returns(importRequestViewModels);
            mediator.Setup(x => x.Send(It.IsAny <DuplicateProviderRequestIdsQuery>())).Returns(new List <string>());

            var sut = new ImportController(mediator.Object, Mock.Of <ILogger <ImportController> >(), csvFactory.Object);

            sut.SetFakeUserName("UserName");
            var result = (IndexViewModel)((ViewResult)sut.Index(new IndexViewModel {
                EventId = 1, File = iFormFile.Object
            })).Model;

            Assert.True(result.ImportSuccess);
        }
Beispiel #2
0
        public async Task IndexPostAssignsImportSuccessToTrue_WhenImportSucceeds()
        {
            var importRequestViewModels = new List <ImportRequestViewModel>
            {
                new ImportRequestViewModel {
                    Id = "Id", Name = "Name", Address = "Address", City = "City", Email = "*****@*****.**", Phone = "111-111-1111", State = "State", PostalCode = "PostalCode"
                }
            };

            Mock <IFormFile>   iFormFile;
            Mock <ICsvFactory> csvFactory;
            Mock <ICsvReader>  csvReader;

            CreateMockAndSetupIFormFileCsvFactoryAndCsvReader(out iFormFile, out csvFactory, out csvReader);
            iFormFile.Setup(x => x.Name).Returns(It.IsAny <string>());
            csvReader.Setup(x => x.GetRecords <ImportRequestViewModel>()).Returns(importRequestViewModels);

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <DuplicateProviderRequestIdsQuery>())).Returns(new List <string>());
            mediator.Setup(x => x.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = true, PhoneNumberE164 = importRequestViewModels[0].Phone
            });

            var sut = new ImportController(mediator.Object, Mock.Of <ILogger <ImportController> >(), csvFactory.Object);

            sut.SetFakeUserName("UserName");
            var result = (IndexViewModel)((ViewResult)await sut.Index(new IndexViewModel {
                EventId = 1, File = iFormFile.Object
            })).Model;

            Assert.True(result.ImportSuccess);
        }
        public async Task IndexPostLogsCorrectMessage_WhenImportSucceeds()
        {
            const string userName = "******";
            const string fileName = "FileName";

            var importRequestViewModels = new List <ImportRequestViewModel>
            {
                new ImportRequestViewModel {
                    Id = "Id", Name = "Name", Address = "Address", City = "City", Email = "*****@*****.**", Phone = "111-111-1111", State = "State", Zip = "Zip"
                }
            };

            var iFormFile  = new Mock <IFormFile>();
            var csvFactory = new Mock <ICsvFactory>();
            var csvReader  = new Mock <ICsvReader>();
            var mediator   = new Mock <IMediator>();
            var logger     = new Mock <ILogger <ImportController> >();

            iFormFile.Setup(x => x.OpenReadStream()).Returns(new MemoryStream());
            iFormFile.Setup(x => x.Name).Returns(fileName);
            csvFactory.Setup(x => x.CreateReader(It.IsAny <TextReader>())).Returns(csvReader.Object);
            csvReader.Setup(x => x.Configuration).Returns(new CsvConfiguration());
            csvReader.Setup(x => x.GetRecords <ImportRequestViewModel>()).Returns(importRequestViewModels);
            mediator.Setup(x => x.Send(It.IsAny <DuplicateProviderRequestIdsQuery>())).Returns(new List <string>());

            var sut = new ImportController(mediator.Object, logger.Object, csvFactory.Object);

            sut.SetFakeUserName(userName);
            await sut.Index(new IndexViewModel { EventId = 1, File = iFormFile.Object });

            logger.Verify(m => m.Log(LogLevel.Information, It.IsAny <EventId>(),
                                     It.Is <FormattedLogValues>(v => v.ToString() == $"{userName} imported file {fileName}"),
                                     null, It.IsAny <Func <object, Exception, string> >()), Times.Once);
        }
Beispiel #4
0
        public async Task IndexPostSendsImportRequestsCommandWithTheCorrectViewModel()
        {
            var importRequestViewModels = new List <ImportRequestViewModel>
            {
                new ImportRequestViewModel {
                    Id = "Id", Name = "Name", Address = "Address", City = "City", Email = "*****@*****.**", Phone = "111-111-1111", State = "State", PostalCode = "PostalCode"
                }
            };

            Mock <IFormFile>   iFormFile;
            Mock <ICsvFactory> csvFactory;
            Mock <ICsvReader>  csvReader;

            CreateMockAndSetupIFormFileCsvFactoryAndCsvReader(out iFormFile, out csvFactory, out csvReader);
            iFormFile.Setup(x => x.Name).Returns(It.IsAny <string>());
            csvReader.Setup(x => x.GetRecords <ImportRequestViewModel>()).Returns(importRequestViewModels);

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <DuplicateProviderRequestIdsQuery>())).Returns(new List <string>());
            mediator.Setup(x => x.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = true, PhoneNumberE164 = importRequestViewModels[0].Phone
            });

            var sut = new ImportController(mediator.Object, Mock.Of <ILogger <ImportController> >(), csvFactory.Object);

            sut.SetFakeUserName("UserName");
            await sut.Index(new IndexViewModel { EventId = 1, File = iFormFile.Object });

            mediator.Verify(x => x.SendAsync(It.Is <ImportRequestsCommand>(y =>
                                                                           y.ImportRequestViewModels[0].Id == importRequestViewModels[0].Id &&
                                                                           y.ImportRequestViewModels[0].Name == importRequestViewModels[0].Name &&
                                                                           y.ImportRequestViewModels[0].Address == importRequestViewModels[0].Address &&
                                                                           y.ImportRequestViewModels[0].City == importRequestViewModels[0].City &&
                                                                           y.ImportRequestViewModels[0].Email == importRequestViewModels[0].Email &&
                                                                           y.ImportRequestViewModels[0].Phone == importRequestViewModels[0].Phone &&
                                                                           y.ImportRequestViewModels[0].State == importRequestViewModels[0].State &&
                                                                           y.ImportRequestViewModels[0].PostalCode == importRequestViewModels[0].PostalCode &&
                                                                           y.ImportRequestViewModels[0].Longitude == 0 &&
                                                                           y.ImportRequestViewModels[0].Latitude == 0 &&
                                                                           y.ImportRequestViewModels[0].ProviderData == null)), Times.Once);
        }
        public void IndexPostInvokesLogInformation_WhenFileIsNull()
        {
            const string userName = "******";

            var logger = new Mock <ILogger <ImportController> >();

            var sut = new ImportController(null, logger.Object);

            sut.SetFakeUserName(userName);
            sut.Index(null);

            var message = $"User {userName} attempted a file upload without specifying a file.";

            logger.Verify(
                x =>
                x.Log(LogLevel.Information, It.IsAny <EventId>(),
                      It.Is <Microsoft.Extensions.Logging.Internal.FormattedLogValues>(
                          y => (string)y[0].Value == message),
                      It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()), Times.Once);
        }
        public void IndexPostSendsImportRequestsCommandWithTheCorrectViewModel()
        {
            var importRequestViewModels = new List <ImportRequestViewModel>
            {
                new ImportRequestViewModel {
                    Id = "Id", Name = "Name", Address = "Address", City = "City", Email = "*****@*****.**", Phone = "111-111-1111", State = "State", Zip = "Zip"
                }
            };

            var iFormFile  = new Mock <IFormFile>();
            var csvFactory = new Mock <ICsvFactory>();
            var csvReader  = new Mock <ICsvReader>();
            var mediator   = new Mock <IMediator>();

            iFormFile.Setup(x => x.OpenReadStream()).Returns(new MemoryStream());
            iFormFile.Setup(x => x.Name).Returns(It.IsAny <string>());
            csvFactory.Setup(x => x.CreateReader(It.IsAny <TextReader>())).Returns(csvReader.Object);
            csvReader.Setup(x => x.Configuration).Returns(new CsvConfiguration());
            csvReader.Setup(x => x.GetRecords <ImportRequestViewModel>()).Returns(importRequestViewModels);
            mediator.Setup(x => x.Send(It.IsAny <DuplicateProviderRequestIdsQuery>())).Returns(new List <string>());

            var sut = new ImportController(mediator.Object, Mock.Of <ILogger <ImportController> >(), csvFactory.Object);

            sut.SetFakeUserName("UserName");
            sut.Index(new IndexViewModel {
                EventId = 1, File = iFormFile.Object
            });

            mediator.Verify(x => x.Send(It.Is <ImportRequestsCommand>(y =>
                                                                      y.ImportRequestViewModels[0].Id == importRequestViewModels[0].Id &&
                                                                      y.ImportRequestViewModels[0].Name == importRequestViewModels[0].Name &&
                                                                      y.ImportRequestViewModels[0].Address == importRequestViewModels[0].Address &&
                                                                      y.ImportRequestViewModels[0].City == importRequestViewModels[0].City &&
                                                                      y.ImportRequestViewModels[0].Email == importRequestViewModels[0].Email &&
                                                                      y.ImportRequestViewModels[0].Phone == importRequestViewModels[0].Phone &&
                                                                      y.ImportRequestViewModels[0].State == importRequestViewModels[0].State &&
                                                                      y.ImportRequestViewModels[0].Zip == importRequestViewModels[0].Zip &&
                                                                      y.ImportRequestViewModels[0].Longitude == 0 &&
                                                                      y.ImportRequestViewModels[0].Latitude == 0 &&
                                                                      y.ImportRequestViewModels[0].ProviderData == null)), Times.Once);
        }
Beispiel #7
0
        public async Task IndexPostLogsCorrectMessage_WhenImportSucceeds()
        {
            const string userName = "******";
            const string fileName = "FileName";

            var importRequestViewModels = new List <ImportRequestViewModel>
            {
                new ImportRequestViewModel {
                    Id = "Id", Name = "Name", Address = "Address", City = "City", Email = "*****@*****.**", Phone = "111-111-1111", State = "State", PostalCode = "PostalCode"
                }
            };

            Mock <IFormFile>   iFormFile;
            Mock <ICsvFactory> csvFactory;
            Mock <ICsvReader>  csvReader;

            CreateMockAndSetupIFormFileCsvFactoryAndCsvReader(out iFormFile, out csvFactory, out csvReader);
            iFormFile.Setup(x => x.Name).Returns(fileName);
            csvReader.Setup(x => x.GetRecords <ImportRequestViewModel>()).Returns(importRequestViewModels);

            var mediator = new Mock <IMediator>();
            var logger   = new Mock <ILogger <ImportController> >();

            mediator.Setup(x => x.Send(It.IsAny <DuplicateProviderRequestIdsQuery>())).Returns(new List <string>());
            mediator.Setup(x => x.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = true, PhoneNumberE164 = importRequestViewModels[0].Phone
            });

            var sut = new ImportController(mediator.Object, logger.Object, csvFactory.Object);

            sut.SetFakeUserName(userName);
            await sut.Index(new IndexViewModel { EventId = 1, File = iFormFile.Object });

            logger.Verify(m => m.Log(LogLevel.Information, It.IsAny <EventId>(),
                                     It.Is <FormattedLogValues>(v => v.ToString() == $"{userName} imported file {fileName}"),
                                     null, It.IsAny <Func <object, Exception, string> >()), Times.Once);
        }