コード例 #1
0
ファイル: CompetitionTests.cs プロジェクト: haiconmot/SmsQuiz
        public void PickWinnerOnClosedCompetitionThrowsException()
        {
            // Arrange
            var state = new ClosedState();
            var competition = new Competition();
            competition.SetCompetitionState(state);

            // Act
            Assert.Throws<CompetitionClosedException>(competition.PickWinner);
        }
コード例 #2
0
        public void CompetitionIsNotValid()
        {
            // Arrange
            var competition = new Competition();

            // Act
            bool isValid = competition.IsValid;

            // Assert
            Assert.IsFalse(isValid);
        }
コード例 #3
0
        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());
        }
コード例 #4
0
ファイル: Stubs.cs プロジェクト: haiconmot/SmsQuiz
        /// <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;
        }
コード例 #5
0
        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;
        }
コード例 #6
0
 /// <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);
     }
 }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
 /// <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;
 }