public Specification when_updating_status_with_invalid_model() { string statusText = new string('*', 141); var statusViewModel = new StatusViewModel { Status = statusText }; ISessionAdapter session = sessionFactory(); var testDbContext = new TestDbContext(); Container container = containerFactory(testDbContext); int maxId = testDbContext.Statuses.Max(_ => _.Key); return new QuerySpecification<TwitterController, ViewResult> { On = () => { session.SetTwitterAccessToken(new OAuthToken("", "")); return GetTwitterController(container, session); }, When = ctrl => ctrl.UpdateStatus(statusViewModel) as ViewResult, Expect = { routeResult =>routeResult.ViewName == "Send", }, }; }
public Specification when_updating_status_with_access_token() { const string statusText = "some test status"; var statusViewModel = new StatusViewModel { Status = statusText }; ISessionAdapter session = sessionFactory(); var testDbContext = new TestDbContext(); Container container = containerFactory(testDbContext); var mockTwitterProvider = MockTwitterProvider(statusText); container.TwitterServiceFactory = () => mockTwitterProvider.Object; int statusCount = testDbContext.Statuses.Count; return new ActionSpecification<TwitterController> { On = () => { session.SetTwitterAccessToken(new OAuthToken("", "")); return GetTwitterController(container, session); }, When = ctrl => ctrl.UpdateStatus(statusViewModel), Expect = { ctrl => testDbContext.Statuses.Count == statusCount + 1, ctrl => testDbContext.Statuses.Last().Value.Text == statusText, }, }; }
public Specification when_updating_status_with_no_access_token() { const string statusText = "some test status"; var statusViewModel = new StatusViewModel { Status = statusText }; ISessionAdapter session = sessionFactory(); return new QuerySpecification<TwitterController, ActionResult> { On = () => GetTwitterController(session: session), When = ctrl => ctrl.UpdateStatus(statusViewModel), Expect = { actionResult => session.GetTwitterNewStatus() == statusText, actionResult => actionResult is RedirectToRouteResult, actionResult => ((RedirectToRouteResult)actionResult).RouteValues["action"] == "SignIn", }, }; }
public ActionResult UpdateStatus(StatusViewModel model) { OAuthToken token = Session.GetTwitterAccessToken(); if (token == null) { Session.SetTwitterStatus(model.Status); return RedirectToAction("SignIn"); } return SendUpdate(model, token); }
private ActionResult SendUpdate(StatusViewModel model, OAuthToken token) { if (!TryValidateModel(model)) { return View("Send", model); } var twitterStatus = new TwitterStatus {Text = model.Status}; //unit of work for db using (IRepository repository = Container.RepositoryFactory()) { twitterStatus = repository.AddStatus(twitterStatus); } //twitter service operation ITwitter twitterClient = TwitterProvider.GetApi(token.Value, token.Secret); twitterClient.TimelineOperations.UpdateStatusAsync(twitterStatus.Text); return RedirectToAction("View", new {id = twitterStatus.Id}); }