Beispiel #1
0
 private User QueryUser(int userId)
 {
     using (var context = new CrmContext(ConnectionString))
     {
         var repository = new UserRepository(context);
         return(repository.GetUserById(userId));
     }
 }
Beispiel #2
0
 private Company QueryCompany()
 {
     using (var context = new CrmContext(ConnectionString))
     {
         var repository = new CompanyRepository(context);
         return(repository.GetCompany());
     }
 }
Beispiel #3
0
 private string Execute(Func <UserController, string> func, MessageBus messageBus, IDomainLogger logger)
 {
     using (var context = new CrmContext(ConnectionString))
     {
         var controller = new UserController(context, messageBus, logger);
         return(func(controller));
     }
 }
Beispiel #4
0
 public UserController(
     CrmContext context,
     MessageBus messageBus,
     IDomainLogger domainLogger)
 {
     _context           = context;
     _userRepository    = new UserRepository(context);
     _companyRepository = new CompanyRepository(context);
     _eventDispatcher   = new EventDispatcher(
         messageBus, domainLogger);
 }
Beispiel #5
0
        private Company CreateCompany(string domainName, int numberOfEmployees)
        {
            using (var context = new CrmContext(ConnectionString))
            {
                var company    = new Company(domainName, numberOfEmployees);
                var repository = new CompanyRepository(context);
                repository.AddCompany(company);

                context.SaveChanges();

                return(company);
            }
        }
Beispiel #6
0
        private User CreateUser(
            string email          = "*****@*****.**",
            UserType type         = UserType.Employee,
            bool isEmailConfirmed = false)
        {
            using (var context = new CrmContext(ConnectionString))
            {
                var user       = new User(0, email, type, isEmailConfirmed);
                var repository = new UserRepository(context);
                repository.SaveUser(user);

                context.SaveChanges();

                return(user);
            }
        }
Beispiel #7
0
        public void Changing_email_from_corporate_to_non_corporate()
        {
            var optionsBuilder = new DbContextOptionsBuilder <CrmContext>()
                                 .UseSqlServer(ConnectionString);

            using (var context = new CrmContext(optionsBuilder.Options))
            {
                // Arrange
                var userRepository    = new UserRepository(context);
                var companyRepository = new CompanyRepository(context);
                var user = new User(0, "*****@*****.**",
                                    UserType.Employee, false);
                userRepository.SaveUser(user);
                var company = new Company("mycorp.com", 1);
                companyRepository.SaveCompany(company);
                context.SaveChanges();

                var busSpy     = new BusSpy();
                var messageBus = new MessageBus(busSpy);
                var loggerMock = new Mock <IDomainLogger>();
                var sut        = new UserController(
                    context, messageBus, loggerMock.Object);

                // Act
                string result = sut.ChangeEmail(user.UserId, "*****@*****.**");

                // Assert
                Assert.Equal("OK", result);

                User userFromDb = userRepository.GetUserById(user.UserId);
                Assert.Equal("*****@*****.**", userFromDb.Email);
                Assert.Equal(UserType.Customer, userFromDb.Type);

                Company companyFromDb = companyRepository.GetCompany();
                Assert.Equal(0, companyFromDb.NumberOfEmployees);

                busSpy.ShouldSendNumberOfMessages(1)
                .WithEmailChangedMessage(user.UserId, "*****@*****.**");
                loggerMock.Verify(
                    x => x.UserTypeHasChanged(
                        user.UserId, UserType.Employee, UserType.Customer),
                    Times.Once);
            }
        }
Beispiel #8
0
 public CompanyRepository(CrmContext context)
 {
     _context = context;
 }
Beispiel #9
0
 public UserRepository(CrmContext context)
 {
     _context = context;
 }