public async Task Adopt_WhenUserAndAnimalFound_ShouldReturnCreatedAtRoute() { var animal = AnimalBuilder.NewInstance() .WithCode(1) .Build(); var user = UserBuilder.NewInstance() .WithId(1) .WithUsername("fakeuser") .Build(); var controller = GetUserAnimalsController(); A.CallTo(() => _userRepository.GetByIdAsync(A <int> ._)).Returns(Task.FromResult <User>(user)); A.CallTo(() => _animalFactory.Create(A <int> ._)).Returns(animal); var result = await controller.Adopt(1, new UserCommands.Adopt { Code = 1 }); Assert.NotNull(result); var createdAtRouteResult = Assert.IsType <CreatedAtRouteResult>(result); var createdAnimal = Assert.IsType <Animal>(createdAtRouteResult.Value); Assert.Contains(createdAtRouteResult.RouteValues.Keys, key => key == "userId"); Assert.Contains(createdAtRouteResult.RouteValues.Keys, key => key == "animalId"); Assert.Equal(1, createdAtRouteResult.RouteValues["userId"]); Assert.Equal(1, createdAnimal.Code); }
//assembly process to build an animal object public void MakeAnimal(AnimalBuilder aAnimalBuilder) { aAnimalBuilder.BuildAnimalHeader(); aAnimalBuilder.BuildAnimalBody(); aAnimalBuilder.BuildAnimalLeg(); aAnimalBuilder.BuildAnimalArm(); aAnimalBuilder.BuildAnimalTail(); }
//construct process to build an animal object, //after this process completed, a object //will be consider as a ready to use object. /// <summary> /// This a director /// </summary> /// <param name="animalBuilder"></param> public void MakeAnimal(AnimalBuilder animalBuilder) { animalBuilder.BuildHead(); animalBuilder.BuildBody(); animalBuilder.BuildArm(); animalBuilder.BuildLeg(); animalBuilder.BuildTail(); }
public void CheckPolymorphicism() { var zebbie = new AnimalBuilder() .WithType(typeof(Zebra)) .WithName("Zebbie") .Build(); zebbie.PublicMakeNoise(); }
public void Feed_Always_ShouldAddToHunger() { var animal = AnimalBuilder.NewInstance() .AddMetric(new Hunger(0.0f, 1.0f)) .Build(); animal.Feed(1.0f); Assert.Equal(1.0f, animal.Metrics[MetricType.Hunger].Value); animal.Feed(-2.0f); Assert.Equal(-1.0f, animal.Metrics[MetricType.Hunger].Value); }
public void Stroke_Always_ShouldAddToHappiness() { var animal = AnimalBuilder.NewInstance() .AddMetric(new Happiness(0.0f, 1.0f)) .Build(); animal.Stroke(1.0f); Assert.Equal(1.0f, animal.Metrics[MetricType.Happiness].Value); animal.Stroke(-2.0f); Assert.Equal(-1.0f, animal.Metrics[MetricType.Happiness].Value); }
public async Task Get_WhenAnimalNotFound_ShouldReturnNotFound() { var animal = AnimalBuilder.NewInstance() .WithId(1) .WithCode(2) .Build(); var user = UserBuilder.NewInstance() .WithId(1) .WithUsername("fakeuser") .AddAnimal(animal) .Build(); var controller = GetUserAnimalsController(); A.CallTo(() => _userRepository.GetByIdAsync(A <int> ._)).Returns(Task.FromResult <User>(user)); var result = await controller.Get(1, 2); Assert.NotNull(result); Assert.IsType <NotFoundResult>(result); }
public void Handle_Always_ShouldDecreaseMetrics() { var serverDelta = 2.0f; var animal = AnimalBuilder.NewInstance() .AddMetric(new Happiness(0.0f, 1.0f)) .AddMetric(new Hunger(0.0f, -1.0f)) .Build(); var tickEvent = new GameServerEvents.TickEvent { DeltaTime = serverDelta }; animal.Handle(tickEvent); Assert.Equal(-2.0f, animal.Metrics[MetricType.Happiness].Value); Assert.Equal(2.0f, animal.Metrics[MetricType.Hunger].Value); animal.Handle(tickEvent); Assert.Equal(-4.0f, animal.Metrics[MetricType.Happiness].Value); Assert.Equal(4.0f, animal.Metrics[MetricType.Hunger].Value); }
public async Task Feed_WhenAnimalNotFound_ShouldReturnBadRequest() { var animal = AnimalBuilder.NewInstance() .WithId(1) .WithCode(1) .Build(); var user = UserBuilder.NewInstance() .WithId(1) .WithUsername("fakeuser") .AddAnimal(animal) .Build(); var controller = GetUserAnimalsController(); A.CallTo(() => _userRepository.GetByIdAsync(A <int> ._)).Returns(Task.FromResult <User>(user)); var result = await controller.Feed(1, new UserCommands.Feed { AnimalId = 2 }); Assert.NotNull(result); Assert.IsType <BadRequestObjectResult>(result); }
public async Task Stroke_WhenUserAndAnimalFound_ShouldReturnOkResult() { var animal = AnimalBuilder.NewInstance() .WithId(1) .WithCode(1) .AddMetric(new Happiness(0.0f, 1.0f)) .Build(); var user = UserBuilder.NewInstance() .WithId(1) .WithUsername("fakeuser") .AddAnimal(animal) .Build(); var controller = GetUserAnimalsController(); A.CallTo(() => _userRepository.GetByIdAsync(A <int> ._)).Returns(Task.FromResult <User>(user)); var result = await controller.Stroke(1, new UserCommands.Stroke { AnimalId = 1 }); Assert.NotNull(result); Assert.IsType <OkResult>(result); }
public async Task GetAll_WhenUserFound_ShouldReturnUserAnimals() { var animal = AnimalBuilder.NewInstance() .WithId(1) .WithCode(2) .Build(); var user = UserBuilder.NewInstance() .WithId(1) .WithUsername("fakeuser") .AddAnimal(animal) .Build(); var controller = GetUserAnimalsController(); A.CallTo(() => _userRepository.GetByIdAsync(A <int> ._)).Returns(Task.FromResult <User>(user)); var result = await controller.GetAll(1); Assert.NotNull(result); var userAnimalsResult = Assert.IsType <OkObjectResult>(result); var animals = Assert.IsType <List <Animal> >(userAnimalsResult.Value); Assert.Single(animals); Assert.Same(animal, animals[0]); }
public async Task Feed_WhenAnimalStatNotFound_ShouldReturnInternalServerError() { var animal = AnimalBuilder.NewInstance() .WithId(1) .WithCode(2) .Build(); var user = UserBuilder.NewInstance() .WithId(1) .WithUsername("fakeuser") .AddAnimal(animal) .Build(); var controller = GetUserAnimalsController(); A.CallTo(() => _userRepository.GetByIdAsync(A <int> ._)).Returns(Task.FromResult <User>(user)); var result = await controller.Feed(1, new UserCommands.Feed { AnimalId = 1 }); Assert.NotNull(result); var statusCodeResult = Assert.IsType <ObjectResult>(result); Assert.Equal(StatusCodes.Status500InternalServerError, statusCodeResult.StatusCode); }