コード例 #1
0
        public async Task Return_Second_group_Of_Winners_With_The_Next_WinnerPosition()
        {
            FillData();
            var command = new MakeRaffleCommand {
                CountOfWinners = 2, GroupCodeId = _newGroupCode.Id, RepeatWinners = false
            };
            await HttpClient.PostAsync($"/groupcodes/{_newGroupCode.Id}/raffle",
                                       new StringContent(JsonConvert.SerializeObject(command), Encoding.UTF8, "application/json"));

            var response = await HttpClient.PostAsync($"/groupcodes/{_newGroupCode.Id}/raffle",
                                                      new StringContent(JsonConvert.SerializeObject(command), Encoding.UTF8, "application/json"));

            response.StatusCode.Should().Be(HttpStatusCode.OK);
            var result = await response.Content.ReadAsAsync <List <MemberDetailViewModel> >();

            RefreshContext();

            var winners = Context.GroupCodes
                          .Include(x => x.Members)
                          .Where(x => x.Id == _newGroupCode.Id)
                          .FirstOrDefault()
                          .Members
                          .Where(s => result.Select(g => g.Id)
                                 .Contains(s.MemberId))
                          .ToList();

            foreach (var winner in winners)
            {
                winner.Winner.Should().BeTrue();
                winner.WinnerPosition.Should().BeGreaterThan(2);
            }
        }
コード例 #2
0
        public async Task Return_Differents_Winners_In_Multiples_Requests()
        {
            FillData();
            var command = new MakeRaffleCommand {
                CountOfWinners = 3, GroupCodeId = _newGroupCode.Id, RepeatWinners = false
            };
            var response1 = await HttpClient.PostAsync($"/groupcodes/{_newGroupCode.Id}/raffle",
                                                       new StringContent(JsonConvert.SerializeObject(command), Encoding.UTF8, "application/json"));

            var response2 = await HttpClient.PostAsync($"/groupcodes/{_newGroupCode.Id}/raffle",
                                                       new StringContent(JsonConvert.SerializeObject(command), Encoding.UTF8, "application/json"));

            var result = await response1.Content.ReadAsAsync <List <MemberDetailViewModel> >();

            var result1 = await response2.Content.ReadAsAsync <List <MemberDetailViewModel> >();

            RefreshContext();

            result1.Where(x => result.Select(s => s.Id).Contains(x.Id)).Any().Should().BeFalse();
            result.Where(x => result1.Select(s => s.Id).Contains(x.Id)).Any().Should().BeFalse();
        }
コード例 #3
0
 public async Task <IActionResult> MakeRaffle([FromRoute] int groupCodeId, [FromBody] MakeRaffleCommand command)
 {
     command.GroupCodeId = groupCodeId;
     return(await _iMediator.Send(command));
 }