Beispiel #1
0
        public void Archive_Integrates()
        {
            // Build the container.
            var container = Setup();
            var session   = NewReviewSession();

            session.SessionStatus = SessionStatusType.Completed;

            using (var lifetime = container.BeginLifetimeScope())
            {
                var sessionRepo = lifetime.Resolve <AbstractRepository <ReviewSession> >();

                // Create a new session to work with
                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);

                Assert.DoesNotThrow(() => manager.Archive(session.Id, session.Creator));
            }
            using (var lifetime = container.BeginLifetimeScope())
            {
                var sessionRepo     = lifetime.Resolve <AbstractRepository <ReviewSession> >();
                var releasedSession = sessionRepo.Get(session.Id);

                Assert.Equal(SessionStatusType.Archived, releasedSession.SessionStatus);
            }
        }
Beispiel #2
0
        public void Edit_Integrates()
        {
            // Build the container.
            var container = Setup();

            var session = NewReviewSession();

            using (var lifetime = container.BeginLifetimeScope())
            {
                var sessionRepo = lifetime.Resolve <AbstractRepository <ReviewSession> >();

                // Create a new session to work with
                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);

                AutoMapper.Mapper.CreateMap <ReviewSession, ReviewSession>();
                var editSession = AutoMapper.Mapper.Map <ReviewSession>(session);

                editSession.Requirements.Add(new Requirement {
                    Comment = "test", Content = "test"
                });

                Assert.DoesNotThrow(() => manager.Edit(editSession, session.Creator));
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        public void CompleteQuestionnaire_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].Content = "test was changed";

                Assert.DoesNotThrow(() => manager.CompleteQuestionnaire(session.Id, questions, session.Reviewer));
            }

            using (var lifetime = container.BeginLifetimeScope())
            {
                var sessionRepo  = lifetime.Resolve <AbstractRepository <ReviewSession> >();
                var eventRepo    = lifetime.Resolve <AbstractRepository <Event> >();
                var savedSession = sessionRepo.Get(session.Id);

                Assert.Equal(SessionStatusType.Completed, savedSession.SessionStatus);
                Assert.Equal(2, savedSession.Questions.Count);
                Assert.Equal("test was changed", savedSession.Questions[0].Content);

                //TODO: Figure out why the build server test break on Event.EventType assertion
                //var events = eventRepo.ListAll();

                //Assert.Equal(1, events.Count);
                //Assert.Equal(events[0].EventType, EventType.QuestionnaireCompleted);
                //Assert.Equal(events[0].EntityId, session.Id);
            }
        }
Beispiel #5
0
        public void CompleteQuestionnaire_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.CompleteQuestionnaire(1, new List <Question>(), "test"));
        }
        public void DeleteSession_Fails_Authorization()
        {
            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();

            sessionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns(session);

            var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object);

            Assert.Throws <AuthorizationException>(() => manager.Delete(session.Id, "test"));
        }
        public void CreateNewSession_Fails_With_ID()
        {
            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.Id = 1;

            var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object);

            Assert.Throws <InvalidOperationException>(() => manager.Create(session, "test_user"));
        }
        public void Archive_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.SessionStatus = SessionStatusType.Released;
            sessionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns(session);

            var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object);

            Assert.Throws <InvalidOperationException>(() => manager.Archive(session.Id, session.Creator));
        }
        public void AssignReviewer_Fails_NotFound()
        {
            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.AssignReviewer(-1, "*****@*****.**", "*****@*****.**"));
        }
        public void Archive_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.SessionStatus = SessionStatusType.Completed;
            sessionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns(session);

            var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object);

            Assert.Throws <AuthorizationException>(() => manager.Archive(session.Id, "FAIL"));
        }
        public void AssignReviewer_Fails_Pending_Session()
        {
            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.PendingReviewer = true;
            sessionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns(session);


            var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object);

            Assert.Throws <InvalidOperationException>(() => manager.AssignReviewer(session.Id, "*****@*****.**", session.Creator));
        }
Beispiel #12
0
        public void CompleteQuestionnaire_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.Completed;
            sessionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns(session);

            var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object);

            Assert.Throws <InvalidOperationException>(() => manager.CompleteQuestionnaire(session.Id, new List <Question>(), session.Reviewer));
        }
