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
3 changes: 3 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
API_KEY = ACd17ac950dc314d803a4a751886a01b08
AUTH_TOKEN = b2e2782e4fbc1a29cf9437fee3829a93
NUMBER = +13862515376
Empty file added .environment_variables
Empty file.
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_accessor :name, :price
def initialize(name,price)
@name = name
@price = price
end
end
37 changes: 37 additions & 0 deletions lib/menu.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
class Menu

def initialize
@menu_items = []
@available = true
end

def add(dish)
@menu_items << dish
end

def remove(dish)
if @menu_items.include?(dish)
@menu_items.delete(dish)
else
fail "unknown dish"
end
end

def list
@menu_items
end









end





19 changes: 19 additions & 0 deletions lib/order.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
class Order
def initialize(menu)
@menu = menu
@order_list = []
end

def pick(dish)
@order_list << dish
end

def remove(dish)
@order_list.delete(dish)
end

def list
@order_list
end

end
27 changes: 27 additions & 0 deletions lib/receipt.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class Receipt

def initialize(order)
@order= order
@total_order = []
end

def total
sum = 0
@order.list.map do |dish|
sum += dish.price
end
@sum = sum
end


def itemised_receipt
total_receipt = "Items totalled: "
@order.list.each do |dish|
total_receipt += "#{dish.name} " + "£#{dish.price} " + "/"
end
total_receipt + " Total amount: £#{@sum}"
end
end



12 changes: 12 additions & 0 deletions spec/dish_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
require 'dish.rb'

RSpec.describe Dish do

it "constructs a dish" do
dish = Dish.new("pizza", 10)
expect(dish.name).to eq "pizza"
expect(dish.price).to eq 10
end


end
63 changes: 63 additions & 0 deletions spec/menu_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
require './lib/menu.rb'

RSpec.describe Menu do

it "adds a dish to the menu list" do
dish = double :dish
menu = Menu.new
menu.add(dish)
expect(menu.list).to eq [dish]
end

it "adds multiple dishes to the menu" do
dish = double :dish
dish1 = double :dish
dish2 = double :dish
menu = Menu.new
menu.add(dish)
menu.add(dish1)
menu.add(dish2)
expect(menu.list).to eq [dish, dish1, dish2]
end

it "removes a dish from the menu" do
dish = double :dish
dish1 = double :dish
dish2 = double :dish
menu = Menu.new
menu.add(dish)
menu.add(dish1)
menu.add(dish2)
menu.remove(dish)
expect(menu.list).to eq [dish1, dish2]
end

it "removes dishes from the menu" do
dish = double :dish
dish1 = double :dish
dish2 = double :dish
menu = Menu.new
menu.add(dish)
menu.add(dish1)
menu.add(dish2)
menu.remove(dish)
menu.remove(dish1)
expect(menu.list).to eq [dish2]
end

context "Trying to remove a non-existent dish" do
it "raises error" do
dish = double :dish
dish1 = double :dish
dish2 = double :dish
dish3 = double :dish
menu = Menu.new
menu.add(dish)
menu.add(dish1)
menu.add(dish2)
expect{menu.remove(dish3)}.to raise_error "unknown dish"
end
end


end
50 changes: 50 additions & 0 deletions spec/order_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
require 'order.rb'

RSpec.describe Order do

it "constructs" do
menu = double :menu
order = Order.new(menu)
expect(order.list).to eq ([])
end

it "creates an order list based on dishes selected" do
menu = double :menu
order = Order.new(menu)
dish = double :dish
dish1 = double :dish1
dish2 = double :dish2
order.pick(dish)
order.pick(dish1)
order.pick(dish2)
expect(order.list).to eq ([dish,dish1,dish2])
end

it "removes dish from order" do
menu = double :menu
order = Order.new(menu)
dish = double :dish
dish1 = double :dish1
dish2 = double :dish2
order.pick(dish)
order.pick(dish1)
order.pick(dish2)
order.remove(dish)
expect(order.list).to eq ([dish1,dish2])
end

