public async Task AddImageToBicycle()
        {
            var options        = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase("add_image").Options;
            var dbContext      = new ApplicationDbContext(options);
            var imageService   = new ImageService(dbContext);
            var bicycleService = new BicycleService(dbContext, imageService);

            AutoMapperConfig.RegisterMappings(typeof(BicycleViewModel).Assembly, typeof(Bicycle).Assembly);
            AutoMapperConfig.RegisterMappings(typeof(EditBicycleViewModel).Assembly, typeof(Bicycle).Assembly);

            var addBycicle1 = new AddBycicleViewModel()
            {
                Type         = BicycleType.Mountain,
                Made         = "Something",
                Speeds       = 21,
                Size         = BicycleSize.M,
                SizeOfTires  = 21,
                PriceForHour = 21,
                Description  = "Something",
            };

            var imagePath     = "Test";
            var addedBycicle1 = await bicycleService.AddVehicle <AddBycicleViewModel>(addBycicle1);

            await bicycleService.AddImageUrls(addedBycicle1, imagePath);

            var bycicles = bicycleService.GetAll <BicycleViewModel>(false);
            var result   = bicycleService.EditDetails <BicycleViewModel>(addedBycicle1);

            Assert.Equal(imagePath, result.ImageUrl);
        }
        public async Task DeleteBicycle()
        {
            var options        = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase("delete_bicycle").Options;
            var dbContext      = new ApplicationDbContext(options);
            var imageService   = new ImageService(dbContext);
            var bicycleService = new BicycleService(dbContext, imageService);

            AutoMapperConfig.RegisterMappings(typeof(BicycleViewModel).Assembly, typeof(Bicycle).Assembly);

            var addBycicle1 = new AddBycicleViewModel()
            {
                Type         = BicycleType.Mountain,
                Made         = "Something",
                Speeds       = 21,
                Size         = BicycleSize.M,
                SizeOfTires  = 21,
                PriceForHour = 21,
                Description  = "Something",
            };

            var addBycicle2 = new AddBycicleViewModel()
            {
                Type         = BicycleType.Mountain,
                Made         = "Something2",
                Speeds       = 21,
                Size         = BicycleSize.M,
                SizeOfTires  = 21,
                PriceForHour = 21,
                Description  = "Something",
            };

            var addBycicle3 = new AddBycicleViewModel()
            {
                Type         = BicycleType.Mountain,
                Made         = "Something3",
                Speeds       = 21,
                Size         = BicycleSize.M,
                SizeOfTires  = 21,
                PriceForHour = 21,
                Description  = "Something",
            };

            var addedBycicle1 = await bicycleService.AddVehicle <AddBycicleViewModel>(addBycicle1);

            var addedBycicle2 = await bicycleService.AddVehicle <AddBycicleViewModel>(addBycicle2);

            var addedBycicle3 = await bicycleService.AddVehicle <AddBycicleViewModel>(addBycicle3);

            await bicycleService.Delete(addedBycicle2);

            var bycicles = bicycleService.GetAll <BicycleViewModel>(false);

            Assert.Equal(2, bycicles.ToList().Count);
        }
        public async Task <IActionResult> Add(AddBycicleViewModel input)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View());
            }

            var bicycleId = await this.bicycleService.AddVehicle <AddBycicleViewModel>(input);

            if (input.Image != null)
            {
                await this.imageService.UploadImage(input.Image, string.Format(GlobalConstants.IMAGEPATH, IMAGE, bicycleId));

                await this.bicycleService.AddImageUrls(bicycleId, string.Format(GlobalConstants.IMAGEPATH, IMAGE, bicycleId));
            }

            return(this.Redirect(string.Format(ALLPATH, input.Type)));
        }
        public async Task EditVechicleShouldEdit()
        {
            var options        = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase("Edit_tests").Options;
            var dbContext      = new ApplicationDbContext(options);
            var imageService   = new ImageService(dbContext);
            var bicycleService = new BicycleService(dbContext, imageService);

            AutoMapperConfig.RegisterMappings(typeof(EditBicycleViewModel).Assembly, typeof(Bicycle).Assembly);

            var addBycicle = new AddBycicleViewModel()
            {
                Type         = BicycleType.Mountain,
                Made         = "Something",
                Speeds       = 21,
                Size         = BicycleSize.M,
                SizeOfTires  = 21,
                PriceForHour = 21,
                Description  = "Something",
            };

            var addedBycicle = await bicycleService.AddVehicle <AddBycicleViewModel>(addBycicle);

            var editBycicle = new EditBicycleViewModel()
            {
                Id           = addedBycicle,
                Type         = BicycleType.Mountain,
                Made         = "Edited",
                Speeds       = 21,
                Size         = BicycleSize.M,
                SizeOfTires  = 21,
                PriceForHour = 21,
                Description  = "Something",
            };

            await bicycleService.DoEdit <EditBicycleViewModel>(editBycicle);

            var editedBycicle = bicycleService.EditDetails <EditBicycleViewModel>(addedBycicle);

            Assert.Equal("Edited", editedBycicle.Made);
        }
        public async Task AddBicycleTests()
        {
            var options        = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase("Database_For_Tests").Options;
            var dbContext      = new ApplicationDbContext(options);
            var imageService   = new ImageService(dbContext);
            var bicycleService = new BicycleService(dbContext, imageService);

            var model = new AddBycicleViewModel()
            {
                Type         = BicycleType.Mountain,
                Made         = "Something",
                Speeds       = 21,
                Size         = BicycleSize.M,
                SizeOfTires  = 21,
                PriceForHour = 21,
                Description  = "Something",
            };

            var bicycle = await bicycleService.AddVehicle <AddBycicleViewModel>(model);

            Assert.Equal(1, bicycle);
        }