コード例 #1
0
        public void Close_Competition_Returns_OK()
        {
            // Arrange
            var competition = new PostCompetition()
            {
                Answers          = new[] { "Man Utd", "Man City", "Chelsea", "Arsenal" },
                ClosingDate      = DateTime.Now.AddMonths(-1),
                CompetitionKey   = RandomGenerator.GetRandomString(10),
                CorrectAnswerKey = 1,
                Question         = "Who won the 2012 Premier League?"
            };

            Assert.AreEqual(
                HttpStatusCode.Created,
                Client.PostAsJsonAsync(Resources.Competitions, competition).Result.StatusCode,
                "POSTCompetition not OK.");

            // Act
            var response =
                Client.PutAsJsonAsync(
                    string.Format("{0}/{1}", Resources.CloseCompetition, competition.CompetitionKey.ToLower()), new { })
                .Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, "PUT CloseCompetition not OK.");
        }
コード例 #2
0
        public IHttpActionResult PutCompetition(int id, PostCompetition postCompetition)
        {
            using (var db = new AndroidCaseCompetitionEntities())
            {
                var competition = db.Competitions.Find(id);
                competition.Name          = postCompetition.Name;
                competition.DateTimeStart = postCompetition.DateTimeStart;
                competition.DateTimeEnd   = postCompetition.DateTimeEnd;
                competition.SubjectId     = postCompetition.SubjectId;

                File.Delete(Path.Combine(AppData, competition.UploadFileName));
                competition.UploadFileName = $"{Guid.NewGuid()}.{postCompetition.UploadFileExtension}";
                var bytes = Convert.FromBase64String(postCompetition.UploadFile);
                File.WriteAllBytes(Path.Combine(AppData, competition.UploadFileName), bytes);

                db.Competitions.Attach(competition);
                db.SaveChanges();
                return(Ok());
            }
        }
コード例 #3
0
        /// <summary>
        /// The post.
        /// </summary>
        /// <returns>
        /// The <see cref="GetCompetition"/>.
        /// </returns>
        private GetCompetition Post()
        {
            // Arrange
            var competition = new PostCompetition()
            {
                Answers          = new[] { "A", "B", "C", "D" },
                ClosingDate      = DateTime.Now.AddMonths(1),
                CompetitionKey   = RandomGenerator.GetRandomString(10),
                CorrectAnswerKey = 1,
                Question         = "Test Question"
            };

            // Act
            var response = Client.PostAsJsonAsync(Resources.Competitions, competition).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.Created, response.StatusCode, "POST competition not ok.");

            return(response.Content.ReadAsAsync <GetCompetition>().Result);
        }
コード例 #4
0
        public IHttpActionResult PostCompetition(PostCompetition postCompetition)
        {
            using (var db = new AndroidCaseCompetitionEntities())
            {
                var competition = new Competition
                {
                    Name           = postCompetition.Name,
                    DateTimeStart  = postCompetition.DateTimeStart,
                    DateTimeEnd    = postCompetition.DateTimeEnd,
                    UploadFileName = $"{Guid.NewGuid()}.{postCompetition.UploadFileExtension}",
                    SubjectId      = postCompetition.SubjectId
                };

                var bytes = Convert.FromBase64String(postCompetition.UploadFile);
                File.WriteAllBytes(Path.Combine(AppData, competition.UploadFileName), bytes);

                db.Competitions.Add(competition);
                db.SaveChanges();
                return(Ok());
            }
        }
コード例 #5
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));
        }
コード例 #6
0
        public void Enter_Competition_Returns_OK_Status()
        {
            // #1 Create Competition
            var competition = new PostCompetition()
            {
                Answers          = new[] { "Man Utd", "Man City", "Chelsea", "Arsenal" },
                ClosingDate      = DateTime.Now.AddMonths(1),
                CompetitionKey   = RandomGenerator.GetRandomString(10),
                CorrectAnswerKey = 1,
                Question         = "Who won the 2012 Premier League?"
            };

            Assert.AreEqual(
                HttpStatusCode.Created,
                Client.PostAsJsonAsync(Resources.Competitions, competition).Result.StatusCode,
                "POSTCompetition not OK.");

            // #2 Enter Competition
            var enterCompetition = new PostEnterCompetition()
            {
                CompetitionKey = competition.CompetitionKey,
                ContactType    = "Sms",
                Answer         = "A",
                Contact        = "00000111222",
                Source         = "Sms"
            };

            Assert.AreEqual(
                HttpStatusCode.Created,
                Client.PostAsJsonAsync(Resources.EnterCompetition, enterCompetition).Result.StatusCode,
                "POST EnterCompetition not OK.");

            // #3 Close Competition
            var response = Client.PutAsJsonAsync(string.Format("{0}/{1}", Resources.CloseCompetition, competition.CompetitionKey.ToLower()), new { }).Result;

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, "PUT CloseCompetition not OK.");
        }