Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Queues - Marisol Lopez - ride_share.rb #36

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
Prev Previous commit
Next Next commit
added self.find method to all classes and was able to get trip class …
…to send trip instances to driver class
marisol-lopez committed Mar 8, 2017

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit b0f17f012f4e1728ed2e11d67952e14de0ddc827
31 changes: 25 additions & 6 deletions lib/driver.rb
Original file line number Diff line number Diff line change
@@ -1,24 +1,43 @@
require 'csv'
require 'ap'
require_relative 'trip.rb'

class Driver
attr_reader :id, :name, :vin
def initialize(id, name, vin)
@id = id
@name = name
@vin = vin
raise ArgumentError.new("vin number should be exactly 17") unless @vin.length == 17
end
# def trip
# return trips = []
# end

def self.all
@drivers = []
CSV.open("./support/drivers.csv").each do |line|
@drivers << self.new(line[0].to_i, line[1].to_s, line[2].to_s)
CSV.foreach("./support/drivers.csv", {:headers => true}).each do |line|
@drivers << self.new(line[0].to_i, line[1].to_s, line[2].to_s)
end
return @drivers
end

def self.find(id)
driver_find = Driver.all
driver_find.each do |driver|
if driver.id == id
return driver
end
end
raise ArgumentError.new "Sorry, a driver with ID:#{id} doesn't exist."
end

def trip_instances_for_driver
Trip.find_driver(id)
#write test for this
end

end

ap Driver.all
# ap Driver.find(9)
# ap Trip.find_driver(9)
# ap Driver.all
one_driver = Driver.find(1)
ap one_driver.trip_instances_for_driver
21 changes: 16 additions & 5 deletions lib/rider.rb
Original file line number Diff line number Diff line change
@@ -2,18 +2,29 @@
require 'ap'
class Rider
attr_reader :name, :id, :phone_number
def initialize(name, id, phone_number)
def initialize(id, name, phone_number)
@name = name
@id = id
@phone_number = phone_number
end
def self.all
@riders = []
CSV.open("./support/riders.csv").each do |line|
@riders << self.new(line[0].to_i, line[1].to_s, line[2].to_s)
CSV.foreach("./support/riders.csv", {:headers => true}).each do |line|
@riders << self.new(line[0].to_i, line[1].to_s, line[2].to_s)
end
return @riders #this is returning the riders
end
end

ap Rider.all
def self.find(id)
rider_find = Rider.all
rider_find.each do |rider|
if rider.id == id
return rider
end
end
raise ArgumentError.new "Sorry, a rider with an ID:#{id} does not exist"
end

end
# ap Rider.find(9)
# ap Rider.all
26 changes: 21 additions & 5 deletions lib/trip.rb
Original file line number Diff line number Diff line change
@@ -2,21 +2,37 @@
require 'ap'

class Trip
attr_reader :trip_id, :rider_id, :driver_id, :date, :rating
def initialize(trip_id, rider_id, driver_id, date, rating)
attr_reader :trip_id, :driver_id, :rider_id, :date, :rating
def initialize(trip_id, driver_id, rider_id, date, rating)
@trip_id = trip_id
@rider_id = rider_id
@driver_id = driver_id
@rider_id = rider_id
@date = date
@rating = rating
end
def self.all
@trips = []
CSV.open("./support/trips.csv").each do |line|
CSV.foreach("./support/trips.csv", {:headers => true}).each do |line|
@trips << self.new(line[0].to_i, line[1].to_i, line[2].to_i, line[3].to_s, line[4].to_i)
end
return @trips #this is returning the riders
return @trips #this is returning the trips
end

def self.find_driver(id)
trip_find = Trip.all
array_of_trips = []
trip_find.each do |trip|
if trip.driver_id == id
array_of_trips << trip
end
end
if array_of_trips.length == 0
raise ArgumentError.new "Sorry, there is no trip with an ID:#{id}."
else
return array_of_trips
end
end
end

