예제 #1
0
        public void Test_AddRecipie_AddsRecipieToTag()
        {
            //Arrange
            Tag testTag = new Tag("Name");

            testTag.Save();

            Recipie testRecipie = new Recipie("Object name");

            testRecipie.Save();

            Recipie testRecipie2 = new Recipie("Other object name");

            testRecipie2.Save();

            //Act
            testTag.AddRecipie(testRecipie);
            testTag.AddRecipie(testRecipie2);

            List <Recipie> result   = testTag.GetRecipies();
            List <Recipie> testList = new List <Recipie> {
                testRecipie, testRecipie2
            };

            //Assert
            Assert.Equal(testList, result);
        }
예제 #2
0
 public void Dispose()
 {
     Instruction.DeleteAll();
     Recipie.DeleteAll();
     Tag.DeleteAll();
     Ingredient.DeleteAll();
 }
예제 #3
0
        public void Test_GetRecipies_ReturnsAllTagRecipies()
        {
            //Arrange
            Tag testTag = new Tag("Name");

            testTag.Save();

            Recipie testRecipie1 = new Recipie("Object name");

            testRecipie1.Save();

            Recipie testRecipie2 = new Recipie("Other object name");

            testRecipie2.Save();

            //Act
            testTag.AddRecipie(testRecipie1);
            List <Recipie> savedRecipies = testTag.GetRecipies();
            List <Recipie> testList      = new List <Recipie> {
                testRecipie1
            };

            //Assert
            Assert.Equal(testList, savedRecipies);
        }
예제 #4
0
        public void AddRecipie(Recipie newRecipie)
        {
            SqlConnection conn = DB.Connection();

            conn.Open();

            SqlCommand cmd = new SqlCommand("INSERT INTO recipies_tags (tag_id, recipie_id) VALUES (@TagId, @RecipieId);", conn);

            SqlParameter tagIdParameter = new SqlParameter();

            tagIdParameter.ParameterName = "@TagId";
            tagIdParameter.Value         = this.GetId();
            cmd.Parameters.Add(tagIdParameter);

            SqlParameter recipieIdParameter = new SqlParameter();

            recipieIdParameter.ParameterName = "@RecipieId";
            recipieIdParameter.Value         = newRecipie.GetId();
            cmd.Parameters.Add(recipieIdParameter);

            cmd.ExecuteNonQuery();

            if (conn != null)
            {
                conn.Close();
            }
        }
예제 #5
0
        public static List <Recipie> GetAll()
        {
            List <Recipie> AllRecipies = new List <Recipie> {
            };

            SqlConnection conn = DB.Connection();

            conn.Open();

            SqlCommand    cmd = new SqlCommand("SELECT * FROM recipies ORDER BY rating DESC;", conn);
            SqlDataReader rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                int     recipieId   = rdr.GetInt32(0);
                string  recipieName = rdr.GetString(1);
                int     rating      = rdr.GetInt32(2);
                Recipie newRecipie  = new Recipie(recipieName, rating, recipieId);
                AllRecipies.Add(newRecipie);
            }
            if (rdr != null)
            {
                rdr.Close();
            }
            if (conn != null)
            {
                conn.Close();
            }
            return(AllRecipies);
        }
예제 #6
0
        public void Test_GetTags_ReturnsAllRecipieTags()
        {
            //Arrange
            Recipie testRecipie = new Recipie("Name");

            testRecipie.Save();

            Tag testTag1 = new Tag("Other object name");

            testTag1.Save();

            Tag testTag2 = new Tag("Another object name");

            testTag2.Save();

            //Act
            testRecipie.AddTag(testTag1);
            List <Tag> result   = testRecipie.GetTags();
            List <Tag> testList = new List <Tag> {
                testTag1
            };

            //Assert
            Assert.Equal(testList, result);
        }
예제 #7
0
        public void Test_EmptyAtFirst()
        {
            //Arrange, Act
            int result = Recipie.GetAll().Count;

            //Assert
            Assert.Equal(0, result);
        }
예제 #8
0
        public void Test_EqualOverrideTrueForSameName()
        {
            //Arrange, Act
            Recipie firstRecipie  = new Recipie("Name");
            Recipie secondRecipie = new Recipie("Name");

            //Assert
            Assert.Equal(firstRecipie, secondRecipie);
        }
예제 #9
0
        public void Test_Update_UpdatesInDb()
        {
            Recipie testRecipie = new Recipie("Name", 0);

            testRecipie.Save();
            testRecipie.Update("Other name", 0);

            Recipie newRecipie = new Recipie("Other name", 0, testRecipie.GetId());

            Assert.Equal(testRecipie, newRecipie);
        }
