Example #1
0
        public void AddCart_RetrieveUserBasedOnIdentity()
        {
            var email = "*****@*****.**";
            var user = TestModelFactory.CreateUser(emailAddress: email);
            var users = new List<UserModel>();
            users.Add(user);

            var mockedUserRepository = new Mock<IUserRepository>();
            mockedUserRepository.Setup(m => m.FindByEmailAddress(email)).Returns(user);

            var deal = TestModelFactory.CreateCompleteDeal();
            var dealOption = deal.Options.First();
            var dealAttributes = dealOption.Attributes.Select(a => a.Key.ToString()).ToList();
            var dealRepository = new FakeDealRepository(new List<DealModel>() { deal });

            var repositoryFactory = new FakeUnitOfWorkFactory(userRepository: mockedUserRepository.Object, dealRepository: dealRepository);
            var cartService = new CartService(repositoryFactory);
            var controller = new CartController(cartService);
            controller.User = new GenericPrincipal(new GenericIdentity(email), new string[] { });

            var newCartItem = CreateNewCartItem(deal.Key.ToString(), dealOption.Key.ToString(), dealAttributes);
            controller.Post(newCartItem);

            mockedUserRepository.Verify(m => m.FindByEmailAddress(email), Times.Once);
        }
Example #2
0
        public void AddCart_UserCartAdded()
        {
            var email = "*****@*****.**";
            var user = TestModelFactory.CreateUser(emailAddress: email);
            var users = new List<UserModel>();
            users.Add(user);

            var mockedUserRepository = new Mock<IUserRepository>();
            mockedUserRepository.Setup(m => m.FindByEmailAddress(email)).Returns(user);

            var deal = TestModelFactory.CreateCompleteDeal();
            var dealOption = deal.Options.First();
            var dealAttributes = dealOption.Attributes.Select(a => a.Key.ToString()).ToList();
            var dealRepository = new FakeDealRepository(new List<DealModel>() { deal });

            var repositoryFactory = new FakeUnitOfWorkFactory(userRepository: mockedUserRepository.Object, dealRepository: dealRepository);
            var cartService = new CartService(repositoryFactory);
            var controller = new CartController(cartService);
            controller.User = new GenericPrincipal(new GenericIdentity(email), new string[] { });

            var newCartItem = CreateNewCartItem(deal.Key.ToString(), dealOption.Key.ToString(), dealAttributes);

            user.CartItems.Should().BeEmpty();
            controller.Post(newCartItem);

            user.CartItems.Count().ShouldBeEquivalentTo(1);

            var firstCartItem = user.CartItems.First();
            firstCartItem.DealOption.ShouldBeEquivalentTo(dealOption);
            firstCartItem.AttributeValues.ShouldAllBeEquivalentTo(dealOption.Attributes);
        }
Example #3
0
        private CartService CreateCartService(
            List<UserModel> users = null,
            IUserRepository userRepository = null,
            List<DealModel> deals = null,
            IRepository<DealModel> dealRepository = null)
        {
            if (userRepository == null)
            {
                userRepository = new FakeUserRepository(users ?? new List<UserModel>());
            }

            if (dealRepository == null)
            {
                dealRepository = new FakeDealRepository(deals ?? new List<DealModel>());
            }

            fixture.Register<IUserRepository>(() => userRepository);
            fixture.Register<IRepository<DealModel>>(() => dealRepository);

            var fakeRepositoryFactory = fixture.Create<FakeUnitOfWork>();
            fixture.Register<IUnitOfWork>(() => fakeRepositoryFactory);

            var cartService = fixture.Create<CartService>();

            return cartService;
        }
Example #4
0
        private static IDisposable CreateWebApiService(
           IList<DealModel> deals,
           IList<DealCategoryModel> dealCategories)
        {
            var dealRepository = new FakeDealRepository(deals);
            var dealCategoryRepository = new FakeDealCategoryRepository(dealCategories);

            var builder = new ContainerBuilder();

            builder.RegisterInstance<IUnitOfWork>(new FakeUnitOfWork(dealRepository, dealCategoryRepository));
            builder.RegisterApiControllers(typeof(FrontEndDealsController).Assembly);

            builder.RegisterType<DealService>().As<IDealService>();

            var container = builder.Build();

            var resolver = new AutofacWebApiDependencyResolver(container);
            WebApiContext.DefaultResolver = resolver;

            var baseAddress = "http://localhost:9000/";

            return WebApp.Start<Startup>(url: baseAddress);
        }