Skip to content

Sam Button Takeaway Challenge#2231

Open
SamButton12 wants to merge 3 commits intomakersacademy:mainfrom
SamButton12:main
Open

Sam Button Takeaway Challenge#2231
SamButton12 wants to merge 3 commits intomakersacademy:mainfrom
SamButton12:main

Conversation

@SamButton12
Copy link

Sam Button

Please write your full name here to make it easier to find your pull request.

User stories

Please list which user stories you've implemented (delete the ones that don't apply).

  • User story 1: "I would like to see a list of dishes with prices"
  • User story 2: "I would like to be able to select some number of several available dishes"
  • User story 3: "I would like to check that the total I have been given matches the sum of the various dishes in my order"
  • User story 4: "I would like to receive a text such as "Thank you! Your order was placed and will be delivered before 18:52" after I have ordered"

README checklist

Does your README contains instructions for

  • [] how to install,
  • [] how to run,
  • [] and how to test your code?

Here is a pill that can help you write a great README!

Copy link

@lukestorey95 lukestorey95 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some really interesting implementation here with quantity. Would love to see some more encapsulation and use of private methods to really clearly define what public interface is that the user can do and what the program does in the background. Think that would help you refine your tests further as well as you don't need to test private methods. And fingers crossed you can figure out your ENV variables as well.

require './docs/menu'

describe Menu do
it 'responds to Menu class' do

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't think this test is needed. Rspec always initialises the subject to be a new instance of the described class

require './docs/order'

describe Order do
let(:menu) { Menu.create }

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting why .create and not .new ?

end

it 'responds to add_to_basket' do
expect(subject).to respond_to :add_to_basket

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Think this is being tested below so could probably be refactored out as well

expect(subject.current_order).to eq(["Guinness"])
end

it 'can add multiple dishes at once' do

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is clever I hadn't thought about implementing quantity

subject(:sms) { described_class.new }

before do
allow(sms).to receive(:sms)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Much prefer this was of stubbing the SMS method directly rather than trying to stub the client like I did

quantity.times { @current_order << dish }
end

def calculate_price

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Think some of these methods could be encapsulated into private as the the user doesn't need to calculate the price, the program just needs to do it and the user sees the output

@sent
end

def sms_confirmation

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice idea to have the confirmation message, but again could be in private


class SMS

ETA = (Time.now + 3600).strftime("%H:%M")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Magic number could be defined elsewhere

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants