예제 #1
0
        public async void Update_ErrorsOccurred_ShouldReturnErrorResponse()
        {
            var mock          = new ServiceMockFacade <IBreedService, IBreedRepository>();
            var model         = new ApiBreedServerRequestModel();
            var validatorMock = new Mock <IApiBreedServerRequestModelValidator>();

            validatorMock.Setup(x => x.ValidateUpdateAsync(It.IsAny <int>(), It.IsAny <ApiBreedServerRequestModel>())).Returns(Task.FromResult(new ValidationResult(new List <ValidationFailure>()
            {
                new ValidationFailure("text", "test")
            })));
            mock.RepositoryMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult(new Breed()));
            var service = new BreedService(mock.LoggerMock.Object,
                                           mock.MediatorMock.Object,
                                           mock.RepositoryMock.Object,
                                           validatorMock.Object,
                                           mock.DALMapperMockFactory.DALBreedMapperMock,
                                           mock.DALMapperMockFactory.DALPetMapperMock);

            UpdateResponse <ApiBreedServerResponseModel> response = await service.Update(default(int), model);

            response.Should().NotBeNull();
            response.Success.Should().BeFalse();
            validatorMock.Verify(x => x.ValidateUpdateAsync(It.IsAny <int>(), It.IsAny <ApiBreedServerRequestModel>()));
            mock.MediatorMock.Verify(x => x.Publish(It.IsAny <BreedUpdatedNotification>(), It.IsAny <CancellationToken>()), Times.Never());
        }
예제 #2
0
        public static void Main()
        {
            using var data = new PetStoreDbContext();

            var userService  = new UserSerice(data);
            var breedService = new BreedService(data);

            var categoryService = new CategoryService(data);
            var petService      = new PetService(data, breedService, categoryService, userService);

            petService.BuyPet(Data.Models.Gender.Male, DateTime.Now, 0m, null, 1, 1);
            petService.SellPet(1, 1);
        }
예제 #3
0
        public static void Main()
        {
            using var data = new PetStoreDbContext();

            var userService     = new UserService(data);
            var toyServie       = new ToyService(data, userService);
            var breedService    = new BreedService(data);
            var categoryService = new CategoryService(data);

            var petService = new PetService(data, breedService, categoryService, userService);

            //petService.BuyPet(Data.Models.Enumerations.Gender.Male, DateTime.Now, 35.5m, 1, 3, "Cute");
            petService.SellPet(1, 1);
        }
예제 #4
0
        private static void SeedData(PetStoreDbContext data)
        {
            var breedService = new BreedService(data);

            for (int i = 1; i < 10; i++)
            {
                breedService.Add("Breed " + i);
            }

            var categoryService = new CategoryService(data);

            for (int i = 1; i < 10; i++)
            {
                categoryService.Create("Category " + i);
            }

            var petService = new PetService(data, breedService, categoryService);

            for (int i = 0; i < 50; i++)
            {
                var breedId = data.Breeds
                              .OrderBy(b => Guid.NewGuid())
                              .Select(b => b.Id)
                              .FirstOrDefault();
                var categoryId = data.Categories
                                 .OrderBy(c => Guid.NewGuid())
                                 .Select(c => c.Id)
                                 .FirstOrDefault();

                petService.BuyPet(new Pet()
                {
                    BreedId     = breedId,
                    CategoryId  = categoryId,
                    DateOfBirth = DateTime.Now.AddDays(2 * i),
                    Gender      = (Gender)(i % 2),
                    Price       = 10 + 3 * i
                });
            }

            var brandService = new BrandService(data);

            for (int i = 1; i < 10; i++)
            {
                brandService.Add("Brand " + i);
            }

            data.SaveChanges();
        }
예제 #5
0
        public async void Get_ShouldReturnNullBecauseRecordNotFound()
        {
            var mock = new ServiceMockFacade <IBreedService, IBreedRepository>();

            mock.RepositoryMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult <Breed>(null));
            var service = new BreedService(mock.LoggerMock.Object,
                                           mock.MediatorMock.Object,
                                           mock.RepositoryMock.Object,
                                           mock.ModelValidatorMockFactory.BreedModelValidatorMock.Object,
                                           mock.DALMapperMockFactory.DALBreedMapperMock,
                                           mock.DALMapperMockFactory.DALPetMapperMock);

            ApiBreedServerResponseModel response = await service.Get(default(int));

            response.Should().BeNull();
            mock.RepositoryMock.Verify(x => x.Get(It.IsAny <int>()));
        }
