Class that represents model of person.
Inheritance: IIdentifiable
        public void Should_CallSaveMethodOfRepository_WhenCallingConvertForMailWithUnknownClientAndEmployee()
        {
            //arrange
            var mailMessage = Builder<MailMessage>.CreateNew()
                .With(x => x.Sender =
                    new MailAddress("*****@*****.**", "Client 1"))
                .With(x => x.Receivers =
                    new List<MailAddress> { new MailAddress("*****@*****.**", "Employee 1") })
               .Build();

            var client = new Person
            {
                CreationDate = mailMessage.Date,
                FirstName = "Client",
                LastName = "1",
                Email = "*****@*****.**"
            };

            var employee = new Person
            {
                CreationDate = mailMessage.Date,
                FirstName = "Employee",
                LastName = "1",
                Email = "*****@*****.**"
            };

            repository.Query<Person>().Returns(new List<Person>().AsQueryable());

            //act
            mailMessagePersister.Convert(mailMessage);

            //assert
            repository.Received().Save(client);
            repository.Received().Save(employee);
        }
        public RedirectToRouteResult Edit(int id, Person employee)
        {
            if(ModelState.IsValid)
            {
                repository.Save(employee);
            }

            return RedirectToAction("Week", "Inquiries");
        }
        public ActionResult Edit(int id, Person client)
        {
            if (ModelState.IsValid)
            {
                repository.Save(client);
                return RedirectToAction("Details", new {id});
            }

            return View(client);
        }
        public ViewResult Edit(int id, Person employee)
        {
            if(ModelState.IsValid)
            {
                repository.Save(employee);
                return View("Details", employee);
            }

            return View(employee);
        }
        public void ShouldNot_ReturnNullAnd_ShouldCallMethodGetOfIRepository_WhenRequestedEditWith1Parameter()
        {
            //arrange
            var employee = new Person
            {
                Id = 3,
                Role = PersonRole.Employee
            };
            var repository = Substitute.For<IRepository>();
            repository.Get<Person>(3).Returns(employee);
            var employeeController = new EmployeesController(repository, appContext);

            //act
            var viewModel = employeeController.Edit(3).Model as Person;

            //assert
            viewModel.Should().NotBeNull();
            repository.Received().Get<Person>(3);
        }
        //TODO refactor this
        /// <summary>
        /// Renders information received from authentication service.
        /// </summary>
        public ActionResult GoogleAuth(string code, string error)
        {
            UserInfo userInfo;
            try
            {
                userInfo = googleClient.GetUserInfo(googleClient.GetAccessToken(code, error));
            }
            catch
            {
                return RedirectToAction("LogOn");
            }

            var user = repository.Query<User>(x => x.RelatedPerson, x => x.Teams)
                .SingleOrDefault(x => x.GoogleId == userInfo.Id);

            if (null == user)
            {
                user = new User
                            {
                                GoogleId = userInfo.Id,
                                RelatedPerson = repository.Query<Person>().SingleOrDefault(x => x.Email == userInfo.Email)
                            };
                if (null == user.RelatedPerson)
                {
                    var person = new Person
                                     {
                                         Email = userInfo.Email,
                                         FirstName = userInfo.FirstName,
                                         LastName = userInfo.LastName,
                                         PhotoUri = userInfo.PhotoUri,
                                         Role = PersonRole.Employee,
                                         CreationDate = DateTime.Now
                                     };
                    user.RelatedPerson = person;
                    repository.Save(person);
                }
                repository.Save(user);
            }

            appContext.User = user;

            return RedirectToRoute("Default");
        }
        public void ShouldNot_ReturnNullAnd_ShouldCallMethodGetOfIRepository_WhenRequestedEditWith1Parameter()
        {
            // arrange
            var returnedClient = new Person
            {
                Id = 3,
                Role = PersonRole.Client
            };
            var repository = Substitute.For<IRepository>();
            repository.Get<Person>(3).Returns(returnedClient);
            var clientController = new ClientsController(repository);

            // act
            var viewModel = clientController.Edit(3).Model as Person;

            // assert
            viewModel.Should().NotBeNull();
            repository.Received().Get<Person>(3);
        }
        public void ShouldNot_ReturnNullAndShouldCallMethodGetOfIRepository_WhenRequestedDetails()
        {
            // arrange
            var returnedClient = new Person
            {
                Id = 1,
                Role=PersonRole.Client
            };
            var repository = Substitute.For<IRepository>();
            repository.Get<Person>(1).Returns(returnedClient);
            repository.Query<Inquiry>().Returns(new[] {new Inquiry {Client = returnedClient}}.AsQueryable());
            var clientController = new ClientsController(repository);

            // act
            var viewModel = clientController.Details(1).Model as ClientDetailsViewModel;

            // assert
            viewModel.Should().NotBeNull();
            repository.Received().Get<Person>(1);
        }
        public void Should_CallSaveMethodOfRepositoryObjectForClientAndEmployee_WhenCallingConvertWithUnknownYetMailAddressesOfClientAndEmployee()
        {
            //arrange
            var receiver = new MailAddress("*****@*****.**", "Employee 1");
            var mailMessage = new DomainModel.Input.MailMessage
            {
                Body = "Body",
                Date = new DateTime(2012, 1, 1),
                Subject = "Subject",
                Sender = new MailAddress("*****@*****.**", "Client 1"),
                Receivers = new List<MailAddress> { receiver }
            };

            var addingClient = new Person
            {
                CreationDate = mailMessage.Date,
                FirstName = "Client",
                LastName = "1",
                Email = "*****@*****.**"
            };

            var addingEmployee = new Person
            {
                CreationDate = mailMessage.Date,
                FirstName = "Employee",
                LastName = "1",
                Email = "*****@*****.**"
            };

            //act
            var result=converter.Convert(mailMessage);

            //assert
            mock.Verify(x =>x.Save(addingClient), Times.Once());
            mock.Verify(x=>x.Save(addingEmployee), Times.Once());
        }
