public static IMailTemplate Create(Session session)
        {
            var template = new TokenSubstitutingMailTemplate(MailSubject, Emails.SessionSubmission);
            template.AddTokenSubstitution(SessionTitleToken, session.Title);
            template.AddTokenSubstitution(SessionAbstractToken, session.Abstract);

            return template;
        }
        public void CannotSaveAnEditToASession_WhenTheSessionBelongsToAnotherUser()
        {
            var session = new Session { SessionId = 1, SpeakerUserName = "******" };
            var controller = new SessionControllerBuilder().Updating(session).Build();

            var result = controller.Edit("fred", session);

            Assert.That(result, Is.InstanceOf<HttpUnauthorizedResult>());
        }
        public ActionResult Edit(Session session)
        {
            if (ModelState.IsValid)
            {
                sessionRepository.UpdateSession(session);
                return RedirectToAction("Index");
            }

            return View(session);
        }
        public void OnlyReturnSelectedSessionsForTheSpecifiedSpeaker()
        {
            var sessionRepository = Substitute.For<ISessionRepository>();
            var session1 = new Session {SpeakerUserName = "******", SessionId = 123456};
            var session3 = new Session {SpeakerUserName = "******", SessionId = 102};
            sessionRepository.GetSessionsSubmittedBy("bob").Returns(new[] { session1, new Session { SpeakerUserName = "******" }, session3 });
            var sessionsLoader = new SelectedSessionsLoader(sessionRepository);

            var sessions = sessionsLoader.LoadSessions(new UserProfile {UserName = "******"});

            Assert.That(sessions, Is.EquivalentTo(new[] {session3}));
        }
 private bool UserDoesNotOwnSession(string userName, Session session)
 {
     return session.SpeakerUserName != userName;
 }
        private SessionDisplayModel CreateDisplayModel(Session session, UserProfile profile)
        {
            var isUsersSession = Request.IsAuthenticated && session.SpeakerUserName == User.Identity.Name;
            var tweetLink = CreateTweetLink(isUsersSession, session.Title,
                                            Url.Action("Details", "Session", new { id = session.SessionId },
                                                       Request.Url.Scheme));

            var displayModel = new SessionDisplayModel
                {
                    SessionId = session.SessionId,
                    SessionTitle = session.Title,
                    SessionAbstract = session.Abstract,
                    SpeakerId = profile.UserId,
                    SpeakerName = profile.Name,
                    SpeakerUserName = session.SpeakerUserName,
                    SpeakerGravatarUrl = profile.GravatarUrl(),
                    TweetLink = tweetLink,
                    IsUsersSession = isUsersSession
                };
            return displayModel;
        }
        public void ShouldEmailTheUserTheirSubmission_WhenCreating()
        {
            var postman = Substitute.For<IPostman>();
            var bob = new UserProfile { Name = "Bob", EmailAddress = "*****@*****.**", UserName = "******" };
            var session = new Session
            {
                Title = "Bob's awesome session",
                Abstract = "This is going to be awesome!"
            };

            var controller = new SessionControllerBuilder()
                .WithPostman(postman)
                .WhenSubmissionsAreOpen()
                .ForUser(bob)
                .Submitting(session)
                .Build();

            controller.Create(session);

            var expectedMailMessage = MailMessage.FromTemplate(SessionCreatedMailTemplate.Create(session), bob);
            postman.Received().Deliver(expectedMailMessage);
        }
        public void ShouldEmailTheUserTheirUpdatedSubmission_WhenEditing()
        {
            var postman = Substitute.For<IPostman>();
            var bob = new UserProfile { Name = "Bob", EmailAddress = "*****@*****.**", UserName = "******" };
            var session = new Session
            {
                Title = "Bob's even more awesome session",
                Abstract = "Just wait until you see it!",
                SpeakerUserName = bob.UserName,
                SessionId = 1
            };

            var controller = new SessionControllerBuilder()
                .WithPostman(postman)
                .ForUser(bob)
                .Updating(session)
                .Build();

            controller.Edit(bob.UserName, session);

            var expectedMailMessage = MailMessage.FromTemplate(SessionUpdatedMailTemplate.Create(session), bob);
            postman.Received().Deliver(expectedMailMessage);
        }
        public void Edit_SavesTheUserProfileCorrectly()
        {
            var sessionRepository = Substitute.For<ISessionRepository>();
            var voteRepository = Substitute.For<IVoteRepository>();
            var controller = new SessionController(sessionRepository, voteRepository);
            var session = new Session { Title = "A session", Abstract = "My session is about...", SpeakerUserName = "******" };

            controller.Edit(session);

            sessionRepository.Received().UpdateSession(session);
        }
 public void UpdateSession(Session session)
 {
     db.Sessions.UpdateBySessionId(session);
 }
 public Session AddSession(Session session)
 {
     return db.Sessions.Insert(session);
 }
 public SessionControllerBuilder Updating(Session session)
 {
     sessionRepository.Get(session.SessionId).Returns(session);
     return this;
 }
 public SessionControllerBuilder Submitting(Session session)
 {
     sessionRepository.AddSession(session).Returns(session);
     return this;
 }