# ap Trip.all
# ap Trip.find_driver(9)
22 changes: 17 additions & 5 deletions specs/driver_spec.rb
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@
require 'minitest/reporters'
require 'minitest/skip_dsl'
require_relative '../lib/driver.rb'
require_relative '../specs/spec_helper.rb'
require_relative 'spec_helper.rb'

describe Driver do
describe "initialize" do
@@ -15,6 +15,7 @@
driver.id.must_equal id
driver.name.must_equal name
driver.vin.must_equal vin
driver.vin.length.must_equal 17
end
end
# describe "Trip method" do
@@ -32,14 +33,25 @@
@csv_driver.must_be_instance_of Array
end
it "checks every array is instance of Driver" do
@csv_driver.each do |array|
array.must_be_instance_of Driver
@csv_driver.each do |driver|
driver.must_be_instance_of Driver
end
end
it "checks correct length of csv driver file" do
@csv_driver.length.must_equal 101
@csv_driver.length.must_equal 100
end
end


describe "self.find" do
before do
id = 5
@sample_driver_5 = Driver.find(id)
end
it "checks for find method" do
@sample_driver_5.must_be_instance_of Driver
end
it "check id is 5" do
@sample_driver_5.id.must_equal 5
end
end
end
17 changes: 12 additions & 5 deletions specs/rider_spec.rb
Original file line number Diff line number Diff line change
@@ -2,23 +2,22 @@
require 'minitest/reporters'
require 'minitest/skip_dsl'
require_relative '../lib/rider.rb'
require_relative '../specs/spec_helper.rb'
require_relative 'spec_helper.rb'

describe Rider do
describe "initialize" do
it "takes a name, id, and phone number" do
name = "Marisol Bravo"
id = "5"
phone_number = "562-328-7865"
rider = Rider.new(name, id, phone_number)
rider = Rider.new(id, name, phone_number)
rider.must_be_instance_of Rider
rider.name.must_equal name
rider.id.must_equal id
rider.phone_number.must_equal phone_number
end
end
describe "self.all" do

before do
@csv_rider = Rider.all
end
@@ -32,8 +31,16 @@
end
end
it "checks correct length of csv driver file" do
@csv_rider.length.must_equal 301
@csv_rider.length.must_equal 300
end
describe "self.find" do
before do
id = 5
@sample_rider_id = Rider.find(id)
end
it "checks that @sample_rider_id is an instance of Rider class" do
@sample_rider_id.must_be_instance_of Rider
end
end

end
end
10 changes: 7 additions & 3 deletions specs/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -2,10 +2,14 @@
require 'minitest'
require 'minitest/autorun'
require 'minitest/reporters'
# require 'simplecov'
# SimpleCov.start

Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new

require 'simplecov'
SimpleCov.start do


# Require_relative your lib files here!
require_relative '../lib/driver.rb'
require_relative '../lib/rider.rb'
require_relative '../lib/trip.rb'
end
26 changes: 23 additions & 3 deletions specs/trip_spec.rb
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@
require 'minitest/reporters'
require 'minitest/skip_dsl'
require_relative '../lib/trip.rb'
require_relative '../specs/spec_helper.rb'
require_relative 'spec_helper.rb'

describe Trip do

@@ -35,8 +35,28 @@
end
end
it "checks correct length of csv driver file" do
@csv_trip.length.must_equal 601
@csv_trip.length.must_equal 600
end
end
describe "self.find_driver" do
before do
driver_id = 4
@driver_trips = Trip.find_driver(driver_id)
end
# it "checks for find method" do
# @sample_trip_id.must_be_instance_of Trip
# end
it "check that it is returning array" do
@driver_trips.must_be_instance_of Array
end
it "check that every trip in array has correct driver id" do
@driver_trips.each do |trip|
trip.driver_id.must_equal 4
end
end
it "checks that argument error is being raised" do
proc { Trip.find_driver("expect fail")
}.must_raise ArgumentError
end
end

end