it "removes multiple dishes from and order" do
menu = double :menu
order = Order.new(menu)
dish = double :dish
dish1 = double :dish1
dish2 = double :dish2
order.pick(dish)
order.pick(dish1)
order.pick(dish2)
order.remove(dish)
order.remove(dish1)
expect(order.list).to eq ([dish2])
end

end
24 changes: 24 additions & 0 deletions spec/receipt_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
require './lib/receipt.rb'

RSpec.describe Receipt do

it " returns total of order" do
dish_1 = double :dish, name: "sandwich", price: 10
dish_2 = double :dish, name: "salad", price: 5
dish_3 = double :dish, name: "soup", price: 3
order = double :order, list: [dish_1, dish_2,dish_3]
receipt = Receipt.new(order)
expect(receipt.total).to eq (18)
end
it "returns an itemised receipt" do
dish_1 = double :dish, name: "sandwich", price: 10
dish_2 = double :dish, name: "salad", price: 5
dish_3 = double :dish, name: "soup", price: 3
order = double :order, list: [dish_1, dish_2,dish_3]
receipt = Receipt.new(order)
receipt.total
expect(receipt.itemised_receipt).to eq "Items totalled: sandwich £10 /salad £5 /soup £3 / Total amount: £18"
end


end
7 changes: 7 additions & 0 deletions spec/send-text_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
require 'send-text.rb'

RSPec.describe SendText do



end
88 changes: 88 additions & 0 deletions spec/takeaway_integration_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
require 'dish.rb'
require 'menu.rb'
require 'order.rb'
require 'receipt.rb'

RSpec.describe "integration" do
context "given a list of dishes" do
it "returns a menu list of dishes" do
menu = Menu.new
dish_1 = Dish.new("sandwich",10)
dish_2 = Dish.new("salmon",5)
dish_3 = Dish.new("pizza",3)
menu.add(dish_1)
menu.add(dish_2)
menu.add(dish_3)
expect(menu.list).to eq([dish_1, dish_2, dish_3])
end
end

it "creates an order list based on customer selection" do
menu = Menu.new
order = Order.new(menu)
dish_1 = Dish.new("sandwich",10)
dish_2 = Dish.new("salmon",5)
dish_3 = Dish.new("pizza",3)
menu.add(dish_1)
menu.add(dish_2)
menu.add(dish_3)
order.pick(dish_1)
order.pick(dish_2)
order.pick(dish_3)
expect(order.list).to eq [dish_1,dish_2,dish_3]
end

it "can delete dishes from an order" do
menu = Menu.new
order = Order.new(menu)
dish_1 = Dish.new("sandwich",10)
dish_2 = Dish.new("salmon",5)
dish_3 = Dish.new("pizza",3)
menu.add(dish_1)
menu.add(dish_2)
menu.add(dish_3)
order.pick(dish_1)
order.pick(dish_2)
order.pick(dish_3)
order.remove(dish_3)
expect(order.list).to eq ([dish_1, dish_2])
end

it "returns the total price of order made" do
menu = Menu.new
order = Order.new(menu)
dish_1 = Dish.new("sandwich",10)
dish_2 = Dish.new("salmon",5)
dish_3 = Dish.new("pizza",3)
menu.add(dish_1)
menu.add(dish_2)
menu.add(dish_3)
order.pick(dish_1)
order.pick(dish_2)
order.pick(dish_3)
receipt = Receipt.new(order)
expect(receipt.total).to eq (18)
end

it "returns an itemised receipt for order made" do
menu = Menu.new
order = Order.new(menu)
dish_1 = Dish.new("sandwich",10)
dish_2 = Dish.new("salmon",5)
dish_3 = Dish.new("pizza",3)
menu.add(dish_1)
menu.add(dish_2)
menu.add(dish_3)
order.pick(dish_1)
order.pick(dish_2)
order.pick(dish_3)
receipt = Receipt.new(order)
receipt.total
expect(receipt.itemised_receipt).to eq "Items totalled: sandwich £10 /salmon £5 /pizza £3 / Total amount: £18"
end





end