예제 #10
0
        public void Test_FindFindsRecipieInDatabase()
        {
            //Arrange
            Recipie testRecipie = new Recipie("Name");

            testRecipie.Save();

            //Act
            Recipie result = Recipie.Find(testRecipie.GetId());

            //Assert
            Assert.Equal(testRecipie, result);
        }
예제 #11
0
 public override bool Equals(System.Object otherRecipie)
 {
     if (!(otherRecipie is Recipie))
     {
         return(false);
     }
     else
     {
         Recipie newRecipie     = (Recipie)otherRecipie;
         bool    idEquality     = this.GetId() == newRecipie.GetId();
         bool    nameEquality   = this.GetName() == newRecipie.GetName();
         bool    ratingEquality = this.GetRating() == newRecipie.GetRating();
         return(idEquality && nameEquality && ratingEquality);
     }
 }
예제 #12
0
        public void Test_SaveAssignsIdToObject()
        {
            //Arrange
            Recipie testRecipie = new Recipie("Name");

            testRecipie.Save();

            //Act
            Recipie savedRecipie = Recipie.GetAll()[0];

            int result = savedRecipie.GetId();
            int testId = testRecipie.GetId();

            //Assert
            Assert.Equal(testId, result);
        }
예제 #13
0
        public void Test_Save()
        {
            //Arrange
            Recipie testRecipie = new Recipie("Name");

            testRecipie.Save();

            //Act
            List <Recipie> result   = Recipie.GetAll();
            List <Recipie> testList = new List <Recipie> {
                testRecipie
            };

            //Assert
            Assert.Equal(testList, result);
        }
예제 #14
0
        public void Test_AddTag_AddsTagToRecipie()
        {
            //Arrange
            Recipie testRecipie = new Recipie("Name");

            testRecipie.Save();

            Tag testTag = new Tag("Other object name");

            testTag.Save();

            //Act
            testRecipie.AddTag(testTag);

            List <Tag> result   = testRecipie.GetTags();
            List <Tag> testList = new List <Tag> {
                testTag
            };

            //Assert
            Assert.Equal(testList, result);
        }
예제 #15
0
        public void Test_Delete_DeletesRecipieAssociationsFromDatabase()
        {
            //Arrange
            Tag testTag = new Tag("Other object name");

            testTag.Save();

            string  testName    = "Name";
            Recipie testRecipie = new Recipie(testName);

            testRecipie.Save();

            //Act
            testRecipie.AddTag(testTag);
            testRecipie.Delete();

            List <Recipie> resultTagRecipies = testTag.GetRecipies();
            List <Recipie> testTagRecipies   = new List <Recipie> {
            };

            //Assert
            Assert.Equal(testTagRecipies, resultTagRecipies);
        }
예제 #16
0
        public void Test_Delete_DeletesTagAssociationsFromDatabase()
        {
            //Arrange
            Recipie testRecipie = new Recipie("Object name");

            testRecipie.Save();

            string testName = "Name";
            Tag    testTag  = new Tag(testName);

            testTag.Save();

            //Act
            testTag.AddRecipie(testRecipie);
            testTag.Delete();

            List <Tag> resultRecipieTags = testRecipie.GetTags();
            List <Tag> testRecipieTags   = new List <Tag> {
            };

            //Assert
            Assert.Equal(testRecipieTags, resultRecipieTags);
        }
예제 #17
0
        public List <Recipie> GetRecipies()
        {
            SqlConnection conn = DB.Connection();

            conn.Open();

            SqlCommand cmd = new SqlCommand("SELECT recipies.* FROM tags JOIN recipies_tags ON (tags.id = recipies_tags.tag_id) JOIN recipies ON (recipies_tags.recipie_id = recipies.id) WHERE tags.id = @TagId;", conn);

            SqlParameter tagIdParameter = new SqlParameter();

            tagIdParameter.ParameterName = "@TagId";
            tagIdParameter.Value         = this.GetId();
            cmd.Parameters.Add(tagIdParameter);

            SqlDataReader rdr = cmd.ExecuteReader();

            List <Recipie> recipies = new List <Recipie> {
            };

            while (rdr.Read())
            {
                int     thisRecipieId      = rdr.GetInt32(0);
                string  recipieDescription = rdr.GetString(1);
                int     recipieRating      = rdr.GetInt32(2);
                Recipie foundRecipie       = new Recipie(recipieDescription, recipieRating, thisRecipieId);
                recipies.Add(foundRecipie);
            }
            if (rdr != null)
            {
                rdr.Close();
            }
            if (conn != null)
            {
                conn.Close();
            }
            return(recipies);
        }