예제 #6
0
        public async void PetsByBreedId_Not_Exists()
        {
            var mock = new ServiceMockFacade <IBreedService, IBreedRepository>();

            mock.RepositoryMock.Setup(x => x.PetsByBreedId(default(int), It.IsAny <int>(), It.IsAny <int>())).Returns(Task.FromResult <List <Pet> >(new List <Pet>()));
            var service = new BreedService(mock.LoggerMock.Object,
                                           mock.MediatorMock.Object,
                                           mock.RepositoryMock.Object,
                                           mock.ModelValidatorMockFactory.BreedModelValidatorMock.Object,
                                           mock.DALMapperMockFactory.DALBreedMapperMock,
                                           mock.DALMapperMockFactory.DALPetMapperMock);

            List <ApiPetServerResponseModel> response = await service.PetsByBreedId(default(int));

            response.Should().BeEmpty();
            mock.RepositoryMock.Verify(x => x.PetsByBreedId(default(int), It.IsAny <int>(), It.IsAny <int>()));
        }
예제 #7
0
        public static void Main(string[] args)
        {
            using var db = new PetStoreDbContext();

            var brandService = new BrandService(db);

            var categoryService = new CategoryService(db);

            var toyService = new ToyService(db);

            var foodService = new FoodService(db);

            var orderService = new OrderService(db);

            var userService = new UserService(db);

            var breedService = new BreedService(db);

            var petService = new PetService(db);


            //Pet seeder

            //for (int i = 0; i < 7; i++)
            //{
            //    string name = "Dragan" + " " + i;
            //    DateTime dateTime = new DateTime(2020 + i / 08 + i / 03 + i);
            //    decimal price = 20 + i;

            //    var pet = new Pet()
            //    {
            //        Name=name,
            //        Birthdate=dateTime,
            //        Gender=AnimalGender.Female,
            //        Price=price,
            //        BreedId=2,
            //        CategoryId=1,
            //        OrderId=7
            //    };

            //    db.Pets.Add(pet);

            //    db.SaveChanges();
            //}
        }
예제 #8
0
        public async void Get()
        {
            var mock   = new ServiceMockFacade <IBreedRepository>();
            var record = new Breed();

            mock.RepositoryMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult(record));
            var service = new BreedService(mock.LoggerMock.Object,
                                           mock.RepositoryMock.Object,
                                           mock.ModelValidatorMockFactory.BreedModelValidatorMock.Object,
                                           mock.BOLMapperMockFactory.BOLBreedMapperMock,
                                           mock.DALMapperMockFactory.DALBreedMapperMock,
                                           mock.BOLMapperMockFactory.BOLPetMapperMock,
                                           mock.DALMapperMockFactory.DALPetMapperMock);

            ApiBreedResponseModel response = await service.Get(default(int));

            response.Should().NotBeNull();
            mock.RepositoryMock.Verify(x => x.Get(It.IsAny <int>()));
        }
예제 #9
0
        public async void All_ShouldReturnRecords()
        {
            var mock    = new ServiceMockFacade <IBreedService, IBreedRepository>();
            var records = new List <Breed>();

            records.Add(new Breed());
            mock.RepositoryMock.Setup(x => x.All(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <string>())).Returns(Task.FromResult(records));
            var service = new BreedService(mock.LoggerMock.Object,
                                           mock.MediatorMock.Object,
                                           mock.RepositoryMock.Object,
                                           mock.ModelValidatorMockFactory.BreedModelValidatorMock.Object,
                                           mock.DALMapperMockFactory.DALBreedMapperMock,
                                           mock.DALMapperMockFactory.DALPetMapperMock);

            List <ApiBreedServerResponseModel> response = await service.All();

            response.Should().HaveCount(1);
            mock.RepositoryMock.Verify(x => x.All(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <string>()));
        }
예제 #10
0
        public async void BySpeciesId_Exists()
        {
            var mock    = new ServiceMockFacade <IBreedService, IBreedRepository>();
            var records = new List <Breed>();

            records.Add(new Breed());
            mock.RepositoryMock.Setup(x => x.BySpeciesId(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>())).Returns(Task.FromResult(records));
            var service = new BreedService(mock.LoggerMock.Object,
                                           mock.MediatorMock.Object,
                                           mock.RepositoryMock.Object,
                                           mock.ModelValidatorMockFactory.BreedModelValidatorMock.Object,
                                           mock.DALMapperMockFactory.DALBreedMapperMock,
                                           mock.DALMapperMockFactory.DALPetMapperMock);

            List <ApiBreedServerResponseModel> response = await service.BySpeciesId(default(int));

            response.Should().NotBeEmpty();
            mock.RepositoryMock.Verify(x => x.BySpeciesId(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>()));
        }
