public async void Recommended_NoFavorites_ReturnsMatchingModel() { Member member = new Member { UserId = new Guid("09EABF21-D5AC-4A5D-ADF8-27180E6D889B"), FavoriteTags = new List<Tag>(), FavoritePlatforms = new List<Platform>() }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); GamesController controller = new GamesController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; var result = await controller.Recommended() as RedirectToRouteResult; Assert.That(result.RouteValues["action"], Is.EqualTo("Index")); }
public void MemberDetail_UserNotFound_Throws404Exception() { var member = new Member { UserAccount = new User { UserName = "******", FirstName = "Test", LastName = "User" }, FavoriteTags = new List<Tag>(), FavoritePlatforms = new List<Platform>(), Wishlist = new List<Product>(), ReceivedFriendships = new List<Friendship>(), RequestedFriendships = new List<Friendship>(), WebOrders = new List<WebOrder>() }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); ReportsController controller = new ReportsController(dbStub.Object); Assert.That(async () => await controller.MemberDetail("NotTestUser"), Throws.InstanceOf<HttpException>().And.Matches<HttpException>(ex => ex.GetHttpCode() == 404)); }
public void SetupBase() { memberId = new Guid("59EF92BE-D71F-49ED-992D-DF15773DAF98"); memberId2 = new Guid("163EDEE7-FA6A-4220-928E-841CCC8CAAE0"); member = new Member { UserId = memberId, }; memberUser = new User { UserName = "******", FirstName = "John", LastName = "Doe", Id = memberId, PhoneNumber = "800-555-0199", Member = member }; member2 = new Member { UserId = memberId2 }; memberUser2 = new User { UserName = "******", FirstName = "member", LastName = "user2", Id = memberId2, Member = member2 }; }
public void Index_AnonymousUser_PrivateWishlist_Throws404Exception() { Member member = new Member { UserAccount = new User { UserName = "******" }, WishListVisibility = WishListVisibility.Private }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.Find(member.UserId)).Returns(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(false); WishlistController controller = new WishlistController(dbStub.Object, idGetter: null) { ControllerContext = context.Object }; Assert.That(async () => await controller.Index(member.UserAccount.UserName), Throws.InstanceOf<HttpException>().And.Matches<HttpException>(ex => ex.GetHttpCode() == 404)); }
public void Setup() { Id1 = new Guid("45B0752E-998B-466A-AAAD-3ED535BA3559"); Id2 = new Guid("59421EF4-4585-4593-BBA0-52CA80A9E774"); Id3 = new Guid("D714C3D5-E3BB-4D28-A5CD-029706773DD7"); UserId = new Guid("09EABF21-D5AC-4A5D-ADF8-27180E6D889B"); member = new Member { UserId = UserId, RequestedFriendships = new List<Friendship>(), ReceivedFriendships = new List<Friendship>(), UserAccount = new User() { UserName = "******" } }; otherMember1 = new Member() { UserId = Id1, ReceivedFriendships = new List<Friendship>(), RequestedFriendships = new List<Friendship>(), UserAccount = new User() { UserName = "******" } }; otherMember2 = new Member() { UserId = Id2, ReceivedFriendships = new List<Friendship>(), RequestedFriendships = new List<Friendship>(), UserAccount = new User() { UserName = "******" } }; otherMember3 = new Member() { UserId = Id3, ReceivedFriendships = new List<Friendship>(), RequestedFriendships = new List<Friendship>(), UserAccount = new User() { UserName = "******" } }; }
public async void ManagePlatforms_ReturnsMatchingModel() { Member member = new Member { UserId = memberId, FavoritePlatforms = new List<Platform> { new Platform { PlatformCode = "TPlat", PlatformName = "Test Platform" } } }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); ManageController controller = new ManageController( userManager: null, signInManager: null, veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: null) { ControllerContext = context.Object }; var result = await controller.ManagePlatforms() as ViewResult; Assert.That(result != null); var model = (List<Platform>) result.Model; Assert.That(model.Count, Is.EqualTo(1)); Assert.That(model[0].PlatformCode, Is.EqualTo("TPlat")); }
public async void CreateCreditCard_ValidModel_RetrievesMemberMatchingCurrentUserId() { Member member = new Member { UserId = memberId, CreditCards = new List<MemberCreditCard>() }; string stripeCardToken = "stripeCardToken"; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetMock = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetMock. Setup(mdb => mdb.FindAsync(memberId)). ReturnsAsync(member). Verifiable(); dbStub. Setup(db => db.Members). Returns(memberDbSetMock.Object); Mock<IStripeService> stripeServiceStub = new Mock<IStripeService>(); stripeServiceStub. Setup(s => s.CreateCreditCard(It.IsAny<Member>(), It.IsAny<string>())). Returns<MemberCreditCard>(null); Mock<IGuidUserIdGetter> idGetterStub = TestHelpers.GetSetupIUserIdGetterFake(memberId); Mock<ControllerContext> contextStub = TestHelpers.GetSetupControllerContextFakeWithUserIdentitySetup(); ManageController controller = CreateManageController(veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: stripeServiceStub.Object); controller.ControllerContext = contextStub.Object; await controller.CreateCreditCard(stripeCardToken); Assert.That( () => memberDbSetMock.Verify(mdb => mdb.FindAsync(memberId), Times.Exactly(1)), Throws.Nothing); }
public async void Index_AnonymousUser_PublicWishlist_ReturnsMatchingModel() { Member member = new Member { UserAccount = new User { UserName = "******" }, UserId = UserId, WishListVisibility = WishListVisibility.Public, Wishlist = new List<Product>() }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(false); WishlistController controller = new WishlistController(dbStub.Object, idGetter: null) { ControllerContext = context.Object }; var result = await controller.Index(member.UserAccount.UserName) as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<Member>()); var model = (Member)result.Model; Assert.That(model.Wishlist, Is.EqualTo(member.Wishlist)); }
public async void Index_MemberViewsFriendList_NoFreindRequestsNoFriends_ReturnsCorrectViewModel() { Member member = new Member { UserId = UserId, RequestedFriendships = new List<Friendship>(), ReceivedFriendships = new List<Friendship>() }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); memberDbSetStub.SetupForInclude(); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); FriendListController controller = new FriendListController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; var result = await controller.Index() as ViewResult; Assert.That(result.Model != null); var model = (FriendsListViewModel)result.Model; Assert.That(model.PendingReceivedFriendships.Count == 0); Assert.That(model.PendingSentFriendships.Count == 0); Assert.That(model.ConfirmedFriends.Count == 0); }
public async void MyEvents_ReturnsMatchingModel() { DateTime futureDate = DateTime.Now.AddDays(1); Member member = new Member { UserId = UserId, RegisteredEvents = new List<Event> { new Event { Date = futureDate }, new Event { Date = futureDate } } }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); EventsController controller = new EventsController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; var result = await controller.MyEvents() as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<EventListViewModel>()); var model = (EventListViewModel)result.Model; Assert.That(model.Events.Count(), Is.EqualTo(2)); }
public async void RemoveItem_CatchesOnSave() { Game game = new Game() { Id = GameId, Name = "game" }; GameProduct gameProduct = new PhysicalGameProduct() { Id = Id, BoxArtImageURL = "boxart", NewWebPrice = 79.99m, UsedWebPrice = 44.99m, Platform = new Platform { PlatformName = "PS4", }, Game = game }; CartItem cartItem = new CartItem() { ProductId = gameProduct.Id }; Cart cart = new Cart { MemberId = UserId, Items = new List<CartItem>() { cartItem } }; Member member = new Member() { UserId = UserId, Cart = cart }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Cart>> cartDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Cart> { cart }.AsQueryable()); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); Mock<DbSet<GameProduct>> gameProductDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<GameProduct> { gameProduct }.AsQueryable()); cartDbSetStub.Setup(db => db.FindAsync(cart.MemberId)).ReturnsAsync(cart); gameProductDbSetStub.Setup(db => db.FindAsync(gameProduct.Id)).ReturnsAsync(gameProduct); memberDbSetStub.Setup(db => db.Find(member.UserId)).Returns(member); gameProductDbSetStub.SetupForInclude(); dbStub.Setup(db => db.Carts).Returns(cartDbSetStub.Object); dbStub.Setup(db => db.GameProducts).Returns(gameProductDbSetStub.Object); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); dbStub.Setup(db => db.SaveChangesAsync()).Throws<DbUpdateException>(); Mock<ControllerContext> contextStub = new Mock<ControllerContext>(); contextStub.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); contextStub.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<HttpSessionStateBase> sessionStub = new Mock<HttpSessionStateBase>(); contextStub.Setup(s => s.HttpContext.Session).Returns(sessionStub.Object); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(UserId); CartController controller = new CartController(dbStub.Object, idGetterStub.Object, shippingCostService: null) { ControllerContext = contextStub.Object }; var result = await controller.RemoveItem(gameProduct.Id, cartItem.IsNew) as RedirectToRouteResult; Assert.That(result != null); Assert.That(result.RouteValues["action"], Is.EqualTo("Index")); }
public async void Index_CurrentMemberWishlist_ReturnsMatchingModel() { Member member = new Member { UserId = UserId, UserAccount = new User { UserName = "******" } }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); WishlistController controller = new WishlistController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; var result = await controller.Index(null) as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<Member>()); var model = (Member)result.Model; Assert.That(model.UserId, Is.EqualTo(UserId)); }
public void SetupBase() { memberId = new Guid("59EF92BE-D71F-49ED-992D-DF15773DAF98"); addressId = new Guid("53BE47E4-0C74-4D49-97BB-7246A7880B39"); creditCardId = new Guid("D9A69026-E3DA-4748-816B-293D9BE3E43F"); cartProduct1Id = new Guid("3882D242-A62A-4E99-BA11-D6EF340C2EE8"); cartProduct2Id = new Guid("7413D131-7337-42DC-A7E4-1155EB91E8C9"); memberAddress = new MemberAddress { Address = new Address { City = "Waterloo", PostalCode = "N2L 6R2", StreetAddress = "445 Wes Graham Way" }, CountryCode = "CA", Country = new Country { CountryCode = "CA", CountryName = "Canada", FederalTaxRate = 0.05m }, ProvinceCode = "ON", Province = new Province { CountryCode = "CA", ProvinceCode = "ON", ProvincialTaxRate = 0.08m }, MemberId = memberId, Id = addressId }; game = new Game { Name = "A game" }; platform = new Platform { PlatformCode = "XONE", PlatformName = "Xbox One" }; cartProduct1 = new PhysicalGameProduct { Id = cartProduct1Id, NewWebPrice = 60.00m, ProductAvailabilityStatus = AvailabilityStatus.Available, ReleaseDate = new DateTime(635835582902643008L, DateTimeKind.Local), UsedWebPrice = 10.00m, Game = game, Platform = platform }; cartProduct2 = new PhysicalGameProduct { Id = cartProduct2Id, NewWebPrice = 59.99m, ProductAvailabilityStatus = AvailabilityStatus.Available, ReleaseDate = new DateTime(635837213100050176L, DateTimeKind.Local), Game = game, Platform = platform }; newProduct1CartItem = new CartItem { IsNew = true, MemberId = memberId, Product = cartProduct1, ProductId = cartProduct1.Id, Quantity = 1 }; usedProduct1CartItem = new CartItem { IsNew = false, MemberId = memberId, Product = cartProduct1, ProductId = cartProduct1.Id, Quantity = 1 }; newProduct2CartItem = new CartItem { IsNew = true, MemberId = memberId, Product = cartProduct2, ProductId = cartProduct2.Id, Quantity = 1 }; validNotSavedShippingDetails = new WebOrderCheckoutDetails { Address = new Address { City = "Waterloo", PostalCode = "N2L 6R2", POBoxNumber = "123", StreetAddress = "445 Wes Graham Way" }, ProvinceCode = "ON", CountryCode = "CA" }; validAddressViewModel = new AddressViewModel { City = "Waterloo", CountryCode = "CA", ProvinceCode = "ON", POBoxNumber = "1234", PostalCode = "N2L 6R2", StreetAddress = "445 Wes Graham Way" }; memberCreditCard = new MemberCreditCard { Id = creditCardId, CardholderName = "John Doe", ExpiryMonth = 11, ExpiryYear = 2015, Last4Digits = "4242", Member = member, MemberId = memberId, StripeCardId = "cardToken" }; member = new Member { UserId = memberId, CreditCards = new List<MemberCreditCard> { memberCreditCard } }; memberUser = new User { FirstName = "John", LastName = "Doe", Id = memberId, PhoneNumber = "800-555-0199", }; validNotSavedShippingBillingDetails = new WebOrderCheckoutDetails { Address = new Address { City = "Waterloo", PostalCode = "N2L 6R2", POBoxNumber = "123", StreetAddress = "445 Wes Graham Way" }, ProvinceCode = "ON", CountryCode = "CA", StripeCardToken = "card_token" }; validSavedShippingBillingDetails = new WebOrderCheckoutDetails { MemberCreditCardId = creditCardId, MemberAddressId = addressId }; cartWithNewAndUsed = new Cart { Items = new List<CartItem> { newProduct1CartItem, usedProduct1CartItem }, Member = member, MemberId = memberId }; }
public async void CreateCreditCard_IStripeServiceThrowsStripeExceptionCardError_AddsErrorToModelState() { Member member = new Member { UserId = memberId }; string stripeCardToken = "stripeCardToken"; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub. Setup(mdb => mdb.FindAsync(memberId)). ReturnsAsync(member); dbStub. Setup(db => db.Members). Returns(memberDbSetStub.Object); string stripeErrorMessage = "A card Error Message"; StripeServiceException exception = new StripeServiceException(stripeErrorMessage, StripeExceptionType.CardError); Mock<IStripeService> stripeServiceStub = new Mock<IStripeService>(); stripeServiceStub. Setup(s => s.CreateCreditCard(It.IsAny<Member>(), It.IsAny<string>())). Throws(exception); Mock<IGuidUserIdGetter> idGetterStub = TestHelpers.GetSetupIUserIdGetterFake(memberId); Mock<ControllerContext> contextStub = TestHelpers.GetSetupControllerContextFakeWithUserIdentitySetup(); ManageController controller = CreateManageController(veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: stripeServiceStub.Object); controller.ControllerContext = contextStub.Object; await controller.CreateCreditCard(stripeCardToken); Assert.That(controller.ModelState[ManageController.STRIPE_ISSUES_MODELSTATE_KEY].Errors, Has.Some.Matches<ModelError>(modelError => modelError.ErrorMessage == stripeErrorMessage)); }
/// <summary> /// Implements <see cref="IStripeService.CreateCreditCard"/> /// </summary> public MemberCreditCard CreateCreditCard(Member member, string stripeCardToken) { var newCard = new StripeCardCreateOptions { Source = new StripeSourceOptions { TokenId = stripeCardToken // Note: Adding Object = "card" will result in a generic stripe error } }; var cardService = new StripeCardService(); StripeCard card; try { card = cardService.Create(member.StripeCustomerId, newCard); } catch (StripeException ex) { throw HandleStripeException(ex); } int expiryMonth = int.Parse(card.ExpirationMonth); int expiryYear = int.Parse(card.ExpirationYear); MemberCreditCard newMemberCard = new MemberCreditCard { CardholderName = card.Name, ExpiryMonth = expiryMonth, ExpiryYear = expiryYear, Last4Digits = card.Last4, StripeCardId = card.Id, Member = member, MemberId = member.UserId }; return newMemberCard; }
public async void Index_WishlistOwnerFound_FriendsOnly_NotFriends_Throws404Exception() { Member wishlistOwner = new Member { UserAccount = new User { UserName = "******" }, UserId = Id, WishListVisibility = WishListVisibility.FriendsOnly, RequestedFriendships = new List<Friendship>(), ReceivedFriendships = new List<Friendship>(), }; Member currentMember = new Member { UserId = UserId }; List<Member> members = new List<Member> { wishlistOwner, currentMember }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(members.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(currentMember.UserId)).ReturnsAsync(currentMember); memberDbSetStub.Setup(db => db.FindAsync(wishlistOwner.UserId)).ReturnsAsync(wishlistOwner); memberDbSetStub.SetupForInclude(); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(currentMember.UserId); WishlistController controller = new WishlistController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; var result = await controller.Index(wishlistOwner.UserAccount.UserName) as RedirectToRouteResult; Assert.That(result != null); Assert.That(result.RouteValues["controller"], Is.EqualTo("FriendList")); Assert.That(result.RouteValues["action"], Is.EqualTo("Index")); }
public void Index_WishlistOwnerFound_Private_Throws404Exception() { Member wishlistOwner = new Member { UserAccount = new User { UserName = "******" }, UserId = Id, WishListVisibility = WishListVisibility.Private }; Member currentMember = new Member { UserId = UserId }; List<Member> members = new List<Member> { wishlistOwner, currentMember }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(members.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(currentMember.UserId)).ReturnsAsync(currentMember); memberDbSetStub.Setup(db => db.FindAsync(wishlistOwner.UserId)).ReturnsAsync(wishlistOwner); memberDbSetStub.SetupForInclude(); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(currentMember.UserId); WishlistController controller = new WishlistController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; Assert.That(async () => await controller.Index(wishlistOwner.UserAccount.UserName), Throws.InstanceOf<HttpException>().And.Matches<HttpException>(ex => ex.GetHttpCode() == 404)); }
public async void MemberDetail_UserFound_ReturnsMatchingModel() { var member = new Member { UserAccount = new User { UserName = "******", FirstName = "Test", LastName = "User" }, FavoriteTags = new List<Tag>(), FavoritePlatforms = new List<Platform>(), Wishlist = new List<Product>(), ReceivedFriendships = new List<Friendship>(), RequestedFriendships = new List<Friendship>(), WebOrders = new List<WebOrder> { new WebOrder { OrderItems = new List<OrderItem> { new OrderItem { Quantity = 1, ListPrice = 10m } }, OrderSubtotal = 10m, ShippingCost = 0m, TaxAmount = 0m, OrderStatus = OrderStatus.UserCancelled }, new WebOrder { OrderItems = new List<OrderItem> { new OrderItem { Quantity = 2, ListPrice = 10m } }, OrderSubtotal = 20m, ShippingCost = 0m, TaxAmount = 0m, OrderStatus = OrderStatus.Processed } } }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); ReportsController controller = new ReportsController(dbStub.Object); var result = await controller.MemberDetail(member.UserAccount.UserName) as ViewResult; Assert.That(result != null); var model = (MemberDetailViewModel)result.Model; Assert.That(model.FullName, Is.EqualTo("Test User")); Assert.That(model.OrderCount, Is.EqualTo(1)); Assert.That(model.TotalQuantity, Is.EqualTo(2)); Assert.That(model.Total, Is.EqualTo(20m)); }
public async void Recommended_ReturnsMatchingModel() { List<Game> games = new List<Game> { new Game { Name = "FirstGame", GameSKUs = new List<GameProduct> { new PhysicalGameProduct { PlatformCode = "PS4" } }, GameAvailabilityStatus = AvailabilityStatus.Available }, new Game { Name = "SecondGame", GameSKUs = new List<GameProduct> { new PhysicalGameProduct { PlatformCode = "PC" } }, GameAvailabilityStatus = AvailabilityStatus.Available }, new Game { Name = "ThirdGame", GameSKUs = new List<GameProduct> { new PhysicalGameProduct { PlatformCode = "XONE", ReleaseDate = DateTime.Today.AddDays(-1) } }, GameAvailabilityStatus = AvailabilityStatus.Available }, new Game { Name = "FourthGame", GameSKUs = new List<GameProduct> { new PhysicalGameProduct { PlatformCode = "XONE", ReleaseDate = DateTime.Today.AddDays(-2) } }, GameAvailabilityStatus = AvailabilityStatus.Available }, new Game { Name = "FifthGame", GameSKUs = new List<GameProduct> { new PhysicalGameProduct { PlatformCode = "PS4" } }, GameAvailabilityStatus = AvailabilityStatus.Available }, new Game { Name = "PurchasedGame", GameSKUs = new List<GameProduct> { new PhysicalGameProduct { PlatformCode = "PS4" } }, GameAvailabilityStatus = AvailabilityStatus.Available }, new Game { Name = "NotForSaleGame", GameSKUs = new List<GameProduct> { new PhysicalGameProduct { PlatformCode = "PS4" } }, GameAvailabilityStatus = AvailabilityStatus.NotForSale } }; games[0].GameSKUs.First().Game = games[0]; games[1].GameSKUs.First().Game = games[1]; games[2].GameSKUs.First().Game = games[2]; games[3].GameSKUs.First().Game = games[3]; games[4].GameSKUs.First().Game = games[4]; List<Tag> tags = new List<Tag> { new Tag { Name = "Shooter", TaggedGames = new List<Game> { games[0], games[2], games[3] } }, new Tag { Name = "3D", TaggedGames = new List<Game> { games[0], games[1], games[2], games[3] } }, new Tag { Name = "2D", TaggedGames = new List<Game> { games[1], games[3], games[4] } } }; games[0].Tags = new List<Tag> { tags[0], tags[1] }; games[1].Tags = new List<Tag> { tags[1], tags[2] }; games[2].Tags = new List<Tag> { tags[0], tags[1], tags[2] }; games[3].Tags = new List<Tag> { tags[0], tags[1], tags[2] }; games[4].Tags = new List<Tag> { tags[2] }; List<Platform> platforms = new List<Platform> { new Platform { PlatformCode = "XONE", PlatformName = "Xbox ONE", GameProducts = new List<GameProduct> { games[2].GameSKUs.First(), games[3].GameSKUs.First() } }, new Platform { PlatformCode = "PC", PlatformName = "PC", GameProducts = new List<GameProduct> { games[0].GameSKUs.First(), games[4].GameSKUs.First() } }, new Platform { PlatformCode = "PS4", PlatformName = "Playstation 4", GameProducts = new List<GameProduct> { games[1].GameSKUs.First() } } }; Member member = new Member { UserId = new Guid("09EABF21-D5AC-4A5D-ADF8-27180E6D889B"), FavoriteTags = new List<Tag> { tags[0], tags[1] }, FavoritePlatforms = new List<Platform> { platforms[1], platforms[2] }, WebOrders = new List<WebOrder> { new WebOrder { OrderItems = new List<OrderItem> { new OrderItem { Product = games[6].GameSKUs.First() } } } } }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); GamesController controller = new GamesController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; var result = await controller.Recommended() as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<GameListViewModel>()); var model = (GameListViewModel)result.Model; var modelGames = model.Games.ToList(); Assert.That(modelGames.Count, Is.EqualTo(5)); Assert.That(modelGames[0].Name, Is.EqualTo("FirstGame")); Assert.That(modelGames[1].Name, Is.EqualTo("SecondGame")); Assert.That(modelGames[2].Name, Is.EqualTo("ThirdGame")); Assert.That(modelGames[3].Name, Is.EqualTo("FourthGame")); Assert.That(modelGames[4].Name, Is.EqualTo("FifthGame")); Assert.That(modelGames.All(g => g.Name != "PurchasedGame")); Assert.That(modelGames.All(g => g.Name != "NotForSaleGame")); }
public async void Recommended_NoResults_ReturnsMatchingModel() { List<Game> games = new List<Game> { new Game { Name = "FirstGame", GameSKUs = new List<GameProduct> { new PhysicalGameProduct { PlatformCode = "PS4" } }, GameAvailabilityStatus = AvailabilityStatus.Available } }; games[0].GameSKUs.First().Game = games[0]; List<Tag> tags = new List<Tag> { new Tag { Name = "Shooter", TaggedGames = new List<Game> { games[0] } }, new Tag { Name = "3D", TaggedGames = new List<Game> { games[0] } }, new Tag { Name = "2D", TaggedGames = new List<Game>() } }; games[0].Tags = new List<Tag> { tags[0], tags[1] }; List<Platform> platforms = new List<Platform> { new Platform { PlatformCode = "PS4", PlatformName = "Playstation 4", GameProducts = new List<GameProduct> { games[0].GameSKUs.First() } } }; Member member = new Member { UserId = new Guid("09EABF21-D5AC-4A5D-ADF8-27180E6D889B"), FavoriteTags = new List<Tag> { tags[2] }, FavoritePlatforms = new List<Platform>(), WebOrders = new List<WebOrder>() }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); GamesController controller = new GamesController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; var result = await controller.Recommended() as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<GameListViewModel>()); var model = (GameListViewModel)result.Model; Assert.That(model.Games.Count(), Is.EqualTo(0)); }
public async void ManageTags_AddingTags_ReturnsUpdatedModel() { List<Tag> tags = new List<Tag> { new Tag { Name = "Test Tag" }, new Tag { Name = "Second Tag" } }; List<string> tagStrings = new List<string> { "Test Tag", "Second Tag" }; Member member = new Member { UserId = memberId, FavoriteTags = new List<Tag> { tags[0] } }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Tag>> tagDbSetStub = TestHelpers.GetFakeAsyncDbSet(tags.AsQueryable()); dbStub.Setup(db => db.Tags).Returns(tagDbSetStub.Object); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); ManageController controller = new ManageController(userManager: null, signInManager: null, veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: null) { ControllerContext = context.Object }; await controller.ManageTags(tagStrings); Assert.That(member.FavoriteTags.Count, Is.EqualTo(2)); Assert.That(member.FavoriteTags.Any(t => t.Name == "Test Tag")); Assert.That(member.FavoriteTags.Any(t => t.Name == "Second Tag")); }
public void CreateCreditCard_IStripeServiceThrowsStripeException_HandlesException() { Member member = new Member { UserId = memberId }; string stripeCardToken = "stripeCardToken"; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub. Setup(mdb => mdb.FindAsync(memberId)). ReturnsAsync(member); dbStub. Setup(db => db.Members). Returns(memberDbSetStub.Object); StripeServiceException exception = new StripeServiceException("message", StripeExceptionType.UnknownError); Mock<IStripeService> stripeServiceStub = new Mock<IStripeService>(); stripeServiceStub. Setup(s => s.CreateCreditCard(It.IsAny<Member>(), It.IsAny<string>())). Throws(exception); Mock<IGuidUserIdGetter> idGetterStub = TestHelpers.GetSetupIUserIdGetterFake(memberId); Mock<ControllerContext> contextStub = TestHelpers.GetSetupControllerContextFakeWithUserIdentitySetup(); ManageController controller = CreateManageController(veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: stripeServiceStub.Object); controller.ControllerContext = contextStub.Object; Assert.That(async () => await controller.CreateCreditCard(stripeCardToken), Throws.Nothing); }
public async void CreateCreditCard_IStripeServiceThrowsApiKeyException_ReturnsInternalServerError() { Member member = new Member { UserId = memberId }; string stripeCardToken = "stripeCardToken"; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub. Setup(mdb => mdb.FindAsync(memberId)). ReturnsAsync(member); dbStub. Setup(db => db.Members). Returns(memberDbSetStub.Object); StripeServiceException exception = new StripeServiceException("message", StripeExceptionType.ApiKeyError); Mock<IStripeService> stripeServiceStub = new Mock<IStripeService>(); stripeServiceStub. Setup(s => s.CreateCreditCard(It.IsAny<Member>(), It.IsAny<string>())). Throws(exception); Mock<IGuidUserIdGetter> idGetterStub = TestHelpers.GetSetupIUserIdGetterFake(memberId); Mock<ControllerContext> contextStub = TestHelpers.GetSetupControllerContextFakeWithUserIdentitySetup(); ManageController controller = CreateManageController(veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: stripeServiceStub.Object); controller.ControllerContext = contextStub.Object; var result = await controller.CreateCreditCard(stripeCardToken) as HttpStatusCodeResult; Assert.That(result != null); Assert.That(result.StatusCode, Is.GreaterThanOrEqualTo((int)HttpStatusCode.InternalServerError)); }
public async void Unregister_IdInDb_ReturnsMatchedEventAsModel() { Event eventItem = new Event { Id = Id, RegisteredMembers = new List<Member>() }; Member member = new Member { UserId = UserId, RegisteredEvents = new List<Event>() }; eventItem.RegisteredMembers.Add(member); member.RegisteredEvents.Add(eventItem); Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Event>> eventDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Event> { eventItem }.AsQueryable()); eventDbSetStub.Setup(db => db.FindAsync(eventItem.Id)).ReturnsAsync(eventItem); dbStub.Setup(db => db.Events).Returns(eventDbSetStub.Object); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId); EventsController controller = new EventsController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; var result = await controller.Unregister(eventItem.Id) as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<EventDetailsViewModel>()); var model = (EventDetailsViewModel)result.Model; Assert.That(model.Event.Id, Is.EqualTo(eventItem.Id)); }
public async void CreateCreditCard_StripeServiceSuccess_AddsReturnedCreditCardToMembersCreditCards() { Member member = new Member { UserId = memberId, CreditCards = new List<MemberCreditCard>() }; MemberCreditCard creditCard = new MemberCreditCard { Id = new Guid("F406AB6C-CC58-4370-AB49-89D622C51768") }; string stripeCardToken = "stripeCardToken"; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub. Setup(mdb => mdb.FindAsync(memberId)). ReturnsAsync(member); dbStub. Setup(db => db.Members). Returns(memberDbSetStub.Object); Mock<IStripeService> stripeServiceStub = new Mock<IStripeService>(); stripeServiceStub. Setup(s => s.CreateCreditCard(It.IsAny<Member>(), It.IsAny<string>())). Returns(creditCard); Mock<IGuidUserIdGetter> idGetterStub = TestHelpers.GetSetupIUserIdGetterFake(memberId); Mock<ControllerContext> contextStub = TestHelpers.GetSetupControllerContextFakeWithUserIdentitySetup(); ManageController controller = CreateManageController(veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: stripeServiceStub.Object); controller.ControllerContext = contextStub.Object; await controller.CreateCreditCard(stripeCardToken); Assert.That(member.CreditCards, Is.Not.Empty); Assert.That(member.CreditCards, Has.Member(creditCard)); }
public async void Remove_IdInDb_RedirectsToIndex(bool itemAlreadyInWishlist) { Guid gameProductId = new Guid("976ACE77-D87C-4EBE-83A0-46F911F6490E"); PhysicalGameProduct gameProduct = new PhysicalGameProduct() { Game = new Game() { Name = "TestGame" }, SKUNameSuffix = "TestGameProductName", Id = gameProductId }; Member currentMember = new Member { UserId = UserId, Wishlist = new List<Product>() }; if (itemAlreadyInWishlist) { currentMember.Wishlist.Add(gameProduct); } Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Product>> productDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Product>().AsQueryable()); productDbSetStub.Setup(db => db.FindAsync(gameProduct.Id)).ReturnsAsync(gameProduct); dbStub.Setup(db => db.Products).Returns(productDbSetStub.Object); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { currentMember }.AsQueryable()); memberDbSetStub.Setup(db => db.FindAsync(currentMember.UserId)).ReturnsAsync(currentMember); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(currentMember.UserId); WishlistController controller = new WishlistController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; var result = await controller.Remove(gameProduct.Id) as RedirectToRouteResult; Assert.That(result != null); Assert.That(result.RouteValues["action"], Is.EqualTo("Index")); Assert.That(currentMember.Wishlist.Contains(gameProduct), Is.False); }
public async void CreateCreditCard_SuccessfulCreate_RedirectsToManageCreditCards() { Member member = new Member { UserId = memberId, CreditCards = new List<MemberCreditCard>() }; MemberCreditCard creditCard = new MemberCreditCard(); string stripeCardToken = "stripeCardToken"; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub. Setup(mdb => mdb.FindAsync(memberId)). ReturnsAsync(member); dbStub. Setup(db => db.Members). Returns(memberDbSetStub.Object); dbStub. Setup(db => db.SaveChangesAsync()). ReturnsAsync(1); Mock<IStripeService> stripeServiceStub = new Mock<IStripeService>(); stripeServiceStub. Setup(s => s.CreateCreditCard(It.IsAny<Member>(), It.IsAny<string>())). Returns(creditCard); Mock<IGuidUserIdGetter> idGetterStub = TestHelpers.GetSetupIUserIdGetterFake(memberId); Mock<ControllerContext> contextStub = TestHelpers.GetSetupControllerContextFakeWithUserIdentitySetup(); ManageController controller = CreateManageController(veilDataAccess: dbStub.Object, idGetter: idGetterStub.Object, stripeService: stripeServiceStub.Object); controller.ControllerContext = contextStub.Object; var result = await controller.CreateCreditCard(stripeCardToken) as RedirectToRouteResult; Assert.That(result != null); Assert.That(result.RouteValues["Action"], Is.EqualTo(nameof(controller.ManageCreditCards))); }
protected void SetupVeilDataAccessWithMember(Mock<IVeilDataAccess> dbFake, Member theMember) { Mock<DbSet<Member>> memberDbSetFake = TestHelpers.GetFakeAsyncDbSet(new List<Member> { theMember }.AsQueryable()); if (theMember != null) { memberDbSetFake. Setup(mdb => mdb.FindAsync(theMember.UserId)). ReturnsAsync(theMember); } dbFake. Setup(db => db.Members). Returns(memberDbSetFake.Object); }
public void RenderPhysicalGameProductPartial_UserWithAllInCart_ReturnsPartialViewWithTrueModelProperties() { PhysicalGameProduct gameProduct = new PhysicalGameProduct { Id = GameSKUId }; Member member = new Member { UserId = new Guid("1901C42C-1094-456C-9EAA-87DDC7AFEEC8"), Cart = new Cart { Items = new List<CartItem> { new CartItem { ProductId = gameProduct.Id, IsNew = true }, new CartItem { ProductId = gameProduct.Id, IsNew = false } } }, Wishlist = new List<Product> { gameProduct } }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member }.AsQueryable()); memberDbSetStub. Setup(mdb => mdb.Find(member.UserId)). Returns(member); dbStub. Setup(db => db.Members). Returns(memberDbSetStub.Object); Mock<IGuidUserIdGetter> idGetterStub = TestHelpers.GetSetupIUserIdGetterFake(member.UserId); Mock<ControllerContext> contextStub = new Mock<ControllerContext>(); contextStub. Setup(c => c.HttpContext.User.Identity). Returns<IIdentity>(null); GameProductsController controller = new GameProductsController(dbStub.Object, idGetterStub.Object) { ControllerContext = contextStub.Object }; var result = controller.RenderPhysicalGameProductPartial(gameProduct); Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<PhysicalGameProductViewModel>()); var model = (PhysicalGameProductViewModel)result.Model; Assert.That(model.GameProduct, Is.SameAs(gameProduct)); Assert.That(model.NewIsInCart, Is.True); Assert.That(model.UsedIsInCart, Is.True); Assert.That(model.ProductIsOnWishlist, Is.True); }
public void RenderPhysicalGameProduct_CurrentUserIsMember() { Guid gameProductId = new Guid("976ACE77-D87C-4EBE-83A0-46F911F6490E"); PhysicalGameProduct gameProduct = new PhysicalGameProduct() { Id = gameProductId }; Member wishlistOwner = new Member { UserId = Id, WishListVisibility = WishListVisibility.FriendsOnly, RequestedFriendships = new List<Friendship>(), ReceivedFriendships = new List<Friendship>(), UserAccount = new DataModels.Models.Identity.User() { UserName = "******" } }; Member currentMember = new Member { UserId = UserId, Wishlist = new List<Product> { gameProduct }, Cart = new Cart { Items = new List<CartItem> { new CartItem { Product = gameProduct, ProductId = gameProduct.Id, IsNew = true, MemberId = UserId, Quantity = 1 }, new CartItem { Product = gameProduct, ProductId = gameProduct.Id, IsNew = false, MemberId = UserId, Quantity = 1 } } } }; List<Member> members = new List<Member> { wishlistOwner, currentMember }; Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(members.AsQueryable()); memberDbSetStub.Setup(db => db.Find(currentMember.UserId)).Returns(currentMember); memberDbSetStub.Setup(db => db.Find(wishlistOwner.UserId)).Returns(wishlistOwner); dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object); Mock<ControllerContext> context = new Mock<ControllerContext>(); context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null); context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true); Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>(); idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(currentMember.UserId); WishlistController controller = new WishlistController(dbStub.Object, idGetterStub.Object) { ControllerContext = context.Object }; var result = controller.RenderPhysicalGameProduct(gameProduct, wishlistOwner.UserId) as PartialViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<WishlistPhysicalGameProductViewModel>()); var model = (WishlistPhysicalGameProductViewModel)result.Model; Assert.That(model.GameProduct.Id, Is.EqualTo(gameProduct.Id)); Assert.That(model.NewIsInCart); Assert.That(model.UsedIsInCart); Assert.That(model.ProductIsOnWishlist); Assert.That(!model.MemberIsCurrentUser); }