Beispiel #10
0
 public bool Equals(Person other)
 {
     if (ReferenceEquals(null, other)) return false;
     if (ReferenceEquals(this, other)) return true;
     return other.Id == Id && Equals(other.FirstName, FirstName) && Equals(other.LastName, LastName) && other.CreationDate.Equals(CreationDate) && Equals(other.Email, Email) && other.Role == Role;
 }
        public void Should_GoToDetailsViewAndCallSaveMethodOfIRepository_WhenRequestedEditWith2Parameters()
        {
            //arrange
            var employee = new Person
            {
                Id = 1,
                Role = PersonRole.Employee
            };
            var repository = Substitute.For<IRepository>();
            repository.Query<Person>().ReturnsForAnyArgs(new List<Person>{employee}.AsQueryable());
            var employeeController = new EmployeesController(repository, appContext);

            //act
            employeeController.Edit(1, employee);

            //act
            //viewResult.ViewName.Should().Be("Details");
            repository.Received().Save(employee);
        }
        public void Should_ReturnMailMessageWithRightData_WhenCallingConvertMethod()
        {
            //arrange
            var receiver1 = new MailAddress("*****@*****.**", "Employee Petrov");
            var receiver2 = new MailAddress("*****@*****.**", "Employee Kozlov");

            var mailMessage = new DomainModel.Input.MailMessage
            {
                Body = "This is Body",
                Date = new DateTime(2012, 1, 1),
                Subject = "This is Subject",
                Sender = new MailAddress("*****@*****.**", "Client Ivanov"),
                Receivers=new List<MailAddress> {receiver1,receiver2}
            };

            var expectedPerson = new Person
            {
                Id = 1,
                Role = (int)PersonRole.Client,
                CreationDate = new DateTime(2000, 1, 1),
                FirstName = "Client",
                LastName = "Ivanov",
                Email = "*****@*****.**",
            };

            var expectedReceiver1 = new Person
            {
                Id = 2,
                Role = (int)PersonRole.Employee,
                CreationDate = new DateTime(2000, 1, 1),
                FirstName = "Employee",
                LastName = "Petrov",
                Email = "*****@*****.**"
            };

            var expectedReceiver2 = new Person
            {
                Id = 3,
                Role = (int) PersonRole.Employee,
                CreationDate = new DateTime(2000, 1, 1),
                FirstName = "Employee",
                LastName = "Kozlov",
                Email = "*****@*****.**"
            };

            mock.Setup(it => it.Query<Person>()).Returns(new List<Person> { expectedPerson, expectedReceiver1, expectedReceiver2 }.AsQueryable());

            //act
            var result=converter.Convert(mailMessage);

            //assert
            Assert.AreEqual("This is Body", result.Body);
            Assert.AreEqual("This is Subject", result.Subject);
            Assert.AreEqual(new DateTime(2012, 1, 1), result.Date);
            Assert.AreEqual(expectedPerson, result.Sender);
            CollectionAssert.Contains(result.Receivers, expectedReceiver1);
            CollectionAssert.Contains(result.Receivers, expectedReceiver2);
            Assert.AreEqual(2,result.Receivers.Count);
        }
        /// <summary>
        /// Create new person in repository
        /// </summary>
        /// <param name="mailOfPerson">Mail address and name of person</param>
        /// <param name="dateOfIncomingMail">Date when mail is arrived</param>
        /// <returns>Person that was added to repository</returns>
        private Person AddNewPersonToRepository(MailAddress mailOfPerson, DateTime dateOfIncomingMail)
        {
            //Split name of client into first name and last name
            char[] separator = { ' ' };
            var personNameList = mailOfPerson.DisplayName.Split(separator).ToList();

            //add person to Repository
            var person = new Person
            {
                CreationDate = dateOfIncomingMail,
                Email = mailOfPerson.Address,
                FirstName = personNameList.Count >= 1 ? personNameList[0] : "",
                LastName = personNameList.Count >= 2 ? personNameList[1] : "",
                Role = PersonRole.Client
            };
            repository.Save(person);
            return person;
        }
        public void Should_SaveMailMessageToRepository_WhenEmployeeSendMessageToClientWithCarbonCopyToOurSystem()
        {
            //arrange
            aeEmailClient.GetUnreadMessages().Returns(new List<MailMessage>
                {
                    new MailMessage
                    {
                        Body = "a",
                        Date = Clock.Now,
                        Subject = "s",
                        Sender = new MailAddress("*****@*****.**","employee"),
                        Receivers = new List<MailAddress>{new MailAddress("*****@*****.**","client")},
                    }
                });
            var employee = new Person
                               {
                                   Email = "*****@*****.**",
                                   FirstName = "employee",
                                   Role = PersonRole.Employee
                               };

            repository.Query<Person>().ReturnsForAnyArgs(new List<Person>
                {
                    employee,
                    new Person
                        {
                            Email="*****@*****.**",
                            FirstName = "client",
                            Role = PersonRole.Client
                        }
                }.AsQueryable());
            repository.Query<User>().ReturnsForAnyArgs(new List<User>{new User
                                                           {
                                                               RelatedPerson = employee,
                                                               CurrentTeam = new Team()
                                                           }
                                                       }.AsQueryable());

            //act
            mailMessagePersister.ProcessMessage(aeEmailClient, EventArgs.Empty);

            //assert
            repository.Received().Save(Arg.Is<Entities.MailMessage>(x => x.Sender.Email == "*****@*****.**"
                && x.Receivers.Any(receiver => receiver.Email == "*****@*****.**")
                && x.Receivers.Count == 1));
        }
        public void Should_GoToDetailsViewAndCallSaveMethodOfIRepository_WhenRequestedEditWith2Parameters()
        {
            // arrange
            var savedClient = new Person
            {
                Id = 1,
                Role = PersonRole.Client
            };
            var repository = Substitute.For<IRepository>();
            var clientController = new ClientsController(repository);

            // act
            var viewResult = clientController.Edit(1, savedClient);

            // assert
            //viewResult.ViewName.Should().Be("Details");
            repository.Received().Save(savedClient);
        }