Ejemplo n.º 1
0
        public void CreateRecipeTest()
        {
            // Arrange
            var recipeData = new Recipe {
                Id = 1, Description = "Description 1"
            };
            var recipeVersionData = new RecipeVersion {
                Id = 1, RecipeId = null, Description = "Description 1"
            };

            int callCount = 0;

            var recipeRepository = A.Fake <IRepository <Recipe, long> >();

            A.CallTo(() => recipeRepository.InsertAsync(A <Recipe> .Ignored)).Returns(recipeData);
            A.CallTo(() => recipeRepository.SaveChangeAsync()).Invokes(c => callCount++);

            var recipeVersionRepository = A.Fake <IRepository <RecipeVersion, long> >();

            A.CallTo(() => recipeVersionRepository.InsertAsync(A <RecipeVersion> .Ignored)).Returns(recipeVersionData);
            A.CallTo(() => recipeVersionRepository.SaveChangeAsync()).Invokes(c => callCount++);

            var service = new RecipeService(recipeRepository, recipeVersionRepository);

            // Act
            var recipeDto = service.Create(new CreateRecipeInput()).Result;

            // Assert
            Assert.Equal(recipeData.Description, recipeDto.Description);
            Assert.Equal(2, callCount);
        }
Ejemplo n.º 2
0
        public async Task Edit()
        {
            const string title = "Title", description = "Description";
            Guid         id;
            var          options = new DbContextOptionsBuilder <ApplicationDbContext>()
                                   .UseInMemoryDatabase("Edit")
                                   .Options;

            using (var context = new ApplicationDbContext(options))
            {
                var recipe = new Recipe
                {
                    RecipeVersions = new List <RecipeVersion>
                    {
                        new RecipeVersion {
                            Title = title, Description = description
                        }
                    }
                };
                context.Recipes.Add(recipe);
                await context.SaveChangesAsync();

                id = recipe.Id;
            }

            using (var context = new ApplicationDbContext(options))
            {
                var recipeService = new RecipeService(context);
                var recipeVersion = new RecipeVersion
                {
                    RecipeId    = id,
                    Title       = title,
                    Description = description
                };
                var recipe = await context.Recipes
                             .Include(x => x.RecipeVersions).SingleOrDefaultAsync(x => x.Id == id);

                recipe.RecipeVersions.Add(recipeVersion);
                await recipeService.Edit(recipe);
            }

            using (var context = new ApplicationDbContext(options))
            {
                var recipe = await context.Recipes.Include(x => x.RecipeVersions).SingleOrDefaultAsync(x => x.Id == id);

                Assert.NotNull(recipe);
                Assert.IsType <Recipe>(recipe);
                Assert.Equal(2, recipe.RecipeVersions.Count);

                var recipeVersion = recipe.RecipeVersions.First();

                Assert.IsType <RecipeVersion>(recipeVersion);
                Assert.Equal(title, recipeVersion.Title);
                Assert.Equal(description, recipeVersion.Description);
            }
        }
Ejemplo n.º 3
0
        public async Task <IHttpActionResult> PostRecipeVersion(int recipeId, RecipeVersion recipeVersion)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            await _repository.PostRecipeVersion(recipeId, recipeVersion);

            return(CreatedAtRoute("DefaultApi", new { id = recipeVersion.VersionId }, recipeVersion));
        }
Ejemplo n.º 4
0
        public async Task PostRecipeVersion(int recipeId, RecipeVersion recipeVersion)
        {
            RecipeVersion version = new RecipeVersion
            {
                RecipeId     = recipeId,
                Name         = recipeVersion.Name,
                Description  = recipeVersion.Description,
                Ingredients  = recipeVersion.Ingredients,
                Directions   = recipeVersion.Directions,
                Type         = recipeVersion.Type,
                ImageLink    = recipeVersion.ImageLink,
                DateModified = DateTime.Now,
                DateCreated  = recipeVersion.DateCreated,
                Notes        = recipeVersion.Notes
            };

            db.RecipeVersions.Add(version);

            await db.SaveChangesAsync();
        }