public void Details_IdNotInDb_Throws404Exception() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<DbSet<Event>> gameDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Event>().AsQueryable()); dbStub.Setup(db => db.Events).Returns(gameDbSetStub.Object); EventsController controller = new EventsController(dbStub.Object, idGetter: null); Assert.That(async () => await controller.Details(Id), Throws.InstanceOf<HttpException>().And.Matches<HttpException>(e => e.GetHttpCode() == 404)); }
public async void Details_IdInDb_ReturnsViewWithModel(bool memberRegistered) { Event eventItem = new Event { Id = Id, RegisteredMembers = new List<Member>() }; Member member = new Member { UserId = UserId, RegisteredEvents = new List<Event>() }; if (memberRegistered) { 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.Details(Id) as ViewResult; Assert.That(result != null); Assert.That(result.Model != null); Assert.That(result.Model, Is.InstanceOf<EventDetailsViewModel>()); var model = (EventDetailsViewModel)result.Model; Assert.That(model.Event, Is.EqualTo(eventItem)); Assert.That(model.CurrentMemberIsRegistered == memberRegistered); }
public void Details_NullId_Throws404Exception() { EventsController controller = new EventsController(veilDataAccess: null, idGetter: null); Assert.That(async () => await controller.Details(null), Throws.InstanceOf<HttpException>().And.Matches<HttpException>(e => e.GetHttpCode() == 404)); }