public async Task CharacterService_Update_Success(Character character)
        {
            MockDbCharacter_Success(character);

            var characterRequest = new CharacterRequest()
            {
                Name     = character.Name,
                Patronus = character.Patronus,
                Role     = character.Role,
                School   = character.School,
                House    = character.House?.Id
            };

            MockCheckHouseInconsistencies_Success(characterRequest, character.Id);

            var insertResult = await _characterService.UpdateAsync(characterRequest);

            Assert.True(insertResult.Success);

            _characterRepositoryMock.Verify(x =>
                                            x.UpdateAsync(
                                                It.Is <Character>(y =>
                                                                  y.Id == character.Id &&
                                                                  y.Name == character.Name &&
                                                                  y.Patronus == character.Patronus &&
                                                                  (character.House != null ? y.House.Id == character.House.Id : y.House == null) &&
                                                                  y.Role == character.Role &&
                                                                  y.School == character.School
                                                                  ),
                                                It.IsAny <System.Threading.CancellationToken>()
                                                ),
                                            Times.Once()
                                            );
        }
Example #2
0
        public static Character From(CharacterRequest characterRequest)
        {
            var character = new Character();

            character.Name = characterRequest.Name;
            return(character);
        }
        public async Task CharacterService_Update_HouseInconsistencies_NotSuccess()
        {
            var house     = new House("id", "name", "mascot", "hof", "hog", "founder");
            var character = new Character(
                "id",
                "name",
                null,
                null,
                house,
                null,
                new System.DateTime(),
                new System.DateTime());

            var characterRequest = new CharacterRequest()
            {
                Name     = character.Name,
                Patronus = character.Patronus,
                House    = character.House.Id,
                Role     = character.Role,
                School   = character.School
            };

            MockDbCharacter_Success(character);
            MockCheckHouseInconsistencies_NotSuccess();

            var updateResult = await _characterService.UpdateAsync(characterRequest);

            Assert.False(updateResult.Success);
        }
Example #4
0
        public async Task HouseService_CheckHouseInconsistenciesCharacterNotPartOfHouse_NotSuccess()
        {
            var            characterId = "characterId";
            var            houseId     = "houseId";
            PotterApiHouse house       = new PotterApiHouse()
            {
                _id     = houseId,
                founder = "founder",
                name    = "name",
                members = new string[] {  }
            };
            List <PotterApiHouse> potterApiHouses = new List <PotterApiHouse>()
            {
                house
            };

            _potterApiHouseServiceMock.Setup(x => x.GetAllAsync()).Returns(Task.FromResult(potterApiHouses));

            var character = new CharacterRequest()
            {
                Name     = "name",
                Patronus = "pat",
                House    = houseId,
                Role     = "role",
                School   = "scho"
            };

            var insertResult = await _houseService.CheckHouseInconsistenciesAsync(character, characterId);

            Assert.False(insertResult.Success);
            Assert.Single(insertResult.Messages);
            Assert.Contains(insertResult.Messages, x => x == string.Format(HouseMessages.CharacterNotPartOfHouse, character.Name, house.name));
        }
Example #5
0
        public CharacterRequest GetCharacterCustomisationData()
        {
            CharacterRequest characterRequest = new CharacterRequest();

            characterRequest.name = characterNameInput.text;
            return(characterRequest);
        }
Example #6
0
        public CharacterResponse Get()
        {
            var request = new CharacterRequest {
                CharacterId = characterService.DefaultID, MotionName = characterService.DefaultMotionName
            };

            return(GetCharacter(request));
        }
Example #7
0
        public CharacterResponse GetCharacter(CharacterRequest request)
        {
            var collection = characterService.GetCharacter(request.CharacterId, request.MotionName);

            return(new CharacterResponse
            {
                CharacterCollection = collection
            });
        }
Example #8
0
        public override Task <CharacterResponse> GetCharacter(CharacterRequest request, ServerCallContext context)
        {
            var character = Characters.FirstOrDefault(i => i.Id == request.Id);

            return(Task.FromResult(new CharacterResponse {
                Character = character
            }));
            // return base.GetCharacter(request, context);
        }
Example #9
0
        public void HandleCharacterSaveButton()
        {
            CharacterRequest characterRequest = characterScreen.GetCharacterCustomisationData();

            if (string.IsNullOrEmpty(characterRequest.name))
            {
                characterScreen.DisplayErrorMessage("Name cannot be empty!");
            }

            loginManager.LoginServerClient.SaveCharacter(characterRequest, HandleCharacterCreateResponse);
        }
