public void ProvideFeedback_Integrates() { // Build the container. var container = Setup(); // Create a new session to work with var session = NewReviewSession(); session.SessionStatus = SessionStatusType.Released; session.Reviewer = "*****@*****.**"; using (var lifetime = container.BeginLifetimeScope()) { var sessionRepo = lifetime.Resolve <AbstractRepository <ReviewSession> >(); sessionRepo.Save(session); } using (var lifetime = container.BeginLifetimeScope()) { var sessionRepo = lifetime.Resolve <AbstractRepository <ReviewSession> >(); var eventRepo = lifetime.Resolve <AbstractRepository <Event> >(); var manager = new ReviewSessionManager(sessionRepo, eventRepo); Mapper.CreateMap <Question, Question>(); var questions = session.Questions.Select(Mapper.Map <Question>).ToList(); questions[0].Feedbacks = new List <Feedback> { new Feedback { Created = DateTime.UtcNow, Text = "This is new feedback", Username = session.Reviewer } }; Assert.DoesNotThrow(() => manager.ProvideFeedback(session.Id, questions, session.Reviewer)); } using (var lifetime = container.BeginLifetimeScope()) { var sessionRepo = lifetime.Resolve <AbstractRepository <ReviewSession> >(); var savedSession = sessionRepo.Get(session.Id); Assert.Equal(SessionStatusType.Released, savedSession.SessionStatus); Assert.Equal(1, savedSession.Questions[0].Feedbacks.Count); Assert.Equal("This is new feedback", savedSession.Questions[0].Feedbacks[0].Text); Assert.Equal(session.Reviewer, savedSession.Questions[0].Feedbacks[0].Username); } }
public void ProvideFeedback_Fails_Not_Found() { var mockSession = new Mock <IDocumentSession>(); var sessionRepo = new Mock <AbstractRepository <ReviewSession> >(mockSession.Object); var eventRepo = new Mock <AbstractRepository <Event> >(mockSession.Object); // Create a new session to work with ReviewSession session = null; sessionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns(session); var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object); Assert.Throws <SessionNotFoundException>(() => manager.ProvideFeedback(1, new List <Question>(), "test")); }
public void ProvideFeedback_Fails_Invalid_Status() { var mockSession = new Mock <IDocumentSession>(); var sessionRepo = new Mock <AbstractRepository <ReviewSession> >(mockSession.Object); var eventRepo = new Mock <AbstractRepository <Event> >(mockSession.Object); // Create a new session to work with var session = NewReviewSession(); session.Reviewer = "*****@*****.**"; session.SessionStatus = SessionStatusType.Archived; sessionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns(session); var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object); Assert.Throws <InvalidOperationException>(() => manager.ProvideFeedback(session.Id, new List <Question>(), session.Reviewer)); }
public void ProvideFeedback_Fails_UnAuthorized() { var mockSession = new Mock <IDocumentSession>(); var sessionRepo = new Mock <AbstractRepository <ReviewSession> >(mockSession.Object); var eventRepo = new Mock <AbstractRepository <Event> >(mockSession.Object); // Create a new session to work with var session = NewReviewSession(); session.Reviewer = "*****@*****.**"; session.SessionStatus = SessionStatusType.Released; sessionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns(session); var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object); Assert.Throws <AuthorizationException>(() => manager.ProvideFeedback(session.Id, session.Questions, "FAIL")); }