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

Iris & Noor #19

Open
wants to merge 75 commits into
base: master
Choose a base branch
from
Open

Iris & Noor #19

wants to merge 75 commits into from

Conversation

iris-lux
Copy link

@iris-lux iris-lux commented Nov 7, 2020

Assignment Submission: Rideshare Rails

Congratulations! You're submitting your assignment. Please reflect on the assignment with these questions. These questions should be answered by all team members together, not by a single teammate.

Reflection

Prompt Response
Describe the types of entity relationships you set up in your project and why you set up the relationships that way Driver has many Trips, passenger has many trips, and Trip belongs to Passenger and Driver. We set it up that way so we'd be able to access the data and the relationship between entities easily.
Describe the role of model validations in your application We created validations for all models. We made sure info like Vins and ratings conformed to a certain standard, and we made sure certain essential info was present (such as names for drivers/passengers).
How did your team break up the work to be done? Iris focused more on the back-end, such as models, and Noor focused on the front-end views. Both contributed to controllers/controller tests.
What features did you choose to prioritize in your project, and what features, if any, did you have to set aside to meet the deadline? We prioritized functionality over style, our stylesheets are simpler yet elegant.
What was one thing that your team collectively gained more clarity on after completing this assignment? How models function, and the relationships between models.
What are two discussion points that you and your team discussed when giving/receiving feedback from each other that you would be willing to share? Flexibility on both sides was appreciated. We had good communication around gitpush/pull which prevented confusion and code issues.
Optional: What is the URL of your deployed Heroku app?

iris-lux and others added 30 commits November 2, 2020 14:56
Copy link

@CheezItMan CheezItMan left a comment

Choose a reason for hiding this comment

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

Rideshare Rails

Major Learning Goals/Code Review

Criteria yes/no, and optionally any details/lines of code to reference
Practices collaborating with git, and all team members contribute git commits and best git practices ✔️
Demonstrates understanding of relationships by giving accurate answers to the reflection questions and appropriate code in the models ✔️
Logic to calculate a driver's average rating and total earnings is located in the model, and it has unit tests ✔️, however you need to test some edge cases see my inline methods.
There are reasonable tests to test the validation requirements for all models ✔️
There are reasonable tests to test the relationship requirements for all models ✔️
There are reasonable tests to test the controller actions for all controllers ✔️
The app has an attractive and usable user interface ✔️, although I think things would look better in a table-like format.
The app uses/is compatible with database seeds ✔️
Router code is clean: uses resources and RESTful routes ✔️, however see some of my notes

Functional Requirements

Functional Requirement yes/no
On the passenger's details page, I want to be able to see total charged, list of trips, a link to edit, and delete ✔️
When adding a new passenger, I want to see errors and validations that show that a passenger must be provided a name and a phone number, so that I cannot make a passenger without name or phone number ✔️
On the passenger's details page, I can create a new trip for this passenger, with an assigned driver and no rating ✔️
On the driver's details page, I want to be able to see total earnings, average rating, list of trips, a link to edit, and delete ✔️
When adding a new driver, I want to see errors and validations that show that a driver must be provided a name and VIN, so that I cannot make a driver without name or VIN ✔️
On the trip's detail page, I want to be able to view details, assign a rating, navigate to the trip's passenger, driver, a link to edit, and delete ✔️

Overall Feedback

Overall Feedback Criteria yes/no
Green (Meets/Exceeds Standards) 8+ in Code Review && 5+ in Functional Requirements

Code Style Bonus Awards

Was the code particularly impressive in code style for any of these reasons (or more...?)

Quality Yes?
Perfect Indentation
Elegant/Clever
Descriptive/Readable
Concise
Logical/Organized

Summary

Really well done. You hit the learning goals here. I like some of your helper methods and you have some good tests too. However you needed to test some edge cases on the custom methods, and I found a few smaller things to make note of, status codes, etc. Take a look and let me know what questions you have.

end

def assign_rating
raise

Choose a reason for hiding this comment

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

🙅

Suggested change
raise

Comment on lines +121 to +126
it "will redirect to the trips page if given an invalid id" do
# Your code here
id = -1
delete trip_path(id)
must_redirect_to trips_path
end

Choose a reason for hiding this comment

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

I think you intended to try to give a rating to an invalid trip.

Suggested change
it "will redirect to the trips page if given an invalid id" do
# Your code here
id = -1
delete trip_path(id)
must_redirect_to trips_path
end
it "will redirect to the trips page if given an invalid id" do
# Your code here
id = -1
expect{
patch assign_rating_trip_path(id), params: {rating: 4}
}.wont_change "Trip.count"
must_redirect_to trips_path
end

get edit_trip_path(-1)

must_respond_with :redirect
end
end

describe "update" do

Choose a reason for hiding this comment

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

What about if the user submits an update, but violates a validation?

end

describe "create" do
# Your tests go here
it "can create a new trip" do

Choose a reason for hiding this comment

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

What about creating an invalid trip?

get edit_passenger_path(-1)

must_respond_with :redirect
end
end

describe "update" do

Choose a reason for hiding this comment

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

What about updating a passenger with invalid data?

resources :passengers do
resources :trips, only: [:index, :create]
end
delete '/drivers/:id', to: 'drivers#delete', as: 'delete_driver'

Choose a reason for hiding this comment

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

Do you need this? You have resources.

describe "complete trip" do
# Your code here
describe "total_charged" do
it "correctly displays total charged"do

Choose a reason for hiding this comment

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

What about a passenger with no trips?

ratings.each{|rating| Trip.create!(rating: rating, cost:7777, date: Date.current, driver:new_driver, passenger: new_passenger)}

expect(new_driver.avg_rating).must_equal expected_avg_rating
end
end

describe "total earnings" do

Choose a reason for hiding this comment

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

What about a driver with no trips?

expect(new_driver.valid?).must_equal false
expect(new_driver.errors.messages).must_include :vin
d = new_driver.errors.messages
expect(new_driver.errors.messages[:vin][0]).must_equal "is the wrong length (should be 17 characters)"
end
end

# Tests for methods you create should go here
describe "custom methods" do
describe "average rating" do

Choose a reason for hiding this comment

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

What about a driver with no trips?

available: params[:driver][:available]
})

if result

Choose a reason for hiding this comment

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

Suggested change
if result
if result.valid?

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.

3 participants