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); }
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); }
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; }
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); }