Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions lib/dish.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class Dish
attr_reader :name, :category
def initialize(name, category)
@name = name
@category = category
end
end
46 changes: 46 additions & 0 deletions lib/potluck.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
class Potluck
attr_reader :date, :dishes

def initialize(date)
@date = date
@dishes = []
end

def add_dish(dish)
@dishes << dish
end

def length
@dishes.length
end

def get_all_from_category(category)
@dishes.find_all do |dish|
dish.category == category
end
end

def menu
categories = []
return_menu = {}
@dishes.each do |dish|
if !(categories.include?(dish.category))
categories << dish.category
end
end

categories.each do |category|
category_items = get_all_from_category(category)
category_items = category_items.sort_by{|item| item.name}
return_menu[category] = category_items
end

return return_menu

end

def ratio(category)
return ((menu[category].length.to_f / length) * 100).round(2)
end

end
18 changes: 18 additions & 0 deletions test/dish_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
require 'minitest/autorun'
require 'minitest/pride'
require './lib/dish'

class DishTest < Minitest::Test

def test_it_exists
dish = Dish.new("Couscous Salad", :appetizer)
assert_instance_of Dish, dish
end

def test_instance_variables
dish = Dish.new("Couscous Salad", :appetizer)
assert_equal "Couscous Salad", dish.name
assert_equal :appetizer, dish.category
end

end
94 changes: 94 additions & 0 deletions test/potluck_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
require 'minitest/autorun'
require 'minitest/pride'
require './lib/potluck'
require './lib/dish'

class PotluckTest < Minitest::Test
def test_it_exists
potluck = Potluck.new("7-13-18")
assert_instance_of Potluck, potluck
end

def test_instance_variables
potluck = Potluck.new("7-13-18")
assert_equal "7-13-18", potluck.date
assert_equal [], potluck.dishes
end

def test_add_dish
potluck = Potluck.new("7-13-18")
couscous_salad = Dish.new("Couscous Salad", :appetizer)
cocktail_meatballs = Dish.new("Cocktail Meatballs", :entre)
potluck.add_dish(couscous_salad)
potluck.add_dish(cocktail_meatballs)

assert_equal couscous_salad, potluck.dishes[0]
assert_equal cocktail_meatballs, potluck.dishes[1]
end

def test_length
potluck = Potluck.new("7-13-18")
couscous_salad = Dish.new("Couscous Salad", :appetizer)
cocktail_meatballs = Dish.new("Cocktail Meatballs", :entre)
potluck.add_dish(couscous_salad)
potluck.add_dish(cocktail_meatballs)

assert_equal 2, potluck.dishes.length
end

def test_get_all_from_category
potluck = Potluck.new("7-13-18")
couscous_salad = Dish.new("Couscous Salad", :appetizer)
summer_pizza = Dish.new("Summer Pizza", :appetizer)
roast_pork = Dish.new("Roast Pork", :entre)
cocktail_meatballs = Dish.new("Cocktail Meatballs", :entre)
candy_salad = Dish.new("Candy Salad", :dessert)
potluck.add_dish(couscous_salad)
potluck.add_dish(summer_pizza)
potluck.add_dish(roast_pork)
potluck.add_dish(cocktail_meatballs)
potluck.add_dish(candy_salad)
expected = potluck.get_all_from_category(:appetizer)
assert_equal [couscous_salad, summer_pizza], expected
expected = potluck.get_all_from_category(:appetizer).first
assert_equal couscous_salad, expected
expected = potluck.get_all_from_category(:appetizer).first.name
assert_equal "Couscous Salad", expected
end

def test_menu
potluck = Potluck.new("7-13-18")
couscous_salad = Dish.new("Couscous Salad", :appetizer)
summer_pizza = Dish.new("Summer Pizza", :appetizer)
roast_pork = Dish.new("Roast Pork", :entre)
cocktail_meatballs = Dish.new("Cocktail Meatballs", :entre)
candy_salad = Dish.new("Candy Salad", :dessert)
bean_dip = Dish.new("Bean Dip", :appetizer)
potluck.add_dish(couscous_salad)
potluck.add_dish(summer_pizza)
potluck.add_dish(roast_pork)
potluck.add_dish(cocktail_meatballs)
potluck.add_dish(candy_salad)
potluck.add_dish(bean_dip)
appetizers = [bean_dip, couscous_salad, summer_pizza]
assert_equal appetizers, potluck.menu[:appetizer]
end

def test_ratio
potluck = Potluck.new("7-13-18")
couscous_salad = Dish.new("Couscous Salad", :appetizer)
summer_pizza = Dish.new("Summer Pizza", :appetizer)
roast_pork = Dish.new("Roast Pork", :entre)
cocktail_meatballs = Dish.new("Cocktail Meatballs", :entre)
candy_salad = Dish.new("Candy Salad", :dessert)
bean_dip = Dish.new("Bean Dip", :appetizer)
potluck.add_dish(couscous_salad)
potluck.add_dish(summer_pizza)
potluck.add_dish(roast_pork)
potluck.add_dish(cocktail_meatballs)
potluck.add_dish(candy_salad)
potluck.add_dish(bean_dip)

assert_equal 50.0, potluck.ratio(:appetizer)
end
end