예제 #18
0
        public void Test_GetInstructions_ReturnsAllRecipieInstructions()
        {
            //Arrange
            Recipie testRecipie = new Recipie("Pizza");

            testRecipie.Save();

            Instruction testInstruction1 = new Instruction("Cheese", testRecipie.GetId());

            testInstruction1.Save();

            Instruction testInstruction2 = new Instruction("Tomato", testRecipie.GetId());

            testInstruction2.Save();

            //Act
            List <Instruction> result   = testRecipie.GetInstructions();
            List <Instruction> testList = new List <Instruction> {
                testInstruction1, testInstruction2
            };

            //Assert
            Assert.Equal(testList, result);
        }
예제 #19
0
        public void Test_GetIngredients_ReturnsAllRecipieIngredients()
        {
            //Arrange
            Recipie testRecipie = new Recipie("Pizza");

            testRecipie.Save();

            Ingredient testIngredient1 = new Ingredient("Cheese", testRecipie.GetId());

            testIngredient1.Save();

            Ingredient testIngredient2 = new Ingredient("Tomato", testRecipie.GetId());

            testIngredient2.Save();

            //Act
            List <Ingredient> result   = testRecipie.GetIngredients();
            List <Ingredient> testList = new List <Ingredient> {
                testIngredient1, testIngredient2
            };

            //Assert
            Assert.Equal(testList, result);
        }
예제 #20
0
        public static Recipie Find(int id)
        {
            SqlConnection conn = DB.Connection();

            conn.Open();

            SqlCommand   cmd = new SqlCommand("SELECT * FROM recipies WHERE id = @RecipieId", conn);
            SqlParameter recipieIdParameter = new SqlParameter();

            recipieIdParameter.ParameterName = "@RecipieId";
            recipieIdParameter.Value         = id.ToString();
            cmd.Parameters.Add(recipieIdParameter);
            SqlDataReader rdr = cmd.ExecuteReader();

            int    foundRecipieId     = 0;
            string foundRecipieName   = null;
            int    foundRecipieRating = 0;

            while (rdr.Read())
            {
                foundRecipieId     = rdr.GetInt32(0);
                foundRecipieName   = rdr.GetString(1);
                foundRecipieRating = rdr.GetInt32(2);
            }
            Recipie foundRecipie = new Recipie(foundRecipieName, foundRecipieRating, foundRecipieId);

            if (rdr != null)
            {
                rdr.Close();
            }
            if (conn != null)
            {
                conn.Close();
            }
            return(foundRecipie);
        }