Example #10
0
 /// <summary>
 /// CentCom call to store a new character for the current user.
 /// Requires Authenticate to have been called at least once before.
 /// </summary>
 /// <param name="characterRequest"></param>
 /// <param name="resultCallback"></param>
 public void SaveCharacter(CharacterRequest characterRequest, Action <string, bool> resultCallback)
 {
     ValidateToken("Save Character");
     monoBehaviour.StartCoroutine(HandlePayloadRequest(
                                      UnityWebRequest.kHttpVerbPOST,
                                      connectionAddress + Post_CreateCharacter,
                                      JsonUtility.ToJson(characterRequest),
                                      "Save Character",
                                      true,
                                      resultCallback
                                      ));
 }
Example #11
0
        public bool Update(CharacterRequest characterRequest)
        {
            if (!ValidateRequest(characterRequest))
            {
                return(false);
            }

            var character = new Character(characterRequest.Id, characterRequest.Name, characterRequest.Role, characterRequest.School, characterRequest.House, characterRequest.Patronus);

            _repository.Update(character);

            return(_unitOfWork.Commit());
        }
        public IActionResult Create([FromBody] CharacterRequest request)
        {
            var  character = Character.From(request);
            long userId    = Int64.Parse(User.Identity.Name);

            try
            {
                _characterService.Create(character, userId);
                return(Ok());
            }
            catch (AppException ex)
            {
                return(BadRequest(new { message = ex.Message }));
            }
        }
Example #13
0
        public async Task <ActionResult <CharacterResponse> > Post([FromBody] CharacterRequest request)
        {
            try
            {
                var command = request.ToCommand();
                var view    = await _applicationService.CreateCharacterAsync(command);

                return(new CharacterResponse(view));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Unhandled exception in /characters POST");
                return(StatusCode(500, new ErrorResponse(e)));
            }
        }
        private void MockCheckHouseInconsistencies_Success(CharacterRequest character, string id)
        {
            DefaultResult <House> houseResponse = new DefaultResult <House>();

            if (string.IsNullOrEmpty(character.House))
            {
                houseResponse.SetData(null);
            }
            else
            {
                houseResponse.SetData(new House(character.House, null, null, null, null, null));
            }

            _houseServiceMock.Setup(x => x.CheckHouseInconsistenciesAsync(character, id)).Returns(Task.FromResult(houseResponse));
        }
Example #15
0
        public int Insert(CharacterRequest characterRequest)
        {
            if (!ValidateRequest(characterRequest))
            {
                return(characterRequest.Id);
            }

            var character = new Character(0, characterRequest.Name, characterRequest.Role, characterRequest.School, characterRequest.House, characterRequest.Patronus);

            _repository.Insert(character);

            _unitOfWork.Commit();

            return(character.Id);
        }
        public void UpdateCharacter__WithNullRequest()
        {
            #region Arrange
            var controller           = new StarsWarsController(_starsWarsManager);
            CharacterRequest request = null;
            #endregion

            #region Act
            var response = controller.UpdateCharacter(request);
            #endregion

            #region Assert
            Assert.IsInstanceOfType(response, typeof(BadRequestErrorMessageResult));
            #endregion
        }
Example #17
0
        public IHttpActionResult CreateCharacter(CharacterRequest request)
        {
            try
            {
                _log.Info("begin CreateCharacter");

                if (request == null)
                {
                    throw new ArgumentNullException("The request content was null or not in the correct format");
                }

                _starsWarsManager.CreateCharacter(Mapper.Map <Character>(request));

                return(Content <CharacterResponse>(HttpStatusCode.Created, new CharacterResponse()
                {
                    Data = request
                }));
            }
            catch (ArgumentNullException argEx)
            {
                _log.Error(argEx);
                return(BadRequest(argEx.Message));
            }
            catch (EntityNotFoundException enEx)
            {
                _log.Error(enEx);
                return(Content <CharacterResponse>(HttpStatusCode.NotFound, new CharacterResponse()
                {
                    Message = enEx.Message
                }));
            }
            catch (StarsWarsException swEx)
            {
                _log.Error(swEx);
                return(Content <CharacterResponse>((HttpStatusCode)422, new CharacterResponse()
                {
                    Message = swEx.Message
                }));
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                return(Content <CharacterResponse>(HttpStatusCode.InternalServerError, new CharacterResponse()
                {
                    Message = ex.Message
                }));
            }
        }