Beispiel #13
0
        public void SaveQuestionnaire_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.SaveQuestionnaire(session.Id, new List <Question>(), "FAIL"));
        }
Beispiel #14
0
        public void Release_Integrates()
        {
            // Build the container.
            var container = Setup();
            var session   = NewReviewSession();

            session.SessionStatus = SessionStatusType.Created;
            session.Reviewer      = "somebody";

            using (var lifetime = container.BeginLifetimeScope())
            {
                var sessionRepo = lifetime.Resolve <AbstractRepository <ReviewSession> >();

                // Create a new session to work with
                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);

                Assert.DoesNotThrow(() => manager.Release(session.Id, session.Creator));
            }
            using (var lifetime = container.BeginLifetimeScope())
            {
                var sessionRepo = lifetime.Resolve <AbstractRepository <ReviewSession> >();
                var eventRepo   = lifetime.Resolve <AbstractRepository <Event> >();

                var releasedSession = sessionRepo.Get(session.Id);

                Assert.Equal(SessionStatusType.Released, releasedSession.SessionStatus);

                //TODO: Figure out why the build server test break on Event.EventType assertion

                //var events = eventRepo.ListAll();

                //Assert.Equal(1, events.Count);
                //Assert.Equal(events[0].EventType, EventType.ReviewReleased);
                //Assert.Equal(events[0].EntityId, session.Id);
            }
        }
Beispiel #15
0
        public void CreateNewSession_Integrates()
        {
            // Build the container.
            var container = Setup();

            using (var lifetime = container.BeginLifetimeScope())
            {
                var sessionRepo = lifetime.Resolve <AbstractRepository <ReviewSession> >();
                var eventRepo   = lifetime.Resolve <AbstractRepository <Event> >();
                var manager     = new ReviewSessionManager(sessionRepo, eventRepo);

                var session = NewReviewSession();

                Assert.DoesNotThrow(() => manager.Create(session, "test_user"));
                Assert.True(session.Id > 0);
                Assert.Equal(session.Creator, "test_user");
                Assert.Equal(SessionStatusType.Created, session.SessionStatus);
                Assert.InRange(session.LastModified.Ticks, DateTime.UtcNow.AddMinutes(-1).Ticks, DateTime.UtcNow.AddMinutes(1).Ticks);
            }
        }
Beispiel #16
0
        public void AssignReviewer_Integrates()
        {
            // Build the container.
            var container = Setup();

            // Create a new session to work with
            var session = NewReviewSession();

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

                Assert.DoesNotThrow(() => manager.AssignReviewer(session.Id, "*****@*****.**", session.Creator));
            }

            using (var lifetime = container.BeginLifetimeScope())
            {
                var sessionRepo = lifetime.Resolve <AbstractRepository <ReviewSession> >();
                var eventRepo   = lifetime.Resolve <AbstractRepository <Event> >();

                var savedSession = sessionRepo.Get(session.Id);

                Assert.False(savedSession.PendingReviewer);
                Assert.Equal("*****@*****.**", savedSession.Reviewer);

                //TODO: Figure out why the build server test break on Event.EventType assertion
                //var events = eventRepo.ListAll();

                //Assert.Equal(1, events.Count);
                //Assert.Equal(events[0].EventType, EventType.ReviewerInvited);
                //Assert.Equal(events[0].EntityId, session.Id);
            }
        }
Beispiel #17
0
        public void DeleteSession_Integrates()
        {
            // Build the container.
            var container = Setup();

            using (var lifetime = container.BeginLifetimeScope())
            {
                var sessionRepo = lifetime.Resolve <AbstractRepository <ReviewSession> >();
                var eventRepo   = lifetime.Resolve <AbstractRepository <Event> >();

                // Create a new session to work with
                var session = NewReviewSession();
                sessionRepo.Save(session);

                var manager = new ReviewSessionManager(sessionRepo, eventRepo);

                Assert.DoesNotThrow(() => manager.Delete(session.Id, session.Creator));

                var nullSession = sessionRepo.Get(session.Id);
                Assert.Null(nullSession);
            }
        }