예제 #11
0
        public async void Create()
        {
            var mock  = new ServiceMockFacade <IBreedRepository>();
            var model = new ApiBreedRequestModel();

            mock.RepositoryMock.Setup(x => x.Create(It.IsAny <Breed>())).Returns(Task.FromResult(new Breed()));
            var service = new BreedService(mock.LoggerMock.Object,
                                           mock.RepositoryMock.Object,
                                           mock.ModelValidatorMockFactory.BreedModelValidatorMock.Object,
                                           mock.BOLMapperMockFactory.BOLBreedMapperMock,
                                           mock.DALMapperMockFactory.DALBreedMapperMock,
                                           mock.BOLMapperMockFactory.BOLPetMapperMock,
                                           mock.DALMapperMockFactory.DALPetMapperMock);

            CreateResponse <ApiBreedResponseModel> response = await service.Create(model);

            response.Should().NotBeNull();
            mock.ModelValidatorMockFactory.BreedModelValidatorMock.Verify(x => x.ValidateCreateAsync(It.IsAny <ApiBreedRequestModel>()));
            mock.RepositoryMock.Verify(x => x.Create(It.IsAny <Breed>()));
        }
예제 #12
0
        public async void Delete()
        {
            var mock  = new ServiceMockFacade <IBreedRepository>();
            var model = new ApiBreedRequestModel();

            mock.RepositoryMock.Setup(x => x.Delete(It.IsAny <int>())).Returns(Task.CompletedTask);
            var service = new BreedService(mock.LoggerMock.Object,
                                           mock.RepositoryMock.Object,
                                           mock.ModelValidatorMockFactory.BreedModelValidatorMock.Object,
                                           mock.BOLMapperMockFactory.BOLBreedMapperMock,
                                           mock.DALMapperMockFactory.DALBreedMapperMock,
                                           mock.BOLMapperMockFactory.BOLPetMapperMock,
                                           mock.DALMapperMockFactory.DALPetMapperMock);

            ActionResponse response = await service.Delete(default(int));

            response.Should().NotBeNull();
            mock.RepositoryMock.Verify(x => x.Delete(It.IsAny <int>()));
            mock.ModelValidatorMockFactory.BreedModelValidatorMock.Verify(x => x.ValidateDeleteAsync(It.IsAny <int>()));
        }
예제 #13
0
        public async void Delete_NoErrorsOccurred_ShouldReturnResponse()
        {
            var mock  = new ServiceMockFacade <IBreedService, IBreedRepository>();
            var model = new ApiBreedServerRequestModel();

            mock.RepositoryMock.Setup(x => x.Delete(It.IsAny <int>())).Returns(Task.CompletedTask);
            var service = new BreedService(mock.LoggerMock.Object,
                                           mock.MediatorMock.Object,
                                           mock.RepositoryMock.Object,
                                           mock.ModelValidatorMockFactory.BreedModelValidatorMock.Object,
                                           mock.DALMapperMockFactory.DALBreedMapperMock,
                                           mock.DALMapperMockFactory.DALPetMapperMock);

            ActionResponse response = await service.Delete(default(int));

            response.Should().NotBeNull();
            response.Success.Should().BeTrue();
            mock.RepositoryMock.Verify(x => x.Delete(It.IsAny <int>()));
            mock.ModelValidatorMockFactory.BreedModelValidatorMock.Verify(x => x.ValidateDeleteAsync(It.IsAny <int>()));
            mock.MediatorMock.Verify(x => x.Publish(It.IsAny <BreedDeletedNotification>(), It.IsAny <CancellationToken>()));
        }