Example #18
0
        private async Task PutCharacterTest(CharacterRequest characterRequest)
        {
            _outputHelper.WriteLine("Executando Put");
            var putResponse = await _httpClient.PutAsJsonAsync <CharacterRequest>($"/api/v1/Characters", characterRequest);

            var jsonString = await putResponse.Content.ReadAsStringAsync();

            var putResponseJson = JsonConvert.DeserializeObject <DefaultResult_CharacterResponse>(jsonString);

            Assert.True(putResponseJson.Success);
            Assert.Equal(characterRequest.Name, putResponseJson.Data.Name);
            Assert.Equal(characterRequest.Role, putResponseJson.Data.Role);
            Assert.Equal(characterRequest.School, putResponseJson.Data.School);
            Assert.Equal(characterRequest.House, putResponseJson.Data.House.Id);
            Assert.Equal(HttpStatusCode.OK, putResponse.StatusCode);
        }
Example #19
0
        private async Task GetCharacters(CharacterRequest characterRequest)
        {
            _outputHelper.WriteLine("Executando Get");
            var getResponse = await _httpClient.GetAsync($"/api/v1/Characters?name={characterRequest.Name}");

            var jsonString = await getResponse.Content.ReadAsStringAsync();

            var getResponseJson = JsonConvert.DeserializeObject <DefaultResult_CharacterResponseList>(jsonString);

            Assert.True(getResponseJson.Success);
            Assert.Single(getResponseJson.Data);
            Assert.Equal(characterRequest.Name, getResponseJson.Data.FirstOrDefault().Name);
            Assert.Equal(characterRequest.Role, getResponseJson.Data.FirstOrDefault().Role);
            Assert.Equal(characterRequest.School, getResponseJson.Data.FirstOrDefault().School);
            Assert.Equal(characterRequest.House, getResponseJson.Data.FirstOrDefault().House.Id);
            Assert.Equal(HttpStatusCode.OK, getResponse.StatusCode);
        }
Example #20
0
        public override Task <CharacterReply> GetCharacterInfo(CharacterRequest request, ServerCallContext context)
        {
            var storage = DummyStorageData.GetData();

            var character = storage.Where(x => x.Id == request.Id).FirstOrDefault();;

            var reply = new CharacterReply()
            {
                Id     = character.Id,
                Name   = character.Name,
                Height = character.Height,
                Mass   = character.Mass,
                Gender = character.Gender
            };

            return(Task.FromResult(reply));
        }
Example #21
0
        public async Task RunCrudTest()
        {
            var characterId = "5a0fa6bbae5bc100213c2334";
            var myCharacter = new CharacterRequest()
            {
                Name   = "Phineas Nigellus Black",
                Role   = "(Formerly) Headmaster of Hogwarts",
                School = "Hogwarts School of Witchcraft and Wizardry"
            };

            await DeleteCharacterTest(characterId);
            await PostCharacterTest(myCharacter);

            myCharacter.House = "5a05dc8cd45bd0a11bd5e071";

            await PutCharacterTest(myCharacter);
            await GetCharacters(myCharacter);
        }
        public async Task CharacterService_Insert_HouseInconsistencies_NotSuccess()
        {
            var character = new CharacterRequest()
            {
                Name     = "name",
                Patronus = "pat",
                House    = "houseid",
                Role     = "role",
                School   = "scho"
            };

            MockPotterCharacter_Success(character);
            MockCheckHouseInconsistencies_NotSuccess();

            var insertResult = await _characterService.InsertAsync(character);

            Assert.False(insertResult.Success);
        }
        public async Task <DefaultResult <CharacterResponse> > InsertAsync(CharacterRequest characterRequest)
        {
            var defaultResult = new DefaultResult <CharacterResponse>();

            var characterInconsistenciesResult = await CheckInsertInconsistenciesAsync(characterRequest);

            if (!characterInconsistenciesResult.Success)
            {
                defaultResult.SetMessages(characterInconsistenciesResult.Messages);
                return(defaultResult);
            }

            var character = new Character(
                characterInconsistenciesResult.Data.Id,
                characterRequest.Name,
                characterRequest.Role,
                characterRequest.School,
                characterInconsistenciesResult.Data.House,
                characterRequest.Patronus,
                DateTime.Now,
                DateTime.Now);

            var validatorResult = character.Validate();

            if (!validatorResult.IsValid)
            {
                defaultResult.SetMessages(validatorResult.Errors.Select(x => x.ErrorMessage).ToList());
            }
            else
            if ((await ExistsByName(character.Name)))
            {
                defaultResult.SetMessage(string.Format(CharacterMessages.ExistsInDatabase, character.Name));
            }

            if (defaultResult.Success)
            {
                await _characterRepository.InsertAsync(character);

                defaultResult.SetData((CharacterResponse)character);
                defaultResult.IsSuccess();
            }

            return(defaultResult);
        }
