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);
        }
Example #2
0
 //assembly process to build an animal object
 public void MakeAnimal(AnimalBuilder aAnimalBuilder)
 {
     aAnimalBuilder.BuildAnimalHeader();
     aAnimalBuilder.BuildAnimalBody();
     aAnimalBuilder.BuildAnimalLeg();
     aAnimalBuilder.BuildAnimalArm();
     aAnimalBuilder.BuildAnimalTail();
 }
Example #3
0
 //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();
 }
Example #4
0
        public void CheckPolymorphicism()
        {
            var zebbie = new AnimalBuilder()
                         .WithType(typeof(Zebra))
                         .WithName("Zebbie")
                         .Build();

            zebbie.PublicMakeNoise();
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #8
0
        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);
        }