Example #1
0
        public async Task LogPosition()
        {
            // Arrange
            var logPositionRequest = new LogPositionRequest()
            {
                GameId    = 5,
                TeamId    = 6,
                Latitude  = 45.36,
                Longitude = 2.361,
            };

            A.CallTo(() => _gameService.GetGameById(logPositionRequest.GameId))
            .Returns(new Game()
            {
                Id = logPositionRequest.GameId
            });
            A.CallTo(() => _teamService.GetTeamById(logPositionRequest.TeamId))
            .Returns(new Team()
            {
                Id = logPositionRequest.TeamId
            });
            // Act
            var result = await _target.LogPosition(logPositionRequest);

            // Assert
            A.CallTo(() => _gameService.GetGameById(logPositionRequest.GameId)).MustHaveHappened();
            A.CallTo(() => _teamService.GetTeamById(logPositionRequest.TeamId))
            .MustHaveHappened();

            A.CallTo(() => _actionService.AddGameAction(A <GameAction> .That.Matches(ga => CheckGameActionLogPosition(ga, logPositionRequest)))).MustHaveHappened();
            Check.That(result).IsInstanceOf <OkResult>();
            A.CallTo(() => _hubContext.Clients.All.SendCoreAsync(A <string> ._, A <object[]> ._, A <CancellationToken> ._)).MustHaveHappened();
        }
Example #2
0
        public override async Task Begin(ITurnContext turnContext)
        {
            var state = turnContext.GetConversationState <ImageHuntState>();

            if (state.Status != Status.Started)
            {
                LogInfo <ImageHuntState>(turnContext, "Game not started");
                await turnContext.End();

                return;
            }
            state.CurrentLatitude  = turnContext.Activity.Location.Latitude;
            state.CurrentLongitude = turnContext.Activity.Location.Longitude;

            _logger.LogInformation($"Received position: [lat:{state.CurrentLatitude}, lng:{state.CurrentLongitude}");
            await base.Begin(turnContext);

            var logPositionRequest = new LogPositionRequest()
            {
                GameId    = state.GameId,
                TeamId    = state.TeamId,
                Latitude  = state.CurrentLatitude,
                Longitude = state.CurrentLongitude
            };
            await _actionWebService.LogPosition(logPositionRequest);

            //await turnContext.ReplyActivity(
            //  $"J'ai enregistré votre nouvelle position {state.CurrentLatitude}, {state.CurrentLongitude}");
            await turnContext.End();
        }
Example #3
0
 private bool CheckGameActionLogPosition(GameAction ga, LogPositionRequest logPositionRequest)
 {
     Check.That(ga.Game.Id).Equals(logPositionRequest.GameId);
     Check.That(ga.Team.Id).Equals(logPositionRequest.TeamId);
     Check.That(ga.Action).Equals(Action.SubmitPosition);
     Check.That(ga.Latitude).Equals(logPositionRequest.Latitude);
     Check.That(ga.Longitude).Equals(logPositionRequest.Longitude);
     return(true);
 }
Example #4
0
 public async Task LogPosition(LogPositionRequest logPositionRequest,
                               CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var content = new MultipartFormDataContent())
     {
         content.Add(new StringContent(logPositionRequest.GameId.ToString()), "gameId");
         content.Add(new StringContent(logPositionRequest.TeamId.ToString()), "teamId");
         content.Add(new StringContent(logPositionRequest.Latitude.ToString()), "latitude");
         content.Add(new StringContent(logPositionRequest.Longitude.ToString()), "longitude");
         var result = await PostAsync <string>($"{_httpClient.BaseAddress}api/Action/LogPosition/",
                                               content, cancellationToken);
     }
 }
Example #5
0
        public async Task <IActionResult> LogPosition(LogPositionRequest logPositionRequest)
        {
            _logger.LogInformation($"Received position gameId: {logPositionRequest.GameId}, teamId: {logPositionRequest.TeamId}, [{logPositionRequest.Latitude}, {logPositionRequest.Longitude}]");
            var gameAction = new GameAction()
            {
                Action      = Action.SubmitPosition,
                Game        = _gameService.GetGameById(logPositionRequest.GameId),
                Team        = _teamService.GetTeamById(logPositionRequest.TeamId),
                Longitude   = logPositionRequest.Longitude,
                Latitude    = logPositionRequest.Latitude,
                DateOccured = DateTime.Now
            };

            _actionService.AddGameAction(gameAction);
            await NotifyClientsForGameAction(gameAction);

            return(Ok());
        }
Example #6
0
        public async Task LogPosition()
        {
            // Arrange
            var logPositionRequest = new LogPositionRequest()
            {
                GameId    = 1,
                TeamId    = 1,
                Latitude  = 45.26,
                Longitude = 4.63
            };
            var httpResponse = new HttpResponseMessage()
            {
                Content = new StringContent("OK")
            };

            A.CallTo(_fakeHttpMessageHandler)
            .Where(x => x.Method.Name == "PostAsync")
            .WithReturnType <Task <HttpResponseMessage> >()
            .Returns(httpResponse);
            // Act
            await _target.LogPosition(logPositionRequest);

            // Assert
        }