Example #24
0
        public override async Task <CharacterResponse> GetCharacter(CharacterRequest request, ServerCallContext context)
        {
            try
            {
                var starwarsPerson = await _starwarsPersonService.GetPerson(request.Name);

                return(new CharacterResponse
                {
                    Name = starwarsPerson.Name,
                    Gender = starwarsPerson.Gender,
                    Height = starwarsPerson.Height
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(null);
        }
        public async Task CharacterService_Update_NotExistsInDatabase_NotSuccess()
        {
            var character = new CharacterRequest()
            {
                Name     = "name",
                Patronus = "pat",
                House    = "houseid",
                Role     = "role",
                School   = "scho"
            };

            MockDbCharacter_NotSuccess();
            MockCheckHouseInconsistencies_NotSuccess();

            var updateResult = await _characterService.UpdateAsync(character);

            Assert.False(updateResult.Success);
            Assert.Single(updateResult.Messages);
            Assert.Contains(updateResult.Messages, x => x == string.Format(CharacterMessages.NotExistsNameInDatabase, character.Name));
        }
        public void CreateCharacter__WithGoodRequest()
        {
            #region Arrange
            var controller           = new StarsWarsController(_starsWarsManager);
            CharacterRequest request = new CharacterRequest()
            {
                Name = "Chewbacca"
            };
            #endregion

            #region Act
            var response = controller.CreateCharacter(request) as NegotiatedContentResult <CharacterResponse>;
            #endregion

            #region Assert
            Assert.IsNotNull(response);
            Assert.IsNotNull(response.Content);
            Assert.AreEqual(201, (int)response.StatusCode);
            #endregion
        }
        public void CreateCharacter__DuplicatedRequest()
        {
            #region Arrange
            var controller           = new StarsWarsController(_starsWarsManager);
            CharacterRequest request = new CharacterRequest()
            {
                Name = "Chewbacca"
            };
            #endregion

            #region Act
            var response = controller.CreateCharacter(request) as NegotiatedContentResult <CharacterResponse>;
            #endregion

            #region Assert
            Assert.IsNotNull(response);
            Assert.AreEqual($"Character {request.Name} already exists", response.Content.Message);
            Assert.AreEqual(422, (int)response.StatusCode);
            #endregion
        }
        public void UpdateCharacter__WithGoodRequest()
        {
            #region Arrange
            var controller           = new StarsWarsController(_starsWarsManager);
            CharacterRequest request = new CharacterRequest()
            {
                Id   = 13,
                Name = "Beru Lars"
            };
            #endregion

            #region Act
            var response = controller.UpdateCharacter(request) as OkNegotiatedContentResult <CharacterResponse>;
            #endregion

            #region Assert
            Assert.IsNotNull(response);
            Assert.IsNotNull(response.Content);
            #endregion
        }
        private PotterApiCharacter MockPotterCharacter_Success(CharacterRequest character)
        {
            var potterApiCharacter = new PotterApiCharacter()
            {
                _id      = "charid",
                name     = character.Name,
                patronus = character.Patronus,
                house    = character.House,
                role     = character.Role,
                school   = character.School
            };
            List <PotterApiCharacter> potterApiCharacterList = new List <PotterApiCharacter>()
            {
                potterApiCharacter
            };

            _potterApiCharacterServiceMock.Setup(x => x.GetByNameAsync(character.Name)).Returns(Task.FromResult(potterApiCharacterList));

            return(potterApiCharacter);
        }
        public async Task CharacterService_Insert_NotExistsInPotterApi_NotSuccess()
        {
            var character = new CharacterRequest()
            {
                Name     = "name",
                Patronus = "pat",
                House    = "houseid",
                Role     = "role",
                School   = "scho"
            };

            MockPotterCharacter_NotSuccess();
            MockCheckHouseInconsistencies_NotSuccess();

            var insertResult = await _characterService.InsertAsync(character);

            Assert.False(insertResult.Success);
            Assert.NotEmpty(insertResult.Messages);
            Assert.Single(insertResult.Messages);
            Assert.Contains(insertResult.Messages, x => x == string.Format(CharacterMessages.NotExistsInPotterApi, character.Name));
        }