Space - Suely - Chelsea#11
Conversation
OO Ride ShareMajor Learning Goals/Code Review
Testing Requirements
Overall Feedback
Code Style Bonus AwardsWas the code particularly impressive in code style for any of these reasons (or more...?)
|
kaidamasaki
left a comment
There was a problem hiding this comment.
Good job! Here are some small things you can do to clean up your code.
| @trips = trips || [] | ||
|
|
||
| unless @vin.length == 17 && (@vin.is_a? String) | ||
| raise ArgumentError.new ('Your VIN is wrong.') |
There was a problem hiding this comment.
Including the bad arguments in your ArgumentError messages is helpful (also avoid spaces before argument lists):
| raise ArgumentError.new ('Your VIN is wrong.') | |
| raise ArgumentError.new('Your VIN (#{vin}) is wrong.') |
| approved_status = [:AVAILABLE, :UNAVAILABLE] | ||
|
|
||
| unless approved_status.include?(@status) | ||
| raise ArgumentError.new ('You must provide one of the following statuses :available, :unavailable') |
There was a problem hiding this comment.
Symbols are case sensitive:
| raise ArgumentError.new ('You must provide one of the following statuses :available, :unavailable') | |
| raise ArgumentError.new ('You must provide one of the following statuses :AVAILABLE, :UNAVAILABLE') |
|
|
||
| def average_rating | ||
| completed = @trips.select { |trip| trip.rating != nil } | ||
| completed.map {|trip| trip.rating}.sum.to_f / (completed.size == 0 ? 1 : completed.size) |
There was a problem hiding this comment.
You can use sum with a block to replace a usage of map. Good use of a ternary though. 😄
| completed.map {|trip| trip.rating}.sum.to_f / (completed.size == 0 ? 1 : completed.size) | |
| completed.sum {|trip| trip.rating}.to_f / (completed.size == 0 ? 1 : completed.size) |
| if start_time.class == String | ||
| start_time = Time.parse(start_time) | ||
| end |
There was a problem hiding this comment.
Since you're parsing times in from_csv you don't need to do that defensively here.
| if start_time.class == String | |
| start_time = Time.parse(start_time) | |
| end |
| end | ||
|
|
||
| def net_expenditures | ||
| completed = @trips.select { |trip| trip.cost != nil } |
| before do | ||
|
|
||
| @passenger = RideShare::Passenger.new( | ||
| id: 9, | ||
| name: "Merl Glover III", | ||
| phone_number: "1-602-620-2330 x3723", | ||
| trips: [] | ||
| ) | ||
|
|
||
| driver = RideShare::Driver.new( | ||
| id: 54, | ||
| name: "Rogers Bartell IV", | ||
| vin: "1C9EVBRM0YBC564DZ", | ||
| status: :AVAILABLE | ||
| ) | ||
|
|
||
| @trip1 = RideShare::Trip.new( | ||
| id: 8, | ||
| driver: driver, | ||
| passenger: @passenger, | ||
| start_time: Time.new(2016, 8, 8), | ||
| end_time: Time.new(2016, 8, 9), | ||
| cost: 10, | ||
| rating: 5 | ||
| ) | ||
|
|
||
| @trip2 = RideShare::Trip.new( | ||
| id: 10, | ||
| driver: driver, | ||
| passenger: @passenger, | ||
| start_time: Time.new(2016, 8, 11), | ||
| end_time: Time.new(2016, 8, 12), | ||
| cost: 40, | ||
| rating: 5 | ||
| ) | ||
|
|
||
| @trip3 = RideShare::Trip.new( | ||
| id: 11, | ||
| driver: driver, | ||
| passenger: @passenger, | ||
| start_time: Time.new(2016, 8, 11) | ||
| ) | ||
| end |
There was a problem hiding this comment.
Incorrect indentation:
| before do | |
| @passenger = RideShare::Passenger.new( | |
| id: 9, | |
| name: "Merl Glover III", | |
| phone_number: "1-602-620-2330 x3723", | |
| trips: [] | |
| ) | |
| driver = RideShare::Driver.new( | |
| id: 54, | |
| name: "Rogers Bartell IV", | |
| vin: "1C9EVBRM0YBC564DZ", | |
| status: :AVAILABLE | |
| ) | |
| @trip1 = RideShare::Trip.new( | |
| id: 8, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 8), | |
| end_time: Time.new(2016, 8, 9), | |
| cost: 10, | |
| rating: 5 | |
| ) | |
| @trip2 = RideShare::Trip.new( | |
| id: 10, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 11), | |
| end_time: Time.new(2016, 8, 12), | |
| cost: 40, | |
| rating: 5 | |
| ) | |
| @trip3 = RideShare::Trip.new( | |
| id: 11, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 11) | |
| ) | |
| end | |
| before do | |
| @passenger = RideShare::Passenger.new( | |
| id: 9, | |
| name: "Merl Glover III", | |
| phone_number: "1-602-620-2330 x3723", | |
| trips: [] | |
| ) | |
| driver = RideShare::Driver.new( | |
| id: 54, | |
| name: "Rogers Bartell IV", | |
| vin: "1C9EVBRM0YBC564DZ", | |
| status: :AVAILABLE | |
| ) | |
| @trip1 = RideShare::Trip.new( | |
| id: 8, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 8), | |
| end_time: Time.new(2016, 8, 9), | |
| cost: 10, | |
| rating: 5 | |
| ) | |
| @trip2 = RideShare::Trip.new( | |
| id: 10, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 11), | |
| end_time: Time.new(2016, 8, 12), | |
| cost: 40, | |
| rating: 5 | |
| ) | |
| @trip3 = RideShare::Trip.new( | |
| id: 11, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 11) | |
| ) | |
| end |
| before do | ||
| @passenger = RideShare::Passenger.new( | ||
| id: 9, | ||
| name: "Merl Glover III", | ||
| phone_number: "1-602-620-2330 x3723", | ||
| trips: [] | ||
| ) | ||
|
|
||
| driver = RideShare::Driver.new( | ||
| id: 54, | ||
| name: "Rogers Bartell IV", | ||
| vin: "1C9EVBRM0YBC564DZ", | ||
| status: :AVAILABLE | ||
| ) | ||
|
|
||
| @trip1 = RideShare::Trip.new( | ||
| id: 8, | ||
| driver: driver, | ||
| passenger: @passenger, | ||
| start_time: Time.new(2016, 8, 8), | ||
| end_time: Time.new(2016, 8, 9), | ||
| cost: 10, | ||
| rating: 5 | ||
| ) | ||
|
|
||
| @trip2 = RideShare::Trip.new( | ||
| id: 10, | ||
| driver: driver, | ||
| passenger: @passenger, | ||
| start_time: Time.new(2016, 8, 11), | ||
| end_time: Time.new(2016, 8, 12), | ||
| cost: 40, | ||
| rating: 5 | ||
| ) | ||
|
|
||
| @trip3 = RideShare::Trip.new( | ||
| id: 11, | ||
| driver: driver, | ||
| passenger: @passenger, | ||
| start_time: Time.new(2016, 8, 11) | ||
| ) | ||
|
|
||
| end |
There was a problem hiding this comment.
Incorrect indentation:
| before do | |
| @passenger = RideShare::Passenger.new( | |
| id: 9, | |
| name: "Merl Glover III", | |
| phone_number: "1-602-620-2330 x3723", | |
| trips: [] | |
| ) | |
| driver = RideShare::Driver.new( | |
| id: 54, | |
| name: "Rogers Bartell IV", | |
| vin: "1C9EVBRM0YBC564DZ", | |
| status: :AVAILABLE | |
| ) | |
| @trip1 = RideShare::Trip.new( | |
| id: 8, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 8), | |
| end_time: Time.new(2016, 8, 9), | |
| cost: 10, | |
| rating: 5 | |
| ) | |
| @trip2 = RideShare::Trip.new( | |
| id: 10, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 11), | |
| end_time: Time.new(2016, 8, 12), | |
| cost: 40, | |
| rating: 5 | |
| ) | |
| @trip3 = RideShare::Trip.new( | |
| id: 11, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 11) | |
| ) | |
| end | |
| before do | |
| @passenger = RideShare::Passenger.new( | |
| id: 9, | |
| name: "Merl Glover III", | |
| phone_number: "1-602-620-2330 x3723", | |
| trips: [] | |
| ) | |
| driver = RideShare::Driver.new( | |
| id: 54, | |
| name: "Rogers Bartell IV", | |
| vin: "1C9EVBRM0YBC564DZ", | |
| status: :AVAILABLE | |
| ) | |
| @trip1 = RideShare::Trip.new( | |
| id: 8, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 8), | |
| end_time: Time.new(2016, 8, 9), | |
| cost: 10, | |
| rating: 5 | |
| ) | |
| @trip2 = RideShare::Trip.new( | |
| id: 10, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 11), | |
| end_time: Time.new(2016, 8, 12), | |
| cost: 40, | |
| rating: 5 | |
| ) | |
| @trip3 = RideShare::Trip.new( | |
| id: 11, | |
| driver: driver, | |
| passenger: @passenger, | |
| start_time: Time.new(2016, 8, 11) | |
| ) | |
| end |
| expect(@passenger.total_time_spent).must_equal 0 | ||
| expect(@passenger.total_time_spent).must_be_kind_of Numeric |
There was a problem hiding this comment.
These assertions are in the wrong order. If total_time_spent is 0 then it must already be Numeric:
| expect(@passenger.total_time_spent).must_equal 0 | |
| expect(@passenger.total_time_spent).must_be_kind_of Numeric | |
| expect(@passenger.total_time_spent).must_be_kind_of Numeric | |
| expect(@passenger.total_time_spent).must_equal 0 |
|
|
||
| it "calculates the duration of the trip corectly" do | ||
| expect(@trip.duration).must_be_kind_of Float | ||
| expect(@trip.duration).must_equal 1500.0 |
There was a problem hiding this comment.
You should avoid using must_equal with Floats because they are imprecise. You should use must_be_close_to instead.
This requires that they be within 0.1:
| expect(@trip.duration).must_equal 1500.0 | |
| expect(@trip.duration).must_be_close_to 1500.0, 0.1 |
| def total_revenue | ||
| fee = 1.65 | ||
| completed = @trips.select { |trip| trip.cost != nil } | ||
| return completed.map {|trip| trip.cost < fee ? 0 : trip.cost - fee}.sum * 0.8 |
There was a problem hiding this comment.
You can also write this using reject (which might read a little clearer).
| return completed.map {|trip| trip.cost < fee ? 0 : trip.cost - fee}.sum * 0.8 | |
| return completed.reject {|trip| trip.cost < fee}.sum { |trip| trip.cost - fee} * 0.8 |
kaidamasaki
left a comment
There was a problem hiding this comment.
Good job! Here are a somet things you can do to clean up your code.
Assignment Submission: OO Ride Share
Congratulations! You're submitting your assignment. Please reflect on the assignment with these questions.
Reflection