예제 #21
0
        public HomeModule()
        {
            Get["/"] = _ => {
                return(View["index.cshtml"]);
            };

            Get["/recipies"] = _ => {
                List <Recipie> AllRecipies = Recipie.GetAll();
                return(View["recipies.cshtml", AllRecipies]);
            };

            Get["/tags"] = _ => {
                List <Tag> AllTags = Tag.GetAll();
                return(View["tags.cshtml", AllTags]);
            };

            Get["/recipies/new"] = _ => {
                return(View["recipies_form.cshtml"]);
            };

            Post["/recipies/new"] = _ => {
                Recipie newRecipie = new Recipie(Request.Form["recipie-description"]);
                newRecipie.Save();
                return(View["success.cshtml"]);
            };

            Get["/tags/new"] = _ => {
                return(View["tags_form.cshtml"]);
            };

            Post["/tags/new"] = _ => {
                Tag newTag = new Tag(Request.Form["tag-name"]);
                newTag.Save();
                return(View["success.cshtml"]);
            };

            Get["recipies/{id}"] = parameters => {
                Dictionary <string, object> model      = new Dictionary <string, object>();
                Recipie            SelectedRecipie     = Recipie.Find(parameters.id);
                List <Tag>         RecipieTags         = SelectedRecipie.GetTags();
                List <Tag>         AllTags             = Tag.GetAll();
                List <Ingredient>  RecipieIngredients  = SelectedRecipie.GetIngredients();
                List <Instruction> RecipieInstructions = SelectedRecipie.GetInstructions();
                model.Add("recipie", SelectedRecipie);
                model.Add("recipieTags", RecipieTags);
                model.Add("allTags", AllTags);
                model.Add("recipieIngredients", RecipieIngredients);
                model.Add("recipieInstructions", RecipieInstructions);
                return(View["recipie.cshtml", model]);
            };

            Get["tags/{id}"] = parameters => {
                Dictionary <string, object> model = new Dictionary <string, object>();
                Tag            SelectedTag        = Tag.Find(parameters.id);
                List <Recipie> TagRecipies        = SelectedTag.GetRecipies();
                List <Recipie> AllRecipies        = Recipie.GetAll();
                model.Add("tag", SelectedTag);
                model.Add("tagRecipies", TagRecipies);
                model.Add("allRecipies", AllRecipies);
                return(View["tag.cshtml", model]);
            };

            Post["recipie/add_tag"] = _ => {
                Tag     tag     = Tag.Find(Request.Form["tag-id"]);
                Recipie recipie = Recipie.Find(Request.Form["recipie-id"]);
                recipie.AddTag(tag);
                return(View["success.cshtml"]);
            };

            Post["tag/add_recipie"] = _ => {
                Tag     tag     = Tag.Find(Request.Form["tag-id"]);
                Recipie recipie = Recipie.Find(Request.Form["recipie-id"]);
                tag.AddRecipie(recipie);
                return(View["success.cshtml"]);
            };

            Get["recipies/update/{id}"] = parameters =>
            {
                Recipie foundRecipie = Recipie.Find(parameters.id);
                return(View["recipie_update.cshtml", foundRecipie]);
            };

            Patch["recipies/update/{id}"] = parameters =>
            {
                Recipie foundRecipie = Recipie.Find(parameters.id);
                foundRecipie.Update(Request.Form["new-description"], Request.Form["new-rating"]);
                return(View["success.cshtml"]);
            };

            Get["tags/update/{id}"] = parameters =>
            {
                Tag foundTag = Tag.Find(parameters.id);
                return(View["tag_update.cshtml", foundTag]);
            };

            Patch["tags/update/{id}"] = parameters =>
            {
                Tag foundTag = Tag.Find(parameters.id);
                foundTag.Update(Request.Form["new-description"]);
                return(View["success.cshtml"]);
            };

            Delete["tag/delete/{id}"] = parameters =>
            {
                Tag foundTag = Tag.Find(parameters.id);
                foundTag.Delete();
                return(View["success.cshtml"]);
            };

            Delete["recipie/delete/{id}"] = parameters =>
            {
                Recipie foundRecipie = Recipie.Find(parameters.id);
                foundRecipie.Delete();
                return(View["success.cshtml"]);
            };

            Get["recipie/add_ingredient"] = _ => {
                Recipie selectedRecipie = Recipie.Find(Request.Query["recipie-id"]);
                return(View["ingredients_form.cshtml", selectedRecipie]);
            };

            Post["ingredients/new"] = _ => {
                Recipie    selectedRecipie = Recipie.Find(Request.Form["recipie-id"]);
                Ingredient newIngredient   = new Ingredient(Request.Form["ingredient-description"], Request.Form["recipie-id"], Request.Form["ingredient-quantity"], Request.Form["ingredient-unit"]);
                newIngredient.Save();
                return(View["success.cshtml"]);
            };

            Get["recipie/add_instruction"] = _ => {
                Recipie selectedRecipie = Recipie.Find(Request.Query["recipie-id"]);
                return(View["instructions_form.cshtml", selectedRecipie]);
            };

            Post["instructions/new"] = _ => {
                Recipie     selectedRecipie = Recipie.Find(Request.Form["recipie-id"]);
                Instruction newInstruction  = new Instruction(Request.Form["instruction-description"], Request.Form["recipie-id"], Request.Form["instruction-step-number"]);
                newInstruction.Save();
                return(View["success.cshtml"]);
            };

            Get["ingredients/update/{id}"] = parameters =>
            {
                Ingredient foundIngredient = Ingredient.Find(parameters.id);
                return(View["ingredient_update.cshtml", foundIngredient]);
            };

            Patch["ingredients/update/{id}"] = parameters =>
            {
                Ingredient foundIngredient = Ingredient.Find(parameters.id);
                foundIngredient.Update(Request.Form["new-description"], Request.Form["new-quantity"], Request.Form["new-unit"]);
                return(View["success.cshtml"]);
            };

            Get["instructions/update/{id}"] = parameters =>
            {
                Instruction foundInstruction = Instruction.Find(parameters.id);
                return(View["instruction_update.cshtml", foundInstruction]);
            };

            Patch["instructions/update/{id}"] = parameters =>
            {
                Instruction foundInstruction = Instruction.Find(parameters.id);
                foundInstruction.Update(Request.Form["new-description"], Request.Form["new-step-number"]);
                return(View["success.cshtml"]);
            };

            Delete["ingredients/delete/{id}"] = parameters =>
            {
                Ingredient foundIngredient = Ingredient.Find(parameters.id);
                foundIngredient.Delete();
                return(View["success.cshtml"]);
            };

            Delete["instructions/delete/{id}"] = parameters =>
            {
                Instruction foundInstruction = Instruction.Find(parameters.id);
                foundInstruction.Delete();
                return(View["success.cshtml"]);
            };
        }