public ActionResult Index(InviteCommand command) { //TODO: validate try { var loggedInMember = _members.FindLoggedInMember(); var invite = new Invitation(); invite.FullName = command.FullName; invite.Email = command.Email; invite.LinkedIn = command.LinkedIn; invite.GitHub = command.GitHub; invite.Testimonial = command.Testimonial; invite.VouchedBy = loggedInMember.Id; _session.Store(invite); loggedInMember.AddInvitation(invite.Id); _session.SaveChanges(); //TODO: publish event _email.SendInvitationToGroup(invite, loggedInMember.UserName); invite.Pending(); _session.SaveChanges(); //in the short run, this will give us a heads up if the mandril send is failing return RedirectToAction("Ok"); } catch (Exception) { ModelState.AddModelError("", "error"); return View(command); } }
public void WehnPendingIsCalledStatusIsSetToPending() { var sut = new Invitation(); sut.Pending(); Assert.AreEqual(Invitation.Statuses.Pending, sut.Status); }
public void CannotSetToPendingTwice() { var sut = new Invitation(); sut.Pending(); Assert.Throws<ApplicationException>(sut.Pending, "pending twice"); }
public void WhenAcceptIsCalledStatusIsSetToAccepted() { var sut = new Invitation(); sut.Pending(); sut.Accept(); Assert.AreEqual(Invitation.Statuses.Accepted, sut.Status); }