using System; using System.Collections.Generic; using System.Linq; using System.Text; using Chefbook.DataObjects; using NUnit.Framework; using Rhino.Mocks; using Chefbook.UserActions; using Chefbook.ViewModels; namespace UnitTests.UserActionsTests { [TestFixture] public class DeleteRecipeActionFixture { private MockRepository mocks; private IUserAction action; private CategoryViewModel category1, category2; private RecipeViewModel recipe; [SetUp] public void Init() { mocks = new MockRepository(); category1 = new CategoryViewModel(new Category(null)) { Name = "root" }; category2 = new CategoryViewModel(new Category(category1.CategoryModel)); recipe = new RecipeViewModel(new Recipe(category1.CategoryModel)) { Name = "MyRecipe" }; category2.AddRecipe(recipe); Assert.Contains(category1, recipe.Categories); Assert.Contains(recipe, category1.Recipes); Assert.Contains(category2, recipe.Categories); Assert.Contains(recipe, category2.Recipes); action = new DeleteRecipeAction(recipe) ; } [Test] public void DoActionTest() { action.DoAction(); Assert.False(recipe.Categories.Contains(category1), "recipe.Categories.Contains(category1)"); Assert.False(category1.Recipes.Contains(recipe), "category1.Recipes.Contains(recipe)"); Assert.False(recipe.Categories.Contains(category2), "recipe.Categories.Contains(category2)"); Assert.False(category2.Recipes.Contains(recipe), "category2.Recipes.Contains(recipe)"); } [Test] public void UndoActionTest() { action.DoAction(); action.UndoAction(); Assert.Contains(category1, recipe.Categories); Assert.Contains(recipe, category1.Recipes); Assert.Contains(category2, recipe.Categories); Assert.Contains(recipe, category2.Recipes); } [Test] public void UndoActionWithoutDoingTest() { UserActionTestsHelper.UndoActionWithoutDoingTest(action); } [Test] public void UndoActionTwiceAfterDoingTest() { UserActionTestsHelper.UndoActionTwiceAfterDoingTest(action); } [Test] public void DoActionTwiceTest() { UserActionTestsHelper.DoActionTwiceTest(action); } [Test] public void ActionNameTest() { Assert.AreEqual(string.Format("Delete Recipe '{0}'", recipe), action.ToString()); } } }