public void PickWinnerOnClosedCompetitionThrowsException() { // Arrange var state = new ClosedState(); var competition = new Competition(); competition.SetCompetitionState(state); // Act Assert.Throws<CompetitionClosedException>(competition.PickWinner); }
public void CompetitionIsNotValid() { // Arrange var competition = new Competition(); // Act bool isValid = competition.IsValid; // Assert Assert.IsFalse(isValid); }
public void PickWinnerCallsCompetitionState() { // Arrange var state = new Mock<ICompetitionState>(); var competition = new Competition(); competition.SetCompetitionState(new ClosedState()); // Act competition.PickWinner(); // Assert state.Verify(s => s.PickWinner(It.IsAny<Competition>()), Times.Once()); }
/// <summary> /// Gets the stub competition. /// </summary> /// <param name="includeCorrectAnswers">if set to <c>true</c> [include correct answers].</param> /// <returns> /// A stub competition pre-programmed with expectated state. /// </returns> public static Competition StubCompetition(bool includeCorrectAnswers) { var competition = new Competition(); competition.ClosingDate = new DateTime(2012, 11, 1); competition.Question = "Who is Luke Skywalker's Father?"; competition.PossibleAnswers.Add(CompetitionAnswer.A, "Darth Vader", isCorrectAnswer: true); competition.PossibleAnswers.Add(CompetitionAnswer.B, "Obi Wan Kenobi"); competition.PossibleAnswers.Add(CompetitionAnswer.C, "George Lucas"); competition.PossibleAnswers.Add(CompetitionAnswer.D, "Walt Disney"); competition.CompetitionKey = "WINPRIZE"; competition.CreatedBy = new User(); foreach (var item in StubEntrants(includeCorrectAnswers)) { competition.AddEntrant(item); } return competition; }
private Guid Create() { // Arrange var competition = new Competition { ClosingDate = CLOSING_DATE, CompetitionKey = COMPETITION_KEY, CreatedBy = new User() { ID = CREATED_BY_ID }, CreatedDate = CREATED_DATE, Question = QUESTION, PossibleAnswers = POSSIBLE_ANSWERS }; // Act _competitionRepository.Add(competition); // Assert Assert.AreNotEqual(Guid.Empty, competition.ID, "Creating new record does not return id"); return competition.ID; }
/// <summary> /// Sets the answers from the request object to the domain model. /// </summary> /// <param name="answers"> /// The answers. /// </param> /// <param name="correctAnswerKey"> /// The correct answer key. /// </param> /// <param name="competition"> /// The competition. /// </param> private static void SetAnswers(string[] answers, int correctAnswerKey, Competition competition) { for (int i = 1; i <= answers.Count(); i++) { competition.PossibleAnswers.Add((CompetitionAnswer)i, answers[i - 1], i == correctAnswerKey); } }
/// <summary> /// Create a new competition. /// </summary> /// <param name="item"> /// The item. /// </param> /// <returns> /// The <see cref="HttpResponseMessage"/>. /// </returns> /// <remarks> /// POST competition /// </remarks> public HttpResponseMessage Post(PostCompetition item) { var competition = new Competition() { Question = item.Question, ClosingDate = item.ClosingDate, CompetitionKey = item.CompetitionKey, CreatedBy = _userDataMapper.FindByAuthToken(RequestToken) }; SetAnswers(item.Answers, item.CorrectAnswerKey, competition); if (competition.IsValid) { _competitionDataMapper.Insert(competition); var createdItem = _mapper.Map<Competition, GetCompetition>(competition); return CreatedHttpResponse(createdItem.Id, createdItem); } return Request.CreateResponse(HttpStatusCode.BadRequest, competition.ValidationErrors); }
/// <summary> /// Sets the status based on competition status change. /// </summary> /// <param name="competition"> /// The competition. /// </param> /// <returns> /// The <see cref="HttpStatusCode"/>. /// </returns> /// <remarks> /// If a competition is not closed, the status will not be closed. /// </remarks> private HttpStatusCode SetStatus(Competition competition) { return competition.Status == CompetitionStatus.Open ? HttpStatusCode.NotModified : HttpStatusCode.OK; }