From 7a043f63fba3b79d4d4ae528f957938c316f6ed7 Mon Sep 17 00:00:00 2001 From: Daniele Megna Date: Sun, 20 Aug 2017 16:43:24 +0200 Subject: [PATCH 1/2] Added elixir build folder to ignored files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b56f217b..ab29156c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/workspace.xml *.pyc /perl6/lib/.precomp +/elixir/_build/ From a379eadb379927808822e8bcf7014c2706647621 Mon Sep 17 00:00:00 2001 From: Daniele Megna Date: Sun, 20 Aug 2017 16:51:06 +0200 Subject: [PATCH 2/2] Test covering of update_item function --- elixir/test/gilded_rose_test.exs | 97 +++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 1 deletion(-) diff --git a/elixir/test/gilded_rose_test.exs b/elixir/test/gilded_rose_test.exs index b0db3381..d3017ab6 100644 --- a/elixir/test/gilded_rose_test.exs +++ b/elixir/test/gilded_rose_test.exs @@ -1,6 +1,101 @@ defmodule GildedRoseTest do use ExUnit.Case + import GildedRose - test "begin the journey of refactoring" do + test "Items Quality decreases by 1" do + assert_update_item( + %Item{name: "Item name", sell_in: 9, quality: 3}, + %Item{name: "Item name", sell_in: 8, quality: 2} + ) + assert_update_item( + %Item{name: "Item name", sell_in: 1, quality: 7}, + %Item{name: "Item name", sell_in: 0, quality: 6} + ) end + + test "Once the sell by date has passed, Quality degrades twice as fast" do + assert_update_item( + %Item{name: "Item name", sell_in: 0, quality: 5}, + %Item{name: "Item name", sell_in: -1, quality: 3} + ) + assert_update_item( + %Item{name: "Item name", sell_in: -1, quality: 8}, + %Item{name: "Item name", sell_in: -2, quality: 6} + ) + end + + test "The Quality of an item is never negative" do + assert_update_item( + %Item{name: "Item name", sell_in: 4, quality: 0}, + %Item{name: "Item name", sell_in: 3, quality: 0} + ) + assert_update_item( + %Item{name: "Item name", sell_in: 0, quality: 0}, + %Item{name: "Item name", sell_in: -1, quality: 0} + ) + assert_update_item( + %Item{name: "Item name", sell_in: -2, quality: 0}, + %Item{name: "Item name", sell_in: -3, quality: 0} + ) + end + + test "Aged Brie actually increases in Quality the older it gets" do + assert_update_item( + %Item{name: "Aged Brie", sell_in: 12, quality: 8}, + %Item{name: "Aged Brie", sell_in: 11, quality: 9} + ) + assert_update_item( + %Item{name: "Aged Brie", sell_in: 4, quality: 6}, + %Item{name: "Aged Brie", sell_in: 3, quality: 7} + ) + assert_update_item( + %Item{name: "Aged Brie", sell_in: 1, quality: 10}, + %Item{name: "Aged Brie", sell_in: 0, quality: 11} + ) + end + + test "[DISCOVERED] Quality of Aged Brie increases by 2 once the sell by date has passed" do + assert_update_item( + %Item{name: "Aged Brie", sell_in: 0, quality: 7}, + %Item{name: "Aged Brie", sell_in: -1, quality: 9} + ) + assert_update_item( + %Item{name: "Aged Brie", sell_in: -2, quality: 9}, + %Item{name: "Aged Brie", sell_in: -3, quality: 11} + ) + end + + test "The Quality of an item is never more than 50" do + assert_update_item( + %Item{name: "Aged Brie", sell_in: 7, quality: 50}, + %Item{name: "Aged Brie", sell_in: 6, quality: 50} + ) + assert_update_item( + %Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: 9, quality: 50}, + %Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: 8, quality: 50} + ) + end + + test "Quality of backstage passes increases by 2 when there are 10 days or less" do + assert_update_item( + %Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: 9, quality: 1}, + %Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: 8, quality: 3} + ) + end + + test "Quality of backstag drops to 0 after the concert" do + assert_update_item( + %Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: 0, quality: 12}, + %Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: -1, quality: 0} + ) + assert_update_item( + %Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: -2, quality: 10}, + %Item{name: "Backstage passes to a TAFKAL80ETC concert", sell_in: -3, quality: 0} + ) + end + + defp assert_update_item(item, expected) do + assert update_item(item) == expected + end + end