public void When_visiting_the_bing_dot_com_home_page__should_list_all_upcoming_developer_events() { //Arrange var seededEvent = new DeveloperEvent("event1", new DateTime(2012, 1, 1)); Database.RunWithAnOpenConnection(x => x.Execute("INSERT INTO DeveloperEvents(EventName, EventDate) VALUES(@EventName, @EventDate)", seededEvent)); var controller = new HomeController(); //Act var result = controller.Index(); //Assert Assert.IsNotNull(result.ViewBag.DeveloperEvents); Assert.IsTrue(result.ViewBag.DeveloperEvents is IEnumerable<DeveloperEvent>); var events = (IEnumerable<DeveloperEvent>)result.ViewBag.DeveloperEvents; Assert.AreEqual(1, events.Count()); var developerEvent = events.First(); Assert.AreEqual(seededEvent.EventName, developerEvent.EventName); Assert.AreEqual(seededEvent.EventDate, developerEvent.EventDate); }
public RedirectToRouteResult AddDeveloperEvent(string name, string date) { if (string.IsNullOrWhiteSpace(name)) { var routeValueDictionary = new RouteValueDictionary(); routeValueDictionary.Add("errorMessage", "The developer event name is empty."); return RedirectToAction("Error", "Home", routeValueDictionary); } if (string.IsNullOrWhiteSpace(date)) { var routeValueDictionary = new RouteValueDictionary(); routeValueDictionary.Add("errorMessage", "The event date is blank."); return RedirectToAction("Error", "Home", routeValueDictionary); } DateTime dateTime; var success = DateTime.TryParse(date, out dateTime); if (!success) { var routeValueDictionary = new RouteValueDictionary(); routeValueDictionary.Add("errorMessage", "The event date is unrecognizable. Please use the ISO date format (YYYY-MM-DD) to help our computer system out, thanks in advance."); return RedirectToAction("Error", "Home", routeValueDictionary); } var developerEvent = new DeveloperEvent(name.Trim(), dateTime); using (var connection = Database.CreateConnection()) { connection.Open(); var sql = "INSERT INTO DeveloperEvents(EventName, EventDate) VALUES (@EventName, @EventDate)"; connection.Execute(sql, developerEvent); } return RedirectToAction("Index", "Home"); }