Added example .gitignore from here: https://github.com/github/gitignore
Quick run-through making things use my naming conventions and 'var' when possible
More simple ReSharper refactorings, this time on the tests.
Inline 'directoryInfo' variable, preparing to extract method.
Extract code that crawls a directory to get all the recipe to a method named FS_GetAllRecipies()
Introduce variable for the name of the recipe to delete, preparing for extract method.
Extracted code for deleting recipe to a method named 'FS_DeleteRecipeNamed'
Created variables for the name and directions of an about to be created recipe, preparing for extract method.
Extract code for creating a new recipe file to a method named 'FS_CreateRecipe'
Extracted all 'FS' methods to a new class named 'FileSystemRecipeStore'
Renamed all methods on the FileSystemRecipeStore to remove the 'FS_' prefix
Extracted an IRecipeStore interface from the FileSystemRecipeStore
Sorting out the Form1 reference to the RecipeStore. Now uses the interface type, and is an auto-property named 'RecipeStore'
Renamed 'Tests.cs' to 'RecipeStoreTests.cs'
Added FluentAssertions for the test code.
Created default implementation of InMemoryRecipeStore.cs and wrote first test.
GatAllRecipes_WithNoRecipes_ReturnsEmpty now passes.
Renamed 'CreateRecipe' to 'AddRecipe'.
Created failing 'GetAllRecipies_AfterRecipeAdded_ReturnsSingleRecipe' test.
Created local list of Recipes in InMemoryRecipeStore that is accessed through GetAllRecipies and added to through AddRecipe.
GetAllRecipies_AfterRecipeAdded_ReturnsSingleRecipe now passes.
'GetAllRecipes_AfterRecipeAdded_ReturnsSingleRecipe' changed to 'GetAllRecipes_AfterRecipesAdded_ReturnsRecipes' to prove that multiple recipes are handled.
Implemented CreateRecipe helper function for the test.
Created failing 'GetAllRecipies_AfterRecipesDeleted_ReturnsRemainingRecipes' test
DeleteRecipeNamed now searches for a recipe in that matches the name and removes it from the internal recipe list.
Created RecipeStoreException class for implementations of IRecipeStore can throw.
Created failing DeleteRecipeNamed_WithNoRecipeOfThatName_ThrowsException test