예제 #14
0
        public static void Main()
        {
            using var data = new PetStoreDbContext();

            data.Database.Migrate();

            // Services
            var brandService    = new BrandService(data);
            var breedService    = new BreedService(data);
            var categoryService = new CategoryService(data);
            var userService     = new UserService(data);
            var foodService     = new FoodService(data, userService);
            var petService      = new PetService(data, categoryService, breedService, userService);
            var toyService      = new ToyService(data, userService);

            brandService.Create("Whiskas");
            brandService.Create("9Lives");
            brandService.Create("Friskies");
            brandService.Create("Halo");

            breedService.Add("Abyssian");
            breedService.Add("Birman");
            breedService.Add("Bengal");
            breedService.Add("Chartreux");

            categoryService.Add("Cat", "A cat is some cute animal");
            categoryService.Add("Dog", "The dog is another cute animal");
            categoryService.Add("Whale");
            categoryService.Add("Parrot");

            foodService.BuyFromDistributor("Meaty Bits", 156, 2, 3.50m,
                                           DateTime.Now.AddDays(30),
                                           brandService.GetIdByName("Friskies"),
                                           categoryService.GetIdByName("Cat"));

            foodService.BuyFromDistributor("Meaty Nuggets", 400, 3, 5.75m,
                                           DateTime.Now.AddDays(60),
                                           brandService.GetIdByName("Whiskas"),
                                           categoryService.GetIdByName("Cat"));

            foodService.BuyFromDistributor("Hearty Cuts", 168, 3, 1.75m,
                                           DateTime.Now.AddDays(42),
                                           brandService.GetIdByName("9Lives"),
                                           categoryService.GetIdByName("Cat"));

            foodService.BuyFromDistributor("Holistic Chicken", 149, 2, 2.75m,
                                           DateTime.Now.AddDays(15),
                                           brandService.GetIdByName("Halo"),
                                           categoryService.GetIdByName("Cat"));

            userService.Register("Atanas Kolev", "*****@*****.**");
            userService.Register("Daniel Ivanov", "*****@*****.**");
            userService.Register("Georgi Petrov", "*****@*****.**");
            userService.Register("Ivan Panagonov", "*****@*****.**");

            foodService.SellFoodToUser(foodService.GetIdByName("Meaty Bits"),
                                       userService.GetIdByName("Atanas Kolev"));

            foodService.SellFoodToUser(foodService.GetIdByName("Meaty Nuggets"),
                                       userService.GetIdByName("Daniel Ivanov"));

            foodService.SellFoodToUser(foodService.GetIdByName("Hearty Cuts"),
                                       userService.GetIdByName("Georgi Petrov"));

            foodService.SellFoodToUser(foodService.GetIdByName("Holistic Chicken"),
                                       userService.GetIdByName("Ivan Panagonov"));

            petService.BuyPet(Gender.Male, DateTime.Now.AddDays(-90), 350, "",
                              breedService.GetIdByName("Abyssian"), categoryService.GetIdByName("Cat"));

            petService.BuyPet(Gender.Female, DateTime.Now.AddDays(-476), 400, "Female cat...",
                              breedService.GetIdByName("Birman"), categoryService.GetIdByName("Cat"));

            petService.BuyPet(Gender.Female, DateTime.Now.AddDays(-90), 350, "Another female cat",
                              breedService.GetIdByName("Bengal"), categoryService.GetIdByName("Cat"));

            petService.BuyPet(Gender.Male, DateTime.Now.AddDays(-841), 982, "",
                              breedService.GetIdByName("Chartreux"), categoryService.GetIdByName("Cat"));

            toyService.BuyFromDistributor("Truck", "", 3.50m, 2,
                                          brandService.GetIdByName("Whiskas"),
                                          categoryService.GetIdByName("Cat"));

            toyService.BuyFromDistributor("Car", "", 2.50m, 4,
                                          brandService.GetIdByName("9Lives"),
                                          categoryService.GetIdByName("Cat"));

            toyService.BuyFromDistributor("Bear", "", 5.50m, 3,
                                          brandService.GetIdByName("Friskies"),
                                          categoryService.GetIdByName("Cat"));

            toyService.BuyFromDistributor("Ball", "", 3.50m, 4,
                                          brandService.GetIdByName("Halo"),
                                          categoryService.GetIdByName("Cat"));

            toyService.SellToyToUser(toyService.GetIdByName("Truck"), userService.GetIdByName("Atanas Kolev"));
            toyService.SellToyToUser(toyService.GetIdByName("Car"), userService.GetIdByName("Atanas Kolev"));
            toyService.SellToyToUser(toyService.GetIdByName("Bear"), userService.GetIdByName("Daniel Ivanov"));
            toyService.SellToyToUser(toyService.GetIdByName("Ball"), userService.GetIdByName("Georgi Petrov"));
        }
예제 #15
0
 public BreedController(BreedService breedService)
 {
     _breedService = breedService;
 }
예제 #16
0
 public BreedsController(BreedService breedService)
 {
     this._breedService = breedService;
 }