Skip to content

Instantly share code, notes, and snippets.

@alexdunae alexdunae/shoes-solution.rb Secret
Created Jan 21, 2015

Embed
What would you like to do?
###
# Fork this gist. Copy the code into a new file named `shoes.rb` in your
# `projects` directory.
#
# From the virtual machine, you can run it by typing
# ruby shoes.rb
### This just makes the tests run. Nothing for you to do here.
require 'minitest'
require 'minitest/reporters'
MiniTest.autorun
Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
###
# Here is the test suite. It shows you what result we expect from each method
# call.
#
# Each test is being skipped right now. Comment out or delete the skip when you
# are ready to work on a test. Get as many tests to pass as possible.
#
# Read through each test to figure out what it is looking for.
class ShoesTest < MiniTest::Test
def test_shop_should_have_an_array_of_shoes
# skip
shop = Shop.new
assert shop.shoes.is_a?(Array)
end
def test_a_shoe_must_have_an_product_code_to_be_valid
# skip
shoe = Shoe.new
shoe.product_code = nil
assert_equal false, shoe.valid?, 'nil is not a valid product code'
shoe.product_code = nil
assert_equal false, shoe.valid?, 'false is not a valid product code'
shoe.product_code = 1111
assert_equal true, shoe.valid?, '1111 is a valid product code'
end
def test_setting_the_product_code_in_the_initializer
# skip
shoe = Shoe.new(1111)
assert_equal 1111, shoe.product_code
assert_equal true, shoe.valid?, '1111 is a valid product code'
end
def test_adding_a_valid_shoe_returns_true
# skip
shop = Shop.new
shoe = Shoe.new
shoe.product_code = 1111
result = shop.add_shoe(shoe)
assert_equal true, result
end
def test_adding_an_invalid_shoe_returns_false
# skip
shop = Shop.new
shoe = Shoe.new
shoe.product_code = nil
result = shop.add_shoe(shoe)
assert_equal false, result
end
def test_shoes_get_added_to_the_shop_array
# skip
shop = Shop.new
shoe_one = Shoe.new
shoe_one.product_code = 1111
shoe_two = Shoe.new
shoe_two.product_code = 2222
shop.add_shoe(shoe_one)
shop.add_shoe(shoe_two)
assert_equal 2, shop.shoes.count
end
end
###
# Here is a starting structure for your code.
#
# All the methods you should need are here. Fill in the blanks!
class Shoe
attr_accessor :product_code
def initialize(code = nil)
@product_code = code
end
def valid?
product_code != nil
end
end
class Shop
attr_reader :shoes
def initialize
@shoes = []
end
def add_shoe(shoe)
if shoe.valid?
# then we'll add it
@shoes.push(shoe)
true
else
# we won't add it
false
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.