From e173dc64c5eb36871c2dafa9625c424e2936a71a Mon Sep 17 00:00:00 2001
From: Dominique
Date: Mon, 7 Oct 2019 16:02:26 -0700
Subject: [PATCH 01/22] created rails app and database
---
.gitignore | 30 ++
.ruby-version | 1 +
Gemfile | 83 ++++++
Gemfile.lock | 277 ++++++++++++++++++
Guardfile | 9 +
Rakefile | 6 +
app/assets/config/manifest.js | 3 +
app/assets/images/.keep | 0
app/assets/javascripts/application.js | 16 +
app/assets/javascripts/cable.js | 13 +
app/assets/javascripts/channels/.keep | 0
app/assets/stylesheets/application.css | 15 +
app/channels/application_cable/channel.rb | 4 +
app/channels/application_cable/connection.rb | 4 +
app/controllers/application_controller.rb | 2 +
app/controllers/concerns/.keep | 0
app/helpers/application_helper.rb | 2 +
app/jobs/application_job.rb | 2 +
app/mailers/application_mailer.rb | 4 +
app/models/application_record.rb | 3 +
app/models/concerns/.keep | 0
app/views/layouts/application.html.erb | 15 +
app/views/layouts/mailer.html.erb | 13 +
app/views/layouts/mailer.text.erb | 1 +
bin/bundle | 3 +
bin/rails | 9 +
bin/rake | 9 +
bin/setup | 36 +++
bin/spring | 17 ++
bin/update | 31 ++
bin/yarn | 11 +
config.ru | 5 +
config/application.rb | 26 ++
config/boot.rb | 4 +
config/cable.yml | 10 +
config/credentials.yml.enc | 1 +
config/database.yml | 85 ++++++
config/environment.rb | 5 +
config/environments/development.rb | 61 ++++
config/environments/production.rb | 94 ++++++
config/environments/test.rb | 46 +++
config/initializers/action_view.rb | 1 +
.../application_controller_renderer.rb | 8 +
config/initializers/assets.rb | 14 +
config/initializers/backtrace_silencers.rb | 7 +
.../initializers/content_security_policy.rb | 25 ++
config/initializers/cookies_serializer.rb | 5 +
.../initializers/filter_parameter_logging.rb | 4 +
config/initializers/inflections.rb | 16 +
config/initializers/mime_types.rb | 4 +
config/initializers/wrap_parameters.rb | 14 +
config/locales/en.yml | 33 +++
config/puma.rb | 34 +++
config/routes.rb | 3 +
config/spring.rb | 6 +
config/storage.yml | 34 +++
lib/assets/.keep | 0
lib/tasks/.keep | 0
log/.keep | 0
package.json | 5 +
public/404.html | 67 +++++
public/422.html | 67 +++++
public/500.html | 66 +++++
public/apple-touch-icon-precomposed.png | 0
public/apple-touch-icon.png | 0
public/favicon.ico | 0
public/robots.txt | 1 +
storage/.keep | 0
test/application_system_test_case.rb | 5 +
test/controllers/.keep | 0
test/fixtures/.keep | 0
test/fixtures/files/.keep | 0
test/helpers/.keep | 0
test/integration/.keep | 0
test/mailers/.keep | 0
test/models/.keep | 0
test/system/.keep | 0
test/test_helper.rb | 10 +
tmp/.keep | 0
vendor/.keep | 0
80 files changed, 1385 insertions(+)
create mode 100644 .gitignore
create mode 100644 .ruby-version
create mode 100644 Gemfile
create mode 100644 Gemfile.lock
create mode 100644 Guardfile
create mode 100644 Rakefile
create mode 100644 app/assets/config/manifest.js
create mode 100644 app/assets/images/.keep
create mode 100644 app/assets/javascripts/application.js
create mode 100644 app/assets/javascripts/cable.js
create mode 100644 app/assets/javascripts/channels/.keep
create mode 100644 app/assets/stylesheets/application.css
create mode 100644 app/channels/application_cable/channel.rb
create mode 100644 app/channels/application_cable/connection.rb
create mode 100644 app/controllers/application_controller.rb
create mode 100644 app/controllers/concerns/.keep
create mode 100644 app/helpers/application_helper.rb
create mode 100644 app/jobs/application_job.rb
create mode 100644 app/mailers/application_mailer.rb
create mode 100644 app/models/application_record.rb
create mode 100644 app/models/concerns/.keep
create mode 100644 app/views/layouts/application.html.erb
create mode 100644 app/views/layouts/mailer.html.erb
create mode 100644 app/views/layouts/mailer.text.erb
create mode 100755 bin/bundle
create mode 100755 bin/rails
create mode 100755 bin/rake
create mode 100755 bin/setup
create mode 100755 bin/spring
create mode 100755 bin/update
create mode 100755 bin/yarn
create mode 100644 config.ru
create mode 100644 config/application.rb
create mode 100644 config/boot.rb
create mode 100644 config/cable.yml
create mode 100644 config/credentials.yml.enc
create mode 100644 config/database.yml
create mode 100644 config/environment.rb
create mode 100644 config/environments/development.rb
create mode 100644 config/environments/production.rb
create mode 100644 config/environments/test.rb
create mode 100644 config/initializers/action_view.rb
create mode 100644 config/initializers/application_controller_renderer.rb
create mode 100644 config/initializers/assets.rb
create mode 100644 config/initializers/backtrace_silencers.rb
create mode 100644 config/initializers/content_security_policy.rb
create mode 100644 config/initializers/cookies_serializer.rb
create mode 100644 config/initializers/filter_parameter_logging.rb
create mode 100644 config/initializers/inflections.rb
create mode 100644 config/initializers/mime_types.rb
create mode 100644 config/initializers/wrap_parameters.rb
create mode 100644 config/locales/en.yml
create mode 100644 config/puma.rb
create mode 100644 config/routes.rb
create mode 100644 config/spring.rb
create mode 100644 config/storage.yml
create mode 100644 lib/assets/.keep
create mode 100644 lib/tasks/.keep
create mode 100644 log/.keep
create mode 100644 package.json
create mode 100644 public/404.html
create mode 100644 public/422.html
create mode 100644 public/500.html
create mode 100644 public/apple-touch-icon-precomposed.png
create mode 100644 public/apple-touch-icon.png
create mode 100644 public/favicon.ico
create mode 100644 public/robots.txt
create mode 100644 storage/.keep
create mode 100644 test/application_system_test_case.rb
create mode 100644 test/controllers/.keep
create mode 100644 test/fixtures/.keep
create mode 100644 test/fixtures/files/.keep
create mode 100644 test/helpers/.keep
create mode 100644 test/integration/.keep
create mode 100644 test/mailers/.keep
create mode 100644 test/models/.keep
create mode 100644 test/system/.keep
create mode 100644 test/test_helper.rb
create mode 100644 tmp/.keep
create mode 100644 vendor/.keep
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..11a546eaa
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,30 @@
+# See https://help.github.com/articles/ignoring-files for more about ignoring files.
+#
+# If you find yourself ignoring temporary files generated by your text editor
+# or operating system, you probably want to add a global ignore instead:
+# git config --global core.excludesfile '~/.gitignore_global'
+
+# Ignore bundler config.
+/.bundle
+
+# Ignore all logfiles and tempfiles.
+/log/*
+/tmp/*
+!/log/.keep
+!/tmp/.keep
+
+# Ignore uploaded files in development
+/storage/*
+!/storage/.keep
+
+/node_modules
+/yarn-error.log
+
+/public/assets
+.byebug_history
+/coverage
+.DS_Store
+
+
+# Ignore master key for decrypting credentials and more.
+/config/master.key
diff --git a/.ruby-version b/.ruby-version
new file mode 100644
index 000000000..160fe391c
--- /dev/null
+++ b/.ruby-version
@@ -0,0 +1 @@
+2.5.5
\ No newline at end of file
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 000000000..87a48610f
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,83 @@
+source 'https://rubygems.org'
+git_source(:github) { |repo| "https://github.com/#{repo}.git" }
+
+ruby '2.5.5'
+
+# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
+gem 'rails', '~> 5.2.3'
+# Use postgresql as the database for Active Record
+gem 'pg', '>= 0.18', '< 2.0'
+# Use Puma as the app server
+gem 'puma', '~> 3.11'
+# Use SCSS for stylesheets
+gem 'sass-rails', '~> 5.0'
+# Use Uglifier as compressor for JavaScript assets
+gem 'uglifier', '>= 1.3.0'
+# See https://github.com/rails/execjs#readme for more supported runtimes
+# gem 'mini_racer', platforms: :ruby
+
+# Use CoffeeScript for .coffee assets and views
+# gem 'coffee-rails', '~> 4.2'
+# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
+gem 'turbolinks', '~> 5'
+# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
+gem 'jbuilder', '~> 2.5'
+# Use Redis adapter to run Action Cable in production
+# gem 'redis', '~> 4.0'
+# Use ActiveModel has_secure_password
+# gem 'bcrypt', '~> 3.1.7'
+
+# Use ActiveStorage variant
+# gem 'mini_magick', '~> 4.8'
+
+# Use Capistrano for deployment
+# gem 'capistrano-rails', group: :development
+
+# Reduces boot times through caching; required in config/boot.rb
+gem 'bootsnap', '>= 1.1.0', require: false
+
+group :development, :test do
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
+ gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
+end
+
+group :development do
+ # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
+ gem 'web-console', '>= 3.3.0'
+ gem 'listen', '>= 3.0.5', '< 3.2'
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
+ gem 'spring'
+ gem 'spring-watcher-listen', '~> 2.0.0'
+end
+
+group :test do
+ # Adds support for Capybara system testing and selenium driver
+ gem 'capybara', '>= 2.15'
+ gem 'selenium-webdriver'
+ # Easy installation and use of chromedriver to run system tests with Chrome
+ gem 'chromedriver-helper'
+end
+
+# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
+gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
+
+gem 'jquery-turbolinks'
+gem 'jquery-rails'
+group :development, :test do
+ gem 'pry-rails'
+end
+
+group :development do
+ gem 'better_errors'
+ gem 'binding_of_caller'
+ gem 'guard'
+ gem 'guard-minitest'
+ gem 'debase', '>= 0.2.4.1'
+ gem 'ruby-debug-ide', '>= 0.7.0'
+end
+
+group :test do
+ gem 'minitest-rails'
+ gem 'minitest-reporters'
+ gem 'minitest-skip'
+end
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 000000000..1696f55d3
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,277 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ actioncable (5.2.3)
+ actionpack (= 5.2.3)
+ nio4r (~> 2.0)
+ websocket-driver (>= 0.6.1)
+ actionmailer (5.2.3)
+ actionpack (= 5.2.3)
+ actionview (= 5.2.3)
+ activejob (= 5.2.3)
+ mail (~> 2.5, >= 2.5.4)
+ rails-dom-testing (~> 2.0)
+ actionpack (5.2.3)
+ actionview (= 5.2.3)
+ activesupport (= 5.2.3)
+ rack (~> 2.0)
+ rack-test (>= 0.6.3)
+ rails-dom-testing (~> 2.0)
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
+ actionview (5.2.3)
+ activesupport (= 5.2.3)
+ builder (~> 3.1)
+ erubi (~> 1.4)
+ rails-dom-testing (~> 2.0)
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
+ activejob (5.2.3)
+ activesupport (= 5.2.3)
+ globalid (>= 0.3.6)
+ activemodel (5.2.3)
+ activesupport (= 5.2.3)
+ activerecord (5.2.3)
+ activemodel (= 5.2.3)
+ activesupport (= 5.2.3)
+ arel (>= 9.0)
+ activestorage (5.2.3)
+ actionpack (= 5.2.3)
+ activerecord (= 5.2.3)
+ marcel (~> 0.3.1)
+ activesupport (5.2.3)
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ i18n (>= 0.7, < 2)
+ minitest (~> 5.1)
+ tzinfo (~> 1.1)
+ addressable (2.7.0)
+ public_suffix (>= 2.0.2, < 5.0)
+ ansi (1.5.0)
+ archive-zip (0.12.0)
+ io-like (~> 0.3.0)
+ arel (9.0.0)
+ better_errors (2.5.1)
+ coderay (>= 1.0.0)
+ erubi (>= 1.0.0)
+ rack (>= 0.9.0)
+ bindex (0.8.1)
+ binding_of_caller (0.8.0)
+ debug_inspector (>= 0.0.1)
+ bootsnap (1.4.5)
+ msgpack (~> 1.0)
+ builder (3.2.3)
+ byebug (11.0.1)
+ capybara (3.29.0)
+ addressable
+ mini_mime (>= 0.1.3)
+ nokogiri (~> 1.8)
+ rack (>= 1.6.0)
+ rack-test (>= 0.6.3)
+ regexp_parser (~> 1.5)
+ xpath (~> 3.2)
+ childprocess (3.0.0)
+ chromedriver-helper (2.1.1)
+ archive-zip (~> 0.10)
+ nokogiri (~> 1.8)
+ coderay (1.1.2)
+ concurrent-ruby (1.1.5)
+ crass (1.0.4)
+ debase (0.2.4.1)
+ debase-ruby_core_source (>= 0.10.2)
+ debase-ruby_core_source (0.10.6)
+ debug_inspector (0.0.3)
+ erubi (1.9.0)
+ execjs (2.7.0)
+ ffi (1.11.1)
+ formatador (0.2.5)
+ globalid (0.4.2)
+ activesupport (>= 4.2.0)
+ guard (2.15.1)
+ formatador (>= 0.2.4)
+ listen (>= 2.7, < 4.0)
+ lumberjack (>= 1.0.12, < 2.0)
+ nenv (~> 0.1)
+ notiffany (~> 0.0)
+ pry (>= 0.9.12)
+ shellany (~> 0.0)
+ thor (>= 0.18.1)
+ guard-compat (1.2.1)
+ guard-minitest (2.4.6)
+ guard-compat (~> 1.2)
+ minitest (>= 3.0)
+ i18n (1.7.0)
+ concurrent-ruby (~> 1.0)
+ io-like (0.3.0)
+ jbuilder (2.9.1)
+ activesupport (>= 4.2.0)
+ jquery-rails (4.3.5)
+ rails-dom-testing (>= 1, < 3)
+ railties (>= 4.2.0)
+ thor (>= 0.14, < 2.0)
+ jquery-turbolinks (2.1.0)
+ railties (>= 3.1.0)
+ turbolinks
+ listen (3.1.5)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ ruby_dep (~> 1.2)
+ loofah (2.3.0)
+ crass (~> 1.0.2)
+ nokogiri (>= 1.5.9)
+ lumberjack (1.0.13)
+ mail (2.7.1)
+ mini_mime (>= 0.1.1)
+ marcel (0.3.3)
+ mimemagic (~> 0.3.2)
+ method_source (0.9.2)
+ mimemagic (0.3.3)
+ mini_mime (1.0.2)
+ mini_portile2 (2.4.0)
+ minitest (5.12.2)
+ minitest-rails (5.2.0)
+ minitest (~> 5.10)
+ railties (~> 5.2.0)
+ minitest-reporters (1.4.0)
+ ansi
+ builder
+ minitest (>= 5.0)
+ ruby-progressbar
+ minitest-skip (0.0.1)
+ minitest (~> 5.0)
+ msgpack (1.3.1)
+ nenv (0.3.0)
+ nio4r (2.5.2)
+ nokogiri (1.10.4)
+ mini_portile2 (~> 2.4.0)
+ notiffany (0.1.3)
+ nenv (~> 0.1)
+ shellany (~> 0.0)
+ pg (1.1.4)
+ pry (0.12.2)
+ coderay (~> 1.1.0)
+ method_source (~> 0.9.0)
+ pry-rails (0.3.9)
+ pry (>= 0.10.4)
+ public_suffix (4.0.1)
+ puma (3.12.1)
+ rack (2.0.7)
+ rack-test (1.1.0)
+ rack (>= 1.0, < 3)
+ rails (5.2.3)
+ actioncable (= 5.2.3)
+ actionmailer (= 5.2.3)
+ actionpack (= 5.2.3)
+ actionview (= 5.2.3)
+ activejob (= 5.2.3)
+ activemodel (= 5.2.3)
+ activerecord (= 5.2.3)
+ activestorage (= 5.2.3)
+ activesupport (= 5.2.3)
+ bundler (>= 1.3.0)
+ railties (= 5.2.3)
+ sprockets-rails (>= 2.0.0)
+ rails-dom-testing (2.0.3)
+ activesupport (>= 4.2.0)
+ nokogiri (>= 1.6)
+ rails-html-sanitizer (1.3.0)
+ loofah (~> 2.3)
+ railties (5.2.3)
+ actionpack (= 5.2.3)
+ activesupport (= 5.2.3)
+ method_source
+ rake (>= 0.8.7)
+ thor (>= 0.19.0, < 2.0)
+ rake (13.0.0)
+ rb-fsevent (0.10.3)
+ rb-inotify (0.10.0)
+ ffi (~> 1.0)
+ regexp_parser (1.6.0)
+ ruby-debug-ide (0.7.0)
+ rake (>= 0.8.1)
+ ruby-progressbar (1.10.1)
+ ruby_dep (1.5.0)
+ rubyzip (2.0.0)
+ sass (3.7.4)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ sass-rails (5.1.0)
+ railties (>= 5.2.0)
+ sass (~> 3.1)
+ sprockets (>= 2.8, < 4.0)
+ sprockets-rails (>= 2.0, < 4.0)
+ tilt (>= 1.1, < 3)
+ selenium-webdriver (3.142.6)
+ childprocess (>= 0.5, < 4.0)
+ rubyzip (>= 1.2.2)
+ shellany (0.0.1)
+ spring (2.1.0)
+ spring-watcher-listen (2.0.1)
+ listen (>= 2.7, < 4.0)
+ spring (>= 1.2, < 3.0)
+ sprockets (3.7.2)
+ concurrent-ruby (~> 1.0)
+ rack (> 1, < 3)
+ sprockets-rails (3.2.1)
+ actionpack (>= 4.0)
+ activesupport (>= 4.0)
+ sprockets (>= 3.0.0)
+ thor (0.20.3)
+ thread_safe (0.3.6)
+ tilt (2.0.10)
+ turbolinks (5.2.1)
+ turbolinks-source (~> 5.2)
+ turbolinks-source (5.2.0)
+ tzinfo (1.2.5)
+ thread_safe (~> 0.1)
+ uglifier (4.2.0)
+ execjs (>= 0.3.0, < 3)
+ web-console (3.7.0)
+ actionview (>= 5.0)
+ activemodel (>= 5.0)
+ bindex (>= 0.4.0)
+ railties (>= 5.0)
+ websocket-driver (0.7.1)
+ websocket-extensions (>= 0.1.0)
+ websocket-extensions (0.1.4)
+ xpath (3.2.0)
+ nokogiri (~> 1.8)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ better_errors
+ binding_of_caller
+ bootsnap (>= 1.1.0)
+ byebug
+ capybara (>= 2.15)
+ chromedriver-helper
+ debase (>= 0.2.4.1)
+ guard
+ guard-minitest
+ jbuilder (~> 2.5)
+ jquery-rails
+ jquery-turbolinks
+ listen (>= 3.0.5, < 3.2)
+ minitest-rails
+ minitest-reporters
+ minitest-skip
+ pg (>= 0.18, < 2.0)
+ pry-rails
+ puma (~> 3.11)
+ rails (~> 5.2.3)
+ ruby-debug-ide (>= 0.7.0)
+ sass-rails (~> 5.0)
+ selenium-webdriver
+ spring
+ spring-watcher-listen (~> 2.0.0)
+ turbolinks (~> 5)
+ tzinfo-data
+ uglifier (>= 1.3.0)
+ web-console (>= 3.3.0)
+
+RUBY VERSION
+ ruby 2.5.5p157
+
+BUNDLED WITH
+ 2.0.2
diff --git a/Guardfile b/Guardfile
new file mode 100644
index 000000000..e34f706f4
--- /dev/null
+++ b/Guardfile
@@ -0,0 +1,9 @@
+guard :minitest, autorun: false, spring: true do
+ watch(%r{^app/(.+).rb$}) { |m| "test/#{m[1]}_test.rb" }
+ watch(%r{^app/controllers/application_controller.rb$}) { 'test/controllers' }
+ watch(%r{^app/controllers/(.+)_controller.rb$}) { |m| "test/integration/#{m[1]}_test.rb" }
+ watch(%r{^app/views/(.+)_mailer/.+}) { |m| "test/mailers/#{m[1]}_mailer_test.rb" }
+ watch(%r{^lib/(.+).rb$}) { |m| "test/lib/#{m[1]}_test.rb" }
+ watch(%r{^test/.+_test.rb$})
+ watch(%r{^test/test_helper.rb$}) { 'test' }
+end
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 000000000..e85f91391
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,6 @@
+# Add your own tasks in files placed in lib/tasks ending in .rake,
+# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
+
+require_relative 'config/application'
+
+Rails.application.load_tasks
diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js
new file mode 100644
index 000000000..b16e53d6d
--- /dev/null
+++ b/app/assets/config/manifest.js
@@ -0,0 +1,3 @@
+//= link_tree ../images
+//= link_directory ../javascripts .js
+//= link_directory ../stylesheets .css
diff --git a/app/assets/images/.keep b/app/assets/images/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
new file mode 100644
index 000000000..82e6f0f6c
--- /dev/null
+++ b/app/assets/javascripts/application.js
@@ -0,0 +1,16 @@
+// This is a manifest file that'll be compiled into application.js, which will include all the files
+// listed below.
+//
+// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's
+// vendor/assets/javascripts directory can be referenced here using a relative path.
+//
+// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
+// compiled file. JavaScript code in this file should be added after the last require_* statement.
+//
+// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
+// about supported directives.
+//
+//= require rails-ujs
+//= require activestorage
+//= require turbolinks
+//= require_tree .
diff --git a/app/assets/javascripts/cable.js b/app/assets/javascripts/cable.js
new file mode 100644
index 000000000..739aa5f02
--- /dev/null
+++ b/app/assets/javascripts/cable.js
@@ -0,0 +1,13 @@
+// Action Cable provides the framework to deal with WebSockets in Rails.
+// You can generate new channels where WebSocket features live using the `rails generate channel` command.
+//
+//= require action_cable
+//= require_self
+//= require_tree ./channels
+
+(function() {
+ this.App || (this.App = {});
+
+ App.cable = ActionCable.createConsumer();
+
+}).call(this);
diff --git a/app/assets/javascripts/channels/.keep b/app/assets/javascripts/channels/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css
new file mode 100644
index 000000000..d05ea0f51
--- /dev/null
+++ b/app/assets/stylesheets/application.css
@@ -0,0 +1,15 @@
+/*
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
+ * listed below.
+ *
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
+ * vendor/assets/stylesheets directory can be referenced here using a relative path.
+ *
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
+ * files in this directory. Styles in this file should be added after the last require_* statement.
+ * It is generally better to create a new file per style scope.
+ *
+ *= require_tree .
+ *= require_self
+ */
diff --git a/app/channels/application_cable/channel.rb b/app/channels/application_cable/channel.rb
new file mode 100644
index 000000000..d67269728
--- /dev/null
+++ b/app/channels/application_cable/channel.rb
@@ -0,0 +1,4 @@
+module ApplicationCable
+ class Channel < ActionCable::Channel::Base
+ end
+end
diff --git a/app/channels/application_cable/connection.rb b/app/channels/application_cable/connection.rb
new file mode 100644
index 000000000..0ff5442f4
--- /dev/null
+++ b/app/channels/application_cable/connection.rb
@@ -0,0 +1,4 @@
+module ApplicationCable
+ class Connection < ActionCable::Connection::Base
+ end
+end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
new file mode 100644
index 000000000..09705d12a
--- /dev/null
+++ b/app/controllers/application_controller.rb
@@ -0,0 +1,2 @@
+class ApplicationController < ActionController::Base
+end
diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
new file mode 100644
index 000000000..de6be7945
--- /dev/null
+++ b/app/helpers/application_helper.rb
@@ -0,0 +1,2 @@
+module ApplicationHelper
+end
diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb
new file mode 100644
index 000000000..a009ace51
--- /dev/null
+++ b/app/jobs/application_job.rb
@@ -0,0 +1,2 @@
+class ApplicationJob < ActiveJob::Base
+end
diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb
new file mode 100644
index 000000000..286b2239d
--- /dev/null
+++ b/app/mailers/application_mailer.rb
@@ -0,0 +1,4 @@
+class ApplicationMailer < ActionMailer::Base
+ default from: 'from@example.com'
+ layout 'mailer'
+end
diff --git a/app/models/application_record.rb b/app/models/application_record.rb
new file mode 100644
index 000000000..10a4cba84
--- /dev/null
+++ b/app/models/application_record.rb
@@ -0,0 +1,3 @@
+class ApplicationRecord < ActiveRecord::Base
+ self.abstract_class = true
+end
diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
new file mode 100644
index 000000000..692ca547e
--- /dev/null
+++ b/app/views/layouts/application.html.erb
@@ -0,0 +1,15 @@
+
+
+
+ RideShareRails
+ <%= csrf_meta_tags %>
+ <%= csp_meta_tag %>
+
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
+ <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
+
+
+
+ <%= yield %>
+
+
diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb
new file mode 100644
index 000000000..cbd34d2e9
--- /dev/null
+++ b/app/views/layouts/mailer.html.erb
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+ <%= yield %>
+
+
diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb
new file mode 100644
index 000000000..37f0bddbd
--- /dev/null
+++ b/app/views/layouts/mailer.text.erb
@@ -0,0 +1 @@
+<%= yield %>
diff --git a/bin/bundle b/bin/bundle
new file mode 100755
index 000000000..f19acf5b5
--- /dev/null
+++ b/bin/bundle
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
+load Gem.bin_path('bundler', 'bundle')
diff --git a/bin/rails b/bin/rails
new file mode 100755
index 000000000..5badb2fde
--- /dev/null
+++ b/bin/rails
@@ -0,0 +1,9 @@
+#!/usr/bin/env ruby
+begin
+ load File.expand_path('../spring', __FILE__)
+rescue LoadError => e
+ raise unless e.message.include?('spring')
+end
+APP_PATH = File.expand_path('../config/application', __dir__)
+require_relative '../config/boot'
+require 'rails/commands'
diff --git a/bin/rake b/bin/rake
new file mode 100755
index 000000000..d87d5f578
--- /dev/null
+++ b/bin/rake
@@ -0,0 +1,9 @@
+#!/usr/bin/env ruby
+begin
+ load File.expand_path('../spring', __FILE__)
+rescue LoadError => e
+ raise unless e.message.include?('spring')
+end
+require_relative '../config/boot'
+require 'rake'
+Rake.application.run
diff --git a/bin/setup b/bin/setup
new file mode 100755
index 000000000..94fd4d797
--- /dev/null
+++ b/bin/setup
@@ -0,0 +1,36 @@
+#!/usr/bin/env ruby
+require 'fileutils'
+include FileUtils
+
+# path to your application root.
+APP_ROOT = File.expand_path('..', __dir__)
+
+def system!(*args)
+ system(*args) || abort("\n== Command #{args} failed ==")
+end
+
+chdir APP_ROOT do
+ # This script is a starting point to setup your application.
+ # Add necessary setup steps to this file.
+
+ puts '== Installing dependencies =='
+ system! 'gem install bundler --conservative'
+ system('bundle check') || system!('bundle install')
+
+ # Install JavaScript dependencies if using Yarn
+ # system('bin/yarn')
+
+ # puts "\n== Copying sample files =="
+ # unless File.exist?('config/database.yml')
+ # cp 'config/database.yml.sample', 'config/database.yml'
+ # end
+
+ puts "\n== Preparing database =="
+ system! 'bin/rails db:setup'
+
+ puts "\n== Removing old logs and tempfiles =="
+ system! 'bin/rails log:clear tmp:clear'
+
+ puts "\n== Restarting application server =="
+ system! 'bin/rails restart'
+end
diff --git a/bin/spring b/bin/spring
new file mode 100755
index 000000000..d89ee495f
--- /dev/null
+++ b/bin/spring
@@ -0,0 +1,17 @@
+#!/usr/bin/env ruby
+
+# This file loads Spring without using Bundler, in order to be fast.
+# It gets overwritten when you run the `spring binstub` command.
+
+unless defined?(Spring)
+ require 'rubygems'
+ require 'bundler'
+
+ lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
+ spring = lockfile.specs.detect { |spec| spec.name == 'spring' }
+ if spring
+ Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
+ gem 'spring', spring.version
+ require 'spring/binstub'
+ end
+end
diff --git a/bin/update b/bin/update
new file mode 100755
index 000000000..58bfaed51
--- /dev/null
+++ b/bin/update
@@ -0,0 +1,31 @@
+#!/usr/bin/env ruby
+require 'fileutils'
+include FileUtils
+
+# path to your application root.
+APP_ROOT = File.expand_path('..', __dir__)
+
+def system!(*args)
+ system(*args) || abort("\n== Command #{args} failed ==")
+end
+
+chdir APP_ROOT do
+ # This script is a way to update your development environment automatically.
+ # Add necessary update steps to this file.
+
+ puts '== Installing dependencies =='
+ system! 'gem install bundler --conservative'
+ system('bundle check') || system!('bundle install')
+
+ # Install JavaScript dependencies if using Yarn
+ # system('bin/yarn')
+
+ puts "\n== Updating database =="
+ system! 'bin/rails db:migrate'
+
+ puts "\n== Removing old logs and tempfiles =="
+ system! 'bin/rails log:clear tmp:clear'
+
+ puts "\n== Restarting application server =="
+ system! 'bin/rails restart'
+end
diff --git a/bin/yarn b/bin/yarn
new file mode 100755
index 000000000..460dd565b
--- /dev/null
+++ b/bin/yarn
@@ -0,0 +1,11 @@
+#!/usr/bin/env ruby
+APP_ROOT = File.expand_path('..', __dir__)
+Dir.chdir(APP_ROOT) do
+ begin
+ exec "yarnpkg", *ARGV
+ rescue Errno::ENOENT
+ $stderr.puts "Yarn executable was not detected in the system."
+ $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
+ exit 1
+ end
+end
diff --git a/config.ru b/config.ru
new file mode 100644
index 000000000..f7ba0b527
--- /dev/null
+++ b/config.ru
@@ -0,0 +1,5 @@
+# This file is used by Rack-based servers to start the application.
+
+require_relative 'config/environment'
+
+run Rails.application
diff --git a/config/application.rb b/config/application.rb
new file mode 100644
index 000000000..39685a85a
--- /dev/null
+++ b/config/application.rb
@@ -0,0 +1,26 @@
+require_relative 'boot'
+
+require 'rails/all'
+
+# Require the gems listed in Gemfile, including any gems
+# you've limited to :test, :development, or :production.
+Bundler.require(*Rails.groups)
+
+module RideShareRails
+ class Application < Rails::Application
+ config.generators do |g|
+ # Force new test files to be generated in the minitest-spec style
+ g.test_framework :minitest, spec: true
+
+ # Always use .js files, never .coffee
+ g.javascript_engine :js
+ end
+ # Initialize configuration defaults for originally generated Rails version.
+ config.load_defaults 5.2
+
+ # Settings in config/environments/* take precedence over those specified here.
+ # Application configuration can go into files in config/initializers
+ # -- all .rb files in that directory are automatically loaded after loading
+ # the framework and any gems in your application.
+ end
+end
diff --git a/config/boot.rb b/config/boot.rb
new file mode 100644
index 000000000..b9e460cef
--- /dev/null
+++ b/config/boot.rb
@@ -0,0 +1,4 @@
+ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
+
+require 'bundler/setup' # Set up gems listed in the Gemfile.
+require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
diff --git a/config/cable.yml b/config/cable.yml
new file mode 100644
index 000000000..0b6186ad8
--- /dev/null
+++ b/config/cable.yml
@@ -0,0 +1,10 @@
+development:
+ adapter: async
+
+test:
+ adapter: async
+
+production:
+ adapter: redis
+ url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
+ channel_prefix: ride-share-rails_production
diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc
new file mode 100644
index 000000000..c8c25ecd8
--- /dev/null
+++ b/config/credentials.yml.enc
@@ -0,0 +1 @@
+//ZhmYtyi40RuRo5drRYGkg+EgcbMSl34BvS0GnDJUfNfuDuvzKRafss7UJ36OY16SVLnh5xakaCzrK4op+8BqjTt2a4HrfIJflTj+ojIFCAl/WRgWX+1oF+XyPhSYPnMBbngjUsj3eBs3lCqzgbD97ePMPFRawPRQEtGxEGBzaWcw1p8LBlHSe1szPnTVrTNIj+WOXbFUiN+TL+wCqUCOkRqomj+RsFPfPtbWEjkgIjV4k53jwsl4J3UDrkVNt9yE/nFpc7/nYg3mziAWce3weEMf64W/T780GVvE2fPnpUMA3UeM5/+BxEC2Bm/5puXdHlektqrOke32E9Yteivhf5R4BqTE+OWyfkkPuVbXlygkPKZmHAT18AI2u9K63+SmDBvQxQ//Zy/uMacYOXYBN+UP2xHEJXtuSi--eEocSqxTGChFKoxT--/NIqfd2gVFdY1idshX8VsA==
\ No newline at end of file
diff --git a/config/database.yml b/config/database.yml
new file mode 100644
index 000000000..684902e69
--- /dev/null
+++ b/config/database.yml
@@ -0,0 +1,85 @@
+# PostgreSQL. Versions 9.1 and up are supported.
+#
+# Install the pg driver:
+# gem install pg
+# On OS X with Homebrew:
+# gem install pg -- --with-pg-config=/usr/local/bin/pg_config
+# On OS X with MacPorts:
+# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
+# On Windows:
+# gem install pg
+# Choose the win32 build.
+# Install PostgreSQL and put its /bin directory on your path.
+#
+# Configure Using Gemfile
+# gem 'pg'
+#
+default: &default
+ adapter: postgresql
+ encoding: unicode
+ # For details on connection pooling, see Rails configuration guide
+ # http://guides.rubyonrails.org/configuring.html#database-pooling
+ pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
+
+development:
+ <<: *default
+ database: ride-share-rails_development
+
+ # The specified database role being used to connect to postgres.
+ # To create additional roles in postgres see `$ createuser --help`.
+ # When left blank, postgres will use the default role. This is
+ # the same name as the operating system user that initialized the database.
+ #username: ride-share-rails
+
+ # The password associated with the postgres role (username).
+ #password:
+
+ # Connect on a TCP socket. Omitted by default since the client uses a
+ # domain socket that doesn't need configuration. Windows does not have
+ # domain sockets, so uncomment these lines.
+ #host: localhost
+
+ # The TCP port the server listens on. Defaults to 5432.
+ # If your server runs on a different port number, change accordingly.
+ #port: 5432
+
+ # Schema search path. The server defaults to $user,public
+ #schema_search_path: myapp,sharedapp,public
+
+ # Minimum log levels, in increasing order:
+ # debug5, debug4, debug3, debug2, debug1,
+ # log, notice, warning, error, fatal, and panic
+ # Defaults to warning.
+ #min_messages: notice
+
+# Warning: The database defined as "test" will be erased and
+# re-generated from your development database when you run "rake".
+# Do not set this db to the same as development or production.
+test:
+ <<: *default
+ database: ride-share-rails_test
+
+# As with config/secrets.yml, you never want to store sensitive information,
+# like your database password, in your source code. If your source code is
+# ever seen by anyone, they now have access to your database.
+#
+# Instead, provide the password as a unix environment variable when you boot
+# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
+# for a full rundown on how to provide these environment variables in a
+# production deployment.
+#
+# On Heroku and other platform providers, you may have a full connection URL
+# available as an environment variable. For example:
+#
+# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
+#
+# You can use this database configuration with:
+#
+# production:
+# url: <%= ENV['DATABASE_URL'] %>
+#
+production:
+ <<: *default
+ database: ride-share-rails_production
+ username: ride-share-rails
+ password: <%= ENV['RIDE-SHARE-RAILS_DATABASE_PASSWORD'] %>
diff --git a/config/environment.rb b/config/environment.rb
new file mode 100644
index 000000000..426333bb4
--- /dev/null
+++ b/config/environment.rb
@@ -0,0 +1,5 @@
+# Load the Rails application.
+require_relative 'application'
+
+# Initialize the Rails application.
+Rails.application.initialize!
diff --git a/config/environments/development.rb b/config/environments/development.rb
new file mode 100644
index 000000000..1311e3e4e
--- /dev/null
+++ b/config/environments/development.rb
@@ -0,0 +1,61 @@
+Rails.application.configure do
+ # Settings specified here will take precedence over those in config/application.rb.
+
+ # In the development environment your application's code is reloaded on
+ # every request. This slows down response time but is perfect for development
+ # since you don't have to restart the web server when you make code changes.
+ config.cache_classes = false
+
+ # Do not eager load code on boot.
+ config.eager_load = false
+
+ # Show full error reports.
+ config.consider_all_requests_local = true
+
+ # Enable/disable caching. By default caching is disabled.
+ # Run rails dev:cache to toggle caching.
+ if Rails.root.join('tmp', 'caching-dev.txt').exist?
+ config.action_controller.perform_caching = true
+
+ config.cache_store = :memory_store
+ config.public_file_server.headers = {
+ 'Cache-Control' => "public, max-age=#{2.days.to_i}"
+ }
+ else
+ config.action_controller.perform_caching = false
+
+ config.cache_store = :null_store
+ end
+
+ # Store uploaded files on the local file system (see config/storage.yml for options)
+ config.active_storage.service = :local
+
+ # Don't care if the mailer can't send.
+ config.action_mailer.raise_delivery_errors = false
+
+ config.action_mailer.perform_caching = false
+
+ # Print deprecation notices to the Rails logger.
+ config.active_support.deprecation = :log
+
+ # Raise an error on page load if there are pending migrations.
+ config.active_record.migration_error = :page_load
+
+ # Highlight code that triggered database queries in logs.
+ config.active_record.verbose_query_logs = true
+
+ # Debug mode disables concatenation and preprocessing of assets.
+ # This option may cause significant delays in view rendering with a large
+ # number of complex assets.
+ config.assets.debug = true
+
+ # Suppress logger output for asset requests.
+ config.assets.quiet = true
+
+ # Raises error for missing translations
+ # config.action_view.raise_on_missing_translations = true
+
+ # Use an evented file watcher to asynchronously detect changes in source code,
+ # routes, locales, etc. This feature depends on the listen gem.
+ config.file_watcher = ActiveSupport::EventedFileUpdateChecker
+end
diff --git a/config/environments/production.rb b/config/environments/production.rb
new file mode 100644
index 000000000..cee449f7b
--- /dev/null
+++ b/config/environments/production.rb
@@ -0,0 +1,94 @@
+Rails.application.configure do
+ # Settings specified here will take precedence over those in config/application.rb.
+
+ # Code is not reloaded between requests.
+ config.cache_classes = true
+
+ # Eager load code on boot. This eager loads most of Rails and
+ # your application in memory, allowing both threaded web servers
+ # and those relying on copy on write to perform better.
+ # Rake tasks automatically ignore this option for performance.
+ config.eager_load = true
+
+ # Full error reports are disabled and caching is turned on.
+ config.consider_all_requests_local = false
+ config.action_controller.perform_caching = true
+
+ # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
+ # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
+ # config.require_master_key = true
+
+ # Disable serving static files from the `/public` folder by default since
+ # Apache or NGINX already handles this.
+ config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
+
+ # Compress JavaScripts and CSS.
+ config.assets.js_compressor = :uglifier
+ # config.assets.css_compressor = :sass
+
+ # Do not fallback to assets pipeline if a precompiled asset is missed.
+ config.assets.compile = false
+
+ # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
+
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server.
+ # config.action_controller.asset_host = 'http://assets.example.com'
+
+ # Specifies the header that your server uses for sending files.
+ # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
+
+ # Store uploaded files on the local file system (see config/storage.yml for options)
+ config.active_storage.service = :local
+
+ # Mount Action Cable outside main process or domain
+ # config.action_cable.mount_path = nil
+ # config.action_cable.url = 'wss://example.com/cable'
+ # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
+
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
+ # config.force_ssl = true
+
+ # Use the lowest log level to ensure availability of diagnostic information
+ # when problems arise.
+ config.log_level = :debug
+
+ # Prepend all log lines with the following tags.
+ config.log_tags = [ :request_id ]
+
+ # Use a different cache store in production.
+ # config.cache_store = :mem_cache_store
+
+ # Use a real queuing backend for Active Job (and separate queues per environment)
+ # config.active_job.queue_adapter = :resque
+ # config.active_job.queue_name_prefix = "ride-share-rails_#{Rails.env}"
+
+ config.action_mailer.perform_caching = false
+
+ # Ignore bad email addresses and do not raise email delivery errors.
+ # Set this to true and configure the email server for immediate delivery to raise delivery errors.
+ # config.action_mailer.raise_delivery_errors = false
+
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
+ # the I18n.default_locale when a translation cannot be found).
+ config.i18n.fallbacks = true
+
+ # Send deprecation notices to registered listeners.
+ config.active_support.deprecation = :notify
+
+ # Use default logging formatter so that PID and timestamp are not suppressed.
+ config.log_formatter = ::Logger::Formatter.new
+
+ # Use a different logger for distributed setups.
+ # require 'syslog/logger'
+ # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
+
+ if ENV["RAILS_LOG_TO_STDOUT"].present?
+ logger = ActiveSupport::Logger.new(STDOUT)
+ logger.formatter = config.log_formatter
+ config.logger = ActiveSupport::TaggedLogging.new(logger)
+ end
+
+ # Do not dump schema after migrations.
+ config.active_record.dump_schema_after_migration = false
+end
diff --git a/config/environments/test.rb b/config/environments/test.rb
new file mode 100644
index 000000000..0a38fd3ce
--- /dev/null
+++ b/config/environments/test.rb
@@ -0,0 +1,46 @@
+Rails.application.configure do
+ # Settings specified here will take precedence over those in config/application.rb.
+
+ # The test environment is used exclusively to run your application's
+ # test suite. You never need to work with it otherwise. Remember that
+ # your test database is "scratch space" for the test suite and is wiped
+ # and recreated between test runs. Don't rely on the data there!
+ config.cache_classes = true
+
+ # Do not eager load code on boot. This avoids loading your whole application
+ # just for the purpose of running a single test. If you are using a tool that
+ # preloads Rails for running tests, you may have to set it to true.
+ config.eager_load = false
+
+ # Configure public file server for tests with Cache-Control for performance.
+ config.public_file_server.enabled = true
+ config.public_file_server.headers = {
+ 'Cache-Control' => "public, max-age=#{1.hour.to_i}"
+ }
+
+ # Show full error reports and disable caching.
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Raise exceptions instead of rendering exception templates.
+ config.action_dispatch.show_exceptions = false
+
+ # Disable request forgery protection in test environment.
+ config.action_controller.allow_forgery_protection = false
+
+ # Store uploaded files on the local file system in a temporary directory
+ config.active_storage.service = :test
+
+ config.action_mailer.perform_caching = false
+
+ # Tell Action Mailer not to deliver emails to the real world.
+ # The :test delivery method accumulates sent emails in the
+ # ActionMailer::Base.deliveries array.
+ config.action_mailer.delivery_method = :test
+
+ # Print deprecation notices to the stderr.
+ config.active_support.deprecation = :stderr
+
+ # Raises error for missing translations
+ # config.action_view.raise_on_missing_translations = true
+end
diff --git a/config/initializers/action_view.rb b/config/initializers/action_view.rb
new file mode 100644
index 000000000..142d382f8
--- /dev/null
+++ b/config/initializers/action_view.rb
@@ -0,0 +1 @@
+Rails.application.config.action_view.form_with_generates_remote_forms = false
diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb
new file mode 100644
index 000000000..89d2efab2
--- /dev/null
+++ b/config/initializers/application_controller_renderer.rb
@@ -0,0 +1,8 @@
+# Be sure to restart your server when you modify this file.
+
+# ActiveSupport::Reloader.to_prepare do
+# ApplicationController.renderer.defaults.merge!(
+# http_host: 'example.org',
+# https: false
+# )
+# end
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
new file mode 100644
index 000000000..4b828e80c
--- /dev/null
+++ b/config/initializers/assets.rb
@@ -0,0 +1,14 @@
+# Be sure to restart your server when you modify this file.
+
+# Version of your assets, change this if you want to expire all your assets.
+Rails.application.config.assets.version = '1.0'
+
+# Add additional assets to the asset load path.
+# Rails.application.config.assets.paths << Emoji.images_path
+# Add Yarn node_modules folder to the asset load path.
+Rails.application.config.assets.paths << Rails.root.join('node_modules')
+
+# Precompile additional assets.
+# application.js, application.css, and all non-JS/CSS in the app/assets
+# folder are already added.
+# Rails.application.config.assets.precompile += %w( admin.js admin.css )
diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb
new file mode 100644
index 000000000..59385cdf3
--- /dev/null
+++ b/config/initializers/backtrace_silencers.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
+# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
+
+# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
+# Rails.backtrace_cleaner.remove_silencers!
diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb
new file mode 100644
index 000000000..d3bcaa5ec
--- /dev/null
+++ b/config/initializers/content_security_policy.rb
@@ -0,0 +1,25 @@
+# Be sure to restart your server when you modify this file.
+
+# Define an application-wide content security policy
+# For further information see the following documentation
+# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
+
+# Rails.application.config.content_security_policy do |policy|
+# policy.default_src :self, :https
+# policy.font_src :self, :https, :data
+# policy.img_src :self, :https, :data
+# policy.object_src :none
+# policy.script_src :self, :https
+# policy.style_src :self, :https
+
+# # Specify URI for violation reports
+# # policy.report_uri "/csp-violation-report-endpoint"
+# end
+
+# If you are using UJS then enable automatic nonce generation
+# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
+
+# Report CSP violations to a specified URI
+# For further information see the following documentation:
+# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
+# Rails.application.config.content_security_policy_report_only = true
diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb
new file mode 100644
index 000000000..5a6a32d37
--- /dev/null
+++ b/config/initializers/cookies_serializer.rb
@@ -0,0 +1,5 @@
+# Be sure to restart your server when you modify this file.
+
+# Specify a serializer for the signed and encrypted cookie jars.
+# Valid options are :json, :marshal, and :hybrid.
+Rails.application.config.action_dispatch.cookies_serializer = :json
diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb
new file mode 100644
index 000000000..4a994e1e7
--- /dev/null
+++ b/config/initializers/filter_parameter_logging.rb
@@ -0,0 +1,4 @@
+# Be sure to restart your server when you modify this file.
+
+# Configure sensitive parameters which will be filtered from the log file.
+Rails.application.config.filter_parameters += [:password]
diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
new file mode 100644
index 000000000..ac033bf9d
--- /dev/null
+++ b/config/initializers/inflections.rb
@@ -0,0 +1,16 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new inflection rules using the following format. Inflections
+# are locale specific, and you may define rules for as many different
+# locales as you wish. All of these examples are active by default:
+# ActiveSupport::Inflector.inflections(:en) do |inflect|
+# inflect.plural /^(ox)$/i, '\1en'
+# inflect.singular /^(ox)en/i, '\1'
+# inflect.irregular 'person', 'people'
+# inflect.uncountable %w( fish sheep )
+# end
+
+# These inflection rules are supported but not enabled by default:
+# ActiveSupport::Inflector.inflections(:en) do |inflect|
+# inflect.acronym 'RESTful'
+# end
diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb
new file mode 100644
index 000000000..dc1899682
--- /dev/null
+++ b/config/initializers/mime_types.rb
@@ -0,0 +1,4 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new mime types for use in respond_to blocks:
+# Mime::Type.register "text/richtext", :rtf
diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb
new file mode 100644
index 000000000..bbfc3961b
--- /dev/null
+++ b/config/initializers/wrap_parameters.rb
@@ -0,0 +1,14 @@
+# Be sure to restart your server when you modify this file.
+
+# This file contains settings for ActionController::ParamsWrapper which
+# is enabled by default.
+
+# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
+ActiveSupport.on_load(:action_controller) do
+ wrap_parameters format: [:json]
+end
+
+# To enable root element in JSON for ActiveRecord objects.
+# ActiveSupport.on_load(:active_record) do
+# self.include_root_in_json = true
+# end
diff --git a/config/locales/en.yml b/config/locales/en.yml
new file mode 100644
index 000000000..decc5a857
--- /dev/null
+++ b/config/locales/en.yml
@@ -0,0 +1,33 @@
+# Files in the config/locales directory are used for internationalization
+# and are automatically loaded by Rails. If you want to use locales other
+# than English, add the necessary files in this directory.
+#
+# To use the locales, use `I18n.t`:
+#
+# I18n.t 'hello'
+#
+# In views, this is aliased to just `t`:
+#
+# <%= t('hello') %>
+#
+# To use a different locale, set it with `I18n.locale`:
+#
+# I18n.locale = :es
+#
+# This would use the information in config/locales/es.yml.
+#
+# The following keys must be escaped otherwise they will not be retrieved by
+# the default I18n backend:
+#
+# true, false, on, off, yes, no
+#
+# Instead, surround them with single quotes.
+#
+# en:
+# 'true': 'foo'
+#
+# To learn more, please read the Rails Internationalization guide
+# available at http://guides.rubyonrails.org/i18n.html.
+
+en:
+ hello: "Hello world"
diff --git a/config/puma.rb b/config/puma.rb
new file mode 100644
index 000000000..a5eccf816
--- /dev/null
+++ b/config/puma.rb
@@ -0,0 +1,34 @@
+# Puma can serve each request in a thread from an internal thread pool.
+# The `threads` method setting takes two numbers: a minimum and maximum.
+# Any libraries that use thread pools should be configured to match
+# the maximum value specified for Puma. Default is set to 5 threads for minimum
+# and maximum; this matches the default thread size of Active Record.
+#
+threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
+threads threads_count, threads_count
+
+# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
+#
+port ENV.fetch("PORT") { 3000 }
+
+# Specifies the `environment` that Puma will run in.
+#
+environment ENV.fetch("RAILS_ENV") { "development" }
+
+# Specifies the number of `workers` to boot in clustered mode.
+# Workers are forked webserver processes. If using threads and workers together
+# the concurrency of the application would be max `threads` * `workers`.
+# Workers do not work on JRuby or Windows (both of which do not support
+# processes).
+#
+# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
+
+# Use the `preload_app!` method when specifying a `workers` number.
+# This directive tells Puma to first boot the application and load code
+# before forking the application. This takes advantage of Copy On Write
+# process behavior so workers use less memory.
+#
+# preload_app!
+
+# Allow puma to be restarted by `rails restart` command.
+plugin :tmp_restart
diff --git a/config/routes.rb b/config/routes.rb
new file mode 100644
index 000000000..787824f88
--- /dev/null
+++ b/config/routes.rb
@@ -0,0 +1,3 @@
+Rails.application.routes.draw do
+ # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
+end
diff --git a/config/spring.rb b/config/spring.rb
new file mode 100644
index 000000000..9fa7863f9
--- /dev/null
+++ b/config/spring.rb
@@ -0,0 +1,6 @@
+%w[
+ .ruby-version
+ .rbenv-vars
+ tmp/restart.txt
+ tmp/caching-dev.txt
+].each { |path| Spring.watch(path) }
diff --git a/config/storage.yml b/config/storage.yml
new file mode 100644
index 000000000..d32f76e8f
--- /dev/null
+++ b/config/storage.yml
@@ -0,0 +1,34 @@
+test:
+ service: Disk
+ root: <%= Rails.root.join("tmp/storage") %>
+
+local:
+ service: Disk
+ root: <%= Rails.root.join("storage") %>
+
+# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
+# amazon:
+# service: S3
+# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
+# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
+# region: us-east-1
+# bucket: your_own_bucket
+
+# Remember not to checkin your GCS keyfile to a repository
+# google:
+# service: GCS
+# project: your_project
+# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
+# bucket: your_own_bucket
+
+# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
+# microsoft:
+# service: AzureStorage
+# storage_account_name: your_account_name
+# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
+# container: your_container_name
+
+# mirror:
+# service: Mirror
+# primary: local
+# mirrors: [ amazon, google, microsoft ]
diff --git a/lib/assets/.keep b/lib/assets/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/lib/tasks/.keep b/lib/tasks/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/log/.keep b/log/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/package.json b/package.json
new file mode 100644
index 000000000..75b35d319
--- /dev/null
+++ b/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "ride-share-rails",
+ "private": true,
+ "dependencies": {}
+}
diff --git a/public/404.html b/public/404.html
new file mode 100644
index 000000000..2be3af26f
--- /dev/null
+++ b/public/404.html
@@ -0,0 +1,67 @@
+
+
+
+ The page you were looking for doesn't exist (404)
+
+
+
+
+
+
+
+
+
The page you were looking for doesn't exist.
+
You may have mistyped the address or the page may have moved.
+
+
If you are the application owner check the logs for more information.
+
+
+
diff --git a/public/422.html b/public/422.html
new file mode 100644
index 000000000..c08eac0d1
--- /dev/null
+++ b/public/422.html
@@ -0,0 +1,67 @@
+
+
+
+ The change you wanted was rejected (422)
+
+
+
+
+
+
+
+
+
The change you wanted was rejected.
+
Maybe you tried to change something you didn't have access to.
+
+
If you are the application owner check the logs for more information.
+
+
+
diff --git a/public/500.html b/public/500.html
new file mode 100644
index 000000000..78a030af2
--- /dev/null
+++ b/public/500.html
@@ -0,0 +1,66 @@
+
+
+
+ We're sorry, but something went wrong (500)
+
+
+
+
+
+
+
+
+
We're sorry, but something went wrong.
+
+
If you are the application owner check the logs for more information.
+
+
+
diff --git a/public/apple-touch-icon-precomposed.png b/public/apple-touch-icon-precomposed.png
new file mode 100644
index 000000000..e69de29bb
diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png
new file mode 100644
index 000000000..e69de29bb
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 000000000..e69de29bb
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 000000000..37b576a4a
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1 @@
+# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
diff --git a/storage/.keep b/storage/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb
new file mode 100644
index 000000000..d19212abd
--- /dev/null
+++ b/test/application_system_test_case.rb
@@ -0,0 +1,5 @@
+require "test_helper"
+
+class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
+ driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
+end
diff --git a/test/controllers/.keep b/test/controllers/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/fixtures/.keep b/test/fixtures/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/fixtures/files/.keep b/test/fixtures/files/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/helpers/.keep b/test/helpers/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/integration/.keep b/test/integration/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/mailers/.keep b/test/mailers/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/models/.keep b/test/models/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/system/.keep b/test/system/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/test_helper.rb b/test/test_helper.rb
new file mode 100644
index 000000000..3ab84e3d1
--- /dev/null
+++ b/test/test_helper.rb
@@ -0,0 +1,10 @@
+ENV['RAILS_ENV'] ||= 'test'
+require_relative '../config/environment'
+require 'rails/test_help'
+
+class ActiveSupport::TestCase
+ # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
+ fixtures :all
+
+ # Add more helper methods to be used by all tests here...
+end
diff --git a/tmp/.keep b/tmp/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/.keep b/vendor/.keep
new file mode 100644
index 000000000..e69de29bb
From 81545a19baecf60ad267ff55ca91bf9362ea9766 Mon Sep 17 00:00:00 2001
From: Dominique
Date: Mon, 7 Oct 2019 17:07:51 -0700
Subject: [PATCH 02/22] seeding complete
---
app/models/driver.rb | 2 +
app/models/passenger.rb | 2 +
app/models/trip.rb | 2 +
db/migrate/20191007232524_create_drivers.rb | 8 ++++
...91007233022_add_table_columns_to_driver.rb | 6 +++
.../20191007233543_create_passengers.rb | 10 +++++
db/migrate/20191007233738_create_trips.rb | 13 ++++++
db/schema.rb | 42 +++++++++++++++++++
db/seeds.rb | 2 +
9 files changed, 87 insertions(+)
create mode 100644 app/models/driver.rb
create mode 100644 app/models/passenger.rb
create mode 100644 app/models/trip.rb
create mode 100644 db/migrate/20191007232524_create_drivers.rb
create mode 100644 db/migrate/20191007233022_add_table_columns_to_driver.rb
create mode 100644 db/migrate/20191007233543_create_passengers.rb
create mode 100644 db/migrate/20191007233738_create_trips.rb
create mode 100644 db/schema.rb
diff --git a/app/models/driver.rb b/app/models/driver.rb
new file mode 100644
index 000000000..1ff364562
--- /dev/null
+++ b/app/models/driver.rb
@@ -0,0 +1,2 @@
+class Driver < ApplicationRecord
+end
diff --git a/app/models/passenger.rb b/app/models/passenger.rb
new file mode 100644
index 000000000..2c5748ac2
--- /dev/null
+++ b/app/models/passenger.rb
@@ -0,0 +1,2 @@
+class Passenger < ApplicationRecord
+end
diff --git a/app/models/trip.rb b/app/models/trip.rb
new file mode 100644
index 000000000..a8c077a10
--- /dev/null
+++ b/app/models/trip.rb
@@ -0,0 +1,2 @@
+class Trip < ApplicationRecord
+end
diff --git a/db/migrate/20191007232524_create_drivers.rb b/db/migrate/20191007232524_create_drivers.rb
new file mode 100644
index 000000000..926953694
--- /dev/null
+++ b/db/migrate/20191007232524_create_drivers.rb
@@ -0,0 +1,8 @@
+class CreateDrivers < ActiveRecord::Migration[5.2]
+ def change
+ create_table :drivers do |t|
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20191007233022_add_table_columns_to_driver.rb b/db/migrate/20191007233022_add_table_columns_to_driver.rb
new file mode 100644
index 000000000..3fc8f3855
--- /dev/null
+++ b/db/migrate/20191007233022_add_table_columns_to_driver.rb
@@ -0,0 +1,6 @@
+class AddTableColumnsToDriver < ActiveRecord::Migration[5.2]
+ def change
+ add_column(:drivers, :name, :string)
+ add_column(:drivers, :vin, :string)
+ end
+end
diff --git a/db/migrate/20191007233543_create_passengers.rb b/db/migrate/20191007233543_create_passengers.rb
new file mode 100644
index 000000000..abe516b43
--- /dev/null
+++ b/db/migrate/20191007233543_create_passengers.rb
@@ -0,0 +1,10 @@
+class CreatePassengers < ActiveRecord::Migration[5.2]
+ def change
+ create_table :passengers do |t|
+ t.string :name
+ t.string :phone
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20191007233738_create_trips.rb b/db/migrate/20191007233738_create_trips.rb
new file mode 100644
index 000000000..31a32c598
--- /dev/null
+++ b/db/migrate/20191007233738_create_trips.rb
@@ -0,0 +1,13 @@
+class CreateTrips < ActiveRecord::Migration[5.2]
+ def change
+ create_table :trips do |t|
+ t.integer :driver_id
+ t.integer :passenger_id
+ t.datetime :date
+ t.integer :rating
+ t.integer :cost
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
new file mode 100644
index 000000000..aca8c0744
--- /dev/null
+++ b/db/schema.rb
@@ -0,0 +1,42 @@
+# This file is auto-generated from the current state of the database. Instead
+# of editing this file, please use the migrations feature of Active Record to
+# incrementally modify your database, and then regenerate this schema definition.
+#
+# Note that this schema.rb definition is the authoritative source for your
+# database schema. If you need to create the application database on another
+# system, you should be using db:schema:load, not running all the migrations
+# from scratch. The latter is a flawed and unsustainable approach (the more migrations
+# you'll amass, the slower it'll run and the greater likelihood for issues).
+#
+# It's strongly recommended that you check this file into your version control system.
+
+ActiveRecord::Schema.define(version: 2019_10_07_233738) do
+
+ # These are extensions that must be enabled in order to support this database
+ enable_extension "plpgsql"
+
+ create_table "drivers", force: :cascade do |t|
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.string "name"
+ t.string "vin"
+ end
+
+ create_table "passengers", force: :cascade do |t|
+ t.string "name"
+ t.string "phone"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
+ create_table "trips", force: :cascade do |t|
+ t.integer "driver_id"
+ t.integer "passenger_id"
+ t.datetime "date"
+ t.integer "rating"
+ t.integer "cost"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
+end
diff --git a/db/seeds.rb b/db/seeds.rb
index eab2a92ee..f479c697d 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -1,5 +1,7 @@
require 'csv'
+
+
DRIVER_FILE = Rails.root.join('db', 'seed_data', 'drivers.csv')
puts "Loading raw driver data from #{DRIVER_FILE}"
From 0ac4f14f40d422e1eb163f4b249dca3cf0d3c3f0 Mon Sep 17 00:00:00 2001
From: Dominique
Date: Tue, 8 Oct 2019 11:05:15 -0700
Subject: [PATCH 03/22] Seeding Complete V2
---
app/models/driver.rb | 1 +
app/models/passenger.rb | 1 +
app/models/trip.rb | 2 ++
db/migrate/20191008175900_edit_passenger_table.rb | 5 +++++
db/schema.rb | 4 ++--
5 files changed, 11 insertions(+), 2 deletions(-)
create mode 100644 db/migrate/20191008175900_edit_passenger_table.rb
diff --git a/app/models/driver.rb b/app/models/driver.rb
index 1ff364562..197e65507 100644
--- a/app/models/driver.rb
+++ b/app/models/driver.rb
@@ -1,2 +1,3 @@
class Driver < ApplicationRecord
+ has_many :trips
end
diff --git a/app/models/passenger.rb b/app/models/passenger.rb
index 2c5748ac2..2fef89192 100644
--- a/app/models/passenger.rb
+++ b/app/models/passenger.rb
@@ -1,2 +1,3 @@
class Passenger < ApplicationRecord
+ has_many :trips
end
diff --git a/app/models/trip.rb b/app/models/trip.rb
index a8c077a10..3f761103a 100644
--- a/app/models/trip.rb
+++ b/app/models/trip.rb
@@ -1,2 +1,4 @@
class Trip < ApplicationRecord
+ belongs_to :passenger
+ belongs_to :driver
end
diff --git a/db/migrate/20191008175900_edit_passenger_table.rb b/db/migrate/20191008175900_edit_passenger_table.rb
new file mode 100644
index 000000000..771db3d81
--- /dev/null
+++ b/db/migrate/20191008175900_edit_passenger_table.rb
@@ -0,0 +1,5 @@
+class EditPassengerTable < ActiveRecord::Migration[5.2]
+ def change
+ rename_column(:passengers, :phone, :phone_num)
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index aca8c0744..0ec1b0dbd 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2019_10_07_233738) do
+ActiveRecord::Schema.define(version: 2019_10_08_175900) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -24,7 +24,7 @@
create_table "passengers", force: :cascade do |t|
t.string "name"
- t.string "phone"
+ t.string "phone_num"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
From 35ff695c82ec2de171b6659b57a865317ef132e6 Mon Sep 17 00:00:00 2001
From: Dominique
Date: Tue, 8 Oct 2019 11:35:52 -0700
Subject: [PATCH 04/22] homepages controller made
---
app/assets/javascripts/homepages.js | 2 ++
app/assets/stylesheets/homepages.scss | 3 +++
app/controllers/homepages_controller.rb | 6 ++++++
app/helpers/homepages_helper.rb | 2 ++
app/views/homepages/index.html.erb | 1 +
config/routes.rb | 8 ++++++++
6 files changed, 22 insertions(+)
create mode 100644 app/assets/javascripts/homepages.js
create mode 100644 app/assets/stylesheets/homepages.scss
create mode 100644 app/controllers/homepages_controller.rb
create mode 100644 app/helpers/homepages_helper.rb
create mode 100644 app/views/homepages/index.html.erb
diff --git a/app/assets/javascripts/homepages.js b/app/assets/javascripts/homepages.js
new file mode 100644
index 000000000..dee720fac
--- /dev/null
+++ b/app/assets/javascripts/homepages.js
@@ -0,0 +1,2 @@
+// Place all the behaviors and hooks related to the matching controller here.
+// All this logic will automatically be available in application.js.
diff --git a/app/assets/stylesheets/homepages.scss b/app/assets/stylesheets/homepages.scss
new file mode 100644
index 000000000..2305c36d1
--- /dev/null
+++ b/app/assets/stylesheets/homepages.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Homepages controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/app/controllers/homepages_controller.rb b/app/controllers/homepages_controller.rb
new file mode 100644
index 000000000..78567026a
--- /dev/null
+++ b/app/controllers/homepages_controller.rb
@@ -0,0 +1,6 @@
+class HomepagesController < ApplicationController
+
+ def index
+
+ end
+end
diff --git a/app/helpers/homepages_helper.rb b/app/helpers/homepages_helper.rb
new file mode 100644
index 000000000..4bd8098f3
--- /dev/null
+++ b/app/helpers/homepages_helper.rb
@@ -0,0 +1,2 @@
+module HomepagesHelper
+end
diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb
new file mode 100644
index 000000000..3b2634d54
--- /dev/null
+++ b/app/views/homepages/index.html.erb
@@ -0,0 +1 @@
+Hello
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 787824f88..54e1dd381 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,3 +1,11 @@
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
+
+
+ root 'homepages#index'
+
+ resources :drivers
+ resources :passengers
+
+
end
From d46ec8daf22850ba904865fa4a6e1b2bada36da6 Mon Sep 17 00:00:00 2001
From: Dominique
Date: Tue, 8 Oct 2019 15:06:47 -0700
Subject: [PATCH 05/22] completed baseline
---
app/assets/javascripts/drivers.js | 2 ++
app/assets/javascripts/passengers.js | 2 ++
app/assets/stylesheets/drivers.scss | 3 +++
app/assets/stylesheets/passengers.scss | 3 +++
app/controllers/drivers_controller.rb | 13 +++++++++++++
app/controllers/passengers_controller.rb | 6 ++++++
app/helpers/drivers_helper.rb | 2 ++
app/helpers/passengers_helper.rb | 2 ++
app/models/driver.rb | 6 ++++++
app/views/drivers/index.html.erb | 8 ++++++++
app/views/passengers/index.html.erb | 9 +++++++++
11 files changed, 56 insertions(+)
create mode 100644 app/assets/javascripts/drivers.js
create mode 100644 app/assets/javascripts/passengers.js
create mode 100644 app/assets/stylesheets/drivers.scss
create mode 100644 app/assets/stylesheets/passengers.scss
create mode 100644 app/controllers/drivers_controller.rb
create mode 100644 app/controllers/passengers_controller.rb
create mode 100644 app/helpers/drivers_helper.rb
create mode 100644 app/helpers/passengers_helper.rb
create mode 100644 app/views/drivers/index.html.erb
create mode 100644 app/views/passengers/index.html.erb
diff --git a/app/assets/javascripts/drivers.js b/app/assets/javascripts/drivers.js
new file mode 100644
index 000000000..dee720fac
--- /dev/null
+++ b/app/assets/javascripts/drivers.js
@@ -0,0 +1,2 @@
+// Place all the behaviors and hooks related to the matching controller here.
+// All this logic will automatically be available in application.js.
diff --git a/app/assets/javascripts/passengers.js b/app/assets/javascripts/passengers.js
new file mode 100644
index 000000000..dee720fac
--- /dev/null
+++ b/app/assets/javascripts/passengers.js
@@ -0,0 +1,2 @@
+// Place all the behaviors and hooks related to the matching controller here.
+// All this logic will automatically be available in application.js.
diff --git a/app/assets/stylesheets/drivers.scss b/app/assets/stylesheets/drivers.scss
new file mode 100644
index 000000000..8c1768a14
--- /dev/null
+++ b/app/assets/stylesheets/drivers.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Drivers controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/app/assets/stylesheets/passengers.scss b/app/assets/stylesheets/passengers.scss
new file mode 100644
index 000000000..0e27942f7
--- /dev/null
+++ b/app/assets/stylesheets/passengers.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Passengers controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/app/controllers/drivers_controller.rb b/app/controllers/drivers_controller.rb
new file mode 100644
index 000000000..a9ee3931d
--- /dev/null
+++ b/app/controllers/drivers_controller.rb
@@ -0,0 +1,13 @@
+class DriversController < ApplicationController
+ def index
+ @drivers = Driver.all
+ end
+
+ def show
+ @driver = Driver.find_by(id: driver_id)
+ @driver.trips
+ return @driver.trips
+
+
+ end
+end
diff --git a/app/controllers/passengers_controller.rb b/app/controllers/passengers_controller.rb
new file mode 100644
index 000000000..441b242d2
--- /dev/null
+++ b/app/controllers/passengers_controller.rb
@@ -0,0 +1,6 @@
+class PassengersController < ApplicationController
+
+ def index
+ @passengers = Passenger.all
+ end
+end
diff --git a/app/helpers/drivers_helper.rb b/app/helpers/drivers_helper.rb
new file mode 100644
index 000000000..e5fc532e4
--- /dev/null
+++ b/app/helpers/drivers_helper.rb
@@ -0,0 +1,2 @@
+module DriversHelper
+end
diff --git a/app/helpers/passengers_helper.rb b/app/helpers/passengers_helper.rb
new file mode 100644
index 000000000..1af9e68f1
--- /dev/null
+++ b/app/helpers/passengers_helper.rb
@@ -0,0 +1,2 @@
+module PassengersHelper
+end
diff --git a/app/models/driver.rb b/app/models/driver.rb
index 197e65507..164ae5ff3 100644
--- a/app/models/driver.rb
+++ b/app/models/driver.rb
@@ -1,3 +1,9 @@
class Driver < ApplicationRecord
has_many :trips
+
+ def trips
+ driver_id = params[:id]
+ driver_trips = Trip.where(driver_id: driver_id)
+ return driver_trips
+ end
end
diff --git a/app/views/drivers/index.html.erb b/app/views/drivers/index.html.erb
new file mode 100644
index 000000000..d9e763d23
--- /dev/null
+++ b/app/views/drivers/index.html.erb
@@ -0,0 +1,8 @@
+Drivers
+
+ <% @drivers.each do |driver|%>
+ -
+ <%= link_to driver.name, driver_path(driver) %>
+
+ <% end%>
+
\ No newline at end of file
diff --git a/app/views/passengers/index.html.erb b/app/views/passengers/index.html.erb
new file mode 100644
index 000000000..30e8576db
--- /dev/null
+++ b/app/views/passengers/index.html.erb
@@ -0,0 +1,9 @@
+Passengers
+
+
+ <%@passengers.each do |passenger|%>
+ -
+ <%= link_to passenger.name, passenger_path(passenger)%>
+
+ <%end%>
+
\ No newline at end of file
From 9c858e63a9b88ae7797286a0cf1c97e3a94a356d Mon Sep 17 00:00:00 2001
From: Dominique
Date: Wed, 9 Oct 2019 22:17:02 -0700
Subject: [PATCH 06/22] Edit passenger and driver functionality finished
---
app/assets/javascripts/trips.js | 2 ++
app/assets/stylesheets/trips.scss | 3 ++
app/controllers/drivers_controller.rb | 36 ++++++++++++++++++++++--
app/controllers/passengers_controller.rb | 36 ++++++++++++++++++++++++
app/controllers/trips_controller.rb | 10 +++++++
app/helpers/trips_helper.rb | 2 ++
app/models/driver.rb | 30 ++++++++++++++++----
app/models/passenger.rb | 11 ++++++++
app/models/trip.rb | 2 ++
app/views/drivers/edit.html.erb | 9 ++++++
app/views/drivers/index.html.erb | 2 ++
app/views/drivers/new.html.erb | 11 ++++++++
app/views/drivers/show.html.erb | 20 +++++++++++++
app/views/layouts/application.html.erb | 7 +++++
app/views/passengers/edit.html.erb | 9 ++++++
app/views/passengers/index.html.erb | 3 ++
app/views/passengers/new.html.erb | 10 +++++++
app/views/passengers/show.html.erb | 15 ++++++++++
app/views/trips/show.html.erb | 12 ++++++++
config/routes.rb | 23 ++++++++++++++-
20 files changed, 244 insertions(+), 9 deletions(-)
create mode 100644 app/assets/javascripts/trips.js
create mode 100644 app/assets/stylesheets/trips.scss
create mode 100644 app/controllers/trips_controller.rb
create mode 100644 app/helpers/trips_helper.rb
create mode 100644 app/views/drivers/edit.html.erb
create mode 100644 app/views/drivers/new.html.erb
create mode 100644 app/views/drivers/show.html.erb
create mode 100644 app/views/passengers/edit.html.erb
create mode 100644 app/views/passengers/new.html.erb
create mode 100644 app/views/passengers/show.html.erb
create mode 100644 app/views/trips/show.html.erb
diff --git a/app/assets/javascripts/trips.js b/app/assets/javascripts/trips.js
new file mode 100644
index 000000000..dee720fac
--- /dev/null
+++ b/app/assets/javascripts/trips.js
@@ -0,0 +1,2 @@
+// Place all the behaviors and hooks related to the matching controller here.
+// All this logic will automatically be available in application.js.
diff --git a/app/assets/stylesheets/trips.scss b/app/assets/stylesheets/trips.scss
new file mode 100644
index 000000000..f1f72ad11
--- /dev/null
+++ b/app/assets/stylesheets/trips.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Trips controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/app/controllers/drivers_controller.rb b/app/controllers/drivers_controller.rb
index a9ee3931d..4e9e006b6 100644
--- a/app/controllers/drivers_controller.rb
+++ b/app/controllers/drivers_controller.rb
@@ -4,10 +4,40 @@ def index
end
def show
+ driver_id = params[:id]
@driver = Driver.find_by(id: driver_id)
- @driver.trips
- return @driver.trips
-
+ end
+
+ def new
+ @driver = Driver.new
+ end
+
+ def edit
+ @driver = Driver.find_by(id: params[:id])
+ end
+
+ def create
+ @driver = Driver.new(name: params[:driver][:name], vin: params[:driver][:vin])
+ @driver.save
+ redirect_to drivers_path
+ return
+ end
+ def destroy
+ @driver = Driver.find_by(id: params[:id])
+ @driver.destroy
+ redirect_to drivers_path
+ return
end
+ # def create
+ # @driver = Driver.new(name: params[:driver][:name], description: params[:driver][:vin])
+
+ # if @driver.name == " "
+ # redirect_to drivers_path
+ # return
+ # end
+ # end
+
+ # This should happen once "create" is hit
+ # "New" is the page with the form
end
diff --git a/app/controllers/passengers_controller.rb b/app/controllers/passengers_controller.rb
index 441b242d2..6c376e297 100644
--- a/app/controllers/passengers_controller.rb
+++ b/app/controllers/passengers_controller.rb
@@ -3,4 +3,40 @@ class PassengersController < ApplicationController
def index
@passengers = Passenger.all
end
+
+ def show
+ passenger_id = params[:id]
+ @passenger = Passenger.find_by(id: passenger_id)
+ end
+
+ def new
+ @passenger = Passenger.new
+ end
+
+ def edit
+ @passenger = Passenger.find_by(id: params[:id])
+ end
+
+ def create
+ @passenger = Passenger.new(name: params[:passenger][:name], phone_num: params[:passenger][:phone_num])
+ @passenger.save
+ redirect_to passengers_path
+ return
+ # if @driver.name == " "
+ # redirect_to drivers_path
+ # return
+ # end
+ end
+
+ def destroy
+ @passenger = Passenger.find_by(id: params[:id])
+ # if @passenger.nil?
+ # head :not_found
+ # return
+ # else
+ @passenger.destroy
+ redirect_to passengers_path
+ return
+ # end
+ end
end
diff --git a/app/controllers/trips_controller.rb b/app/controllers/trips_controller.rb
new file mode 100644
index 000000000..d525a4e5e
--- /dev/null
+++ b/app/controllers/trips_controller.rb
@@ -0,0 +1,10 @@
+class TripsController < ApplicationController
+ def index
+
+ end
+
+ def show
+ @trip = Trip.find_by(id: params[:id])
+ end
+end
+
diff --git a/app/helpers/trips_helper.rb b/app/helpers/trips_helper.rb
new file mode 100644
index 000000000..04f333d46
--- /dev/null
+++ b/app/helpers/trips_helper.rb
@@ -0,0 +1,2 @@
+module TripsHelper
+end
diff --git a/app/models/driver.rb b/app/models/driver.rb
index 164ae5ff3..6c368a3ad 100644
--- a/app/models/driver.rb
+++ b/app/models/driver.rb
@@ -1,9 +1,29 @@
class Driver < ApplicationRecord
has_many :trips
- def trips
- driver_id = params[:id]
- driver_trips = Trip.where(driver_id: driver_id)
- return driver_trips
- end
+ def average_rating
+ # driver_trips = self.trips
+ rating = 0
+
+ self.trips.each do |trip|
+ rating += trip.rating
+ end
+
+ return rating
+
+ end
+
+ def total_earnings
+ # driver_trips = self.trips
+ earnings = 0
+
+ self.trips.each do |trip|
+ earnings += trip.cost
+ end
+
+ total_earnings = (earnings - 1.65) * 0.80
+
+ return total_earnings.round(2)
+ end
+
end
diff --git a/app/models/passenger.rb b/app/models/passenger.rb
index 2fef89192..2d71a82a7 100644
--- a/app/models/passenger.rb
+++ b/app/models/passenger.rb
@@ -1,3 +1,14 @@
class Passenger < ApplicationRecord
has_many :trips
+
+ def total_amount
+
+ total_charge = 0
+
+ self.trips.each do |trip|
+ total_charge += trip.cost
+ end
+
+ return total_charge
+ end
end
diff --git a/app/models/trip.rb b/app/models/trip.rb
index 3f761103a..b1858053b 100644
--- a/app/models/trip.rb
+++ b/app/models/trip.rb
@@ -1,4 +1,6 @@
class Trip < ApplicationRecord
belongs_to :passenger
belongs_to :driver
+
+
end
diff --git a/app/views/drivers/edit.html.erb b/app/views/drivers/edit.html.erb
new file mode 100644
index 000000000..51cb50b58
--- /dev/null
+++ b/app/views/drivers/edit.html.erb
@@ -0,0 +1,9 @@
+<%=form_with model: @driver do |driver|%>
+ Please provide the following information to edit the selected driver.
+ <%=driver.label :name%>
+ <%=driver.text_field :name%>
+ <%=driver.label :vin%>
+ <%=driver.text_field :vin%>
+
+ <%= driver.submit "Update"%>
+<%end%>
\ No newline at end of file
diff --git a/app/views/drivers/index.html.erb b/app/views/drivers/index.html.erb
index d9e763d23..3abe8aa42 100644
--- a/app/views/drivers/index.html.erb
+++ b/app/views/drivers/index.html.erb
@@ -3,6 +3,8 @@
<% @drivers.each do |driver|%>
<%= link_to driver.name, driver_path(driver) %>
+ <%=link_to "edit", edit_driver_path(driver)%>
+ <%= link_to "delete", driver_path(driver), method: :delete , data: {confirm: "Are you sure?"}%>
<% end%>
\ No newline at end of file
diff --git a/app/views/drivers/new.html.erb b/app/views/drivers/new.html.erb
new file mode 100644
index 000000000..d67a489bb
--- /dev/null
+++ b/app/views/drivers/new.html.erb
@@ -0,0 +1,11 @@
+
+<%=form_with model: @driver do |driver|%>
+ Please provide the following information to add a new driver.
+
+ <%= driver.label :name%>
+ <%= driver.text_field :name%>
+ <%= driver.label :vin%>
+ <%= driver.text_field :vin%>
+
+ <%= driver.submit "Create"%>
+<%end%>
\ No newline at end of file
diff --git a/app/views/drivers/show.html.erb b/app/views/drivers/show.html.erb
new file mode 100644
index 000000000..d845acca4
--- /dev/null
+++ b/app/views/drivers/show.html.erb
@@ -0,0 +1,20 @@
+Driver's Trips
+
+Name: <%= @driver.name%>
+
+Average Rating: <%=@driver.average_rating%>
+Total Earnings: $<%=@driver.total_earnings%>
+
+Trips
+
+<%@driver.trips.each do |trip|%>
+<%= link_to "Trip Details", trip_path(trip)%>
+Trip_id: <%=trip.id%>
+
Date: <%=trip.date%>
+Driver_id: <%=trip.driver_id%>
+Passenger: <%=trip.passenger_id%>
+Cost: <%=trip.cost%>
+Rating: <%=trip.rating%>
+
+<%end%>
+
\ No newline at end of file
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 692ca547e..7e539b02f 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -9,6 +9,13 @@
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
+ Rideshare Rails!
+
+ - <%= link_to "Passengers", passengers_path%>
+ - <%= link_to "Drivers", drivers_path%>
+ - <%= link_to "Add Driver", new_driver_path%>
+ - <%= link_to "Add Passenger", new_passenger_path%>
+
<%= yield %>
diff --git a/app/views/passengers/edit.html.erb b/app/views/passengers/edit.html.erb
new file mode 100644
index 000000000..5744de8ca
--- /dev/null
+++ b/app/views/passengers/edit.html.erb
@@ -0,0 +1,9 @@
+<%=form_with model: @passenger do |passenger|%>
+ Please provide the following information to edit the selected passenger.
+ <%=passenger.label :name%>
+ <%=passenger.text_field :name%>
+ <%=passenger.label :phone%>
+ <%=passenger.text_field :phone_num%>
+
+ <%= passenger.submit "Update"%>
+<%end%>
\ No newline at end of file
diff --git a/app/views/passengers/index.html.erb b/app/views/passengers/index.html.erb
index 30e8576db..ff54d7c00 100644
--- a/app/views/passengers/index.html.erb
+++ b/app/views/passengers/index.html.erb
@@ -4,6 +4,9 @@
<%@passengers.each do |passenger|%>
<%= link_to passenger.name, passenger_path(passenger)%>
+ <%=link_to "edit", edit_passenger_path(passenger)%>
+ <%= link_to "delete", passenger_path(passenger), method: :delete, data: {confirm: "Are you sure?"} %>
+
<%end%>
\ No newline at end of file
diff --git a/app/views/passengers/new.html.erb b/app/views/passengers/new.html.erb
new file mode 100644
index 000000000..d47197a3b
--- /dev/null
+++ b/app/views/passengers/new.html.erb
@@ -0,0 +1,10 @@
+
+<%=form_with model: @passenger do |passenger|%>
+ Please provide the following information to add a new passenger.
+ <%=passenger.label :name%>
+ <%=passenger.text_field :name%>
+ <%=passenger.label :phone%>
+ <%=passenger.text_field :phone_num%>
+
+ <%= passenger.submit "Create"%>
+<%end%>
\ No newline at end of file
diff --git a/app/views/passengers/show.html.erb b/app/views/passengers/show.html.erb
new file mode 100644
index 000000000..a32d1dab8
--- /dev/null
+++ b/app/views/passengers/show.html.erb
@@ -0,0 +1,15 @@
+Passenger Details
+
+
Total Charges: $<%=@passenger.total_amount%>
+
+
+
+ <%@passenger.trips.each do |trip|%>
+ <%= link_to "Trip Details", trip_path(trip)%>
+ Trip_id: <%=trip.id%>
+
Driver_id: <%=trip.driver_id%>
+ Passenger_id:<%=trip.passenger_id%>
+ Date: <%=trip.date%>
+ Rating: <%=trip.rating%>
+ Cost: <%=trip.cost%>
+ <%end%>
diff --git a/app/views/trips/show.html.erb b/app/views/trips/show.html.erb
new file mode 100644
index 000000000..371dc551d
--- /dev/null
+++ b/app/views/trips/show.html.erb
@@ -0,0 +1,12 @@
+Trip Details
+
+
+
+
+Date: <%=@trip.date%>
+Driver_id: <%=@trip.driver_id%>
+Passenger: <%=@trip.passenger_id%>
+Cost: <%=@trip.cost%>
+Rating: <%=@trip.rating%>
+
+
diff --git a/config/routes.rb b/config/routes.rb
index 54e1dd381..363830d2b 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -6,6 +6,27 @@
resources :drivers
resources :passengers
-
+ resources :trips
+
+
+ resources :drivers do
+ resources :trips, only: [:show]
+ end
+
+ resources :passengers do
+ resources :trips, only: [:show]
+ end
+
+
+ # # Routes that operate on the book collection
+ # get '/books', to: 'books#index', as: 'books'
+ # get '/books/new', to: 'books#new', as: 'new_book'
+ # post '/books', to: 'books#create'
+
+ # # Routes that operate on individual books
+ # get '/books/:id', to: 'books#show', as: 'book'
+ # get '/books/:id/edit', to: 'books#edit', as: 'edit_book'
+ # patch '/books/:id', to: 'books#update'
+ # delete '/books/:id', to: 'books#destroy'
end
From 3efc56dd48707cb8dbe48007d985439ba71011f9 Mon Sep 17 00:00:00 2001
From: Dominique
Date: Thu, 10 Oct 2019 09:50:34 -0700
Subject: [PATCH 07/22] finished passenger controller test
---
app/controllers/drivers_controller.rb | 24 ++++++++++--
app/controllers/passengers_controller.rb | 32 +++++++++++----
app/models/driver.rb | 3 ++
app/models/passenger.rb | 2 +
app/views/drivers/edit.html.erb | 10 +++++
app/views/drivers/new.html.erb | 9 +++++
app/views/passengers/edit.html.erb | 10 +++++
app/views/passengers/new.html.erb | 10 +++++
.../controllers/passengers_controller_test.rb | 39 +++++++++++++++++--
test/models/passenger_test.rb | 10 ++---
test/test_helper.rb | 8 ++++
11 files changed, 139 insertions(+), 18 deletions(-)
diff --git a/app/controllers/drivers_controller.rb b/app/controllers/drivers_controller.rb
index 4e9e006b6..713cd5c25 100644
--- a/app/controllers/drivers_controller.rb
+++ b/app/controllers/drivers_controller.rb
@@ -18,9 +18,14 @@ def edit
def create
@driver = Driver.new(name: params[:driver][:name], vin: params[:driver][:vin])
- @driver.save
- redirect_to drivers_path
- return
+
+ if @driver.save
+ redirect_to drivers_path
+ return
+ else
+ render :new
+ return
+ end
end
def destroy
@@ -29,6 +34,19 @@ def destroy
redirect_to drivers_path
return
end
+
+ def update
+ @driver = Driver.find_by(id: params[:id])
+
+ if @driver.update(name: params[:driver][:name], vin: params[:driver][:vin])
+ redirect_to passengers_path
+ return
+ else
+ render :edit
+ return
+ end
+ end
+
# def create
# @driver = Driver.new(name: params[:driver][:name], description: params[:driver][:vin])
diff --git a/app/controllers/passengers_controller.rb b/app/controllers/passengers_controller.rb
index 6c376e297..162670fa4 100644
--- a/app/controllers/passengers_controller.rb
+++ b/app/controllers/passengers_controller.rb
@@ -7,6 +7,11 @@ def index
def show
passenger_id = params[:id]
@passenger = Passenger.find_by(id: passenger_id)
+
+ if @passenger.nil?
+ head :not_found
+ return
+ end
end
def new
@@ -19,15 +24,28 @@ def edit
def create
@passenger = Passenger.new(name: params[:passenger][:name], phone_num: params[:passenger][:phone_num])
- @passenger.save
- redirect_to passengers_path
- return
- # if @driver.name == " "
- # redirect_to drivers_path
- # return
- # end
+
+ if @passenger.save
+ redirect_to passengers_path
+ return
+ else
+ render :new
+ return
+ end
end
+ def update
+ @passenger = Passenger.find_by(id: params[:id])
+
+ if @passenger.update(name: params[:passenger][:name], phone_num: params[:passenger][:phone_num])
+ redirect_to passengers_path
+ return
+ else
+ render :edit
+ return
+ end
+ end
+
def destroy
@passenger = Passenger.find_by(id: params[:id])
# if @passenger.nil?
diff --git a/app/models/driver.rb b/app/models/driver.rb
index 6c368a3ad..50813c2a3 100644
--- a/app/models/driver.rb
+++ b/app/models/driver.rb
@@ -1,6 +1,9 @@
class Driver < ApplicationRecord
has_many :trips
+ validates :name, presence: true
+
+
def average_rating
# driver_trips = self.trips
rating = 0
diff --git a/app/models/passenger.rb b/app/models/passenger.rb
index 2d71a82a7..f959f05a4 100644
--- a/app/models/passenger.rb
+++ b/app/models/passenger.rb
@@ -1,6 +1,8 @@
class Passenger < ApplicationRecord
has_many :trips
+ validates :name, presence: true
+
def total_amount
total_charge = 0
diff --git a/app/views/drivers/edit.html.erb b/app/views/drivers/edit.html.erb
index 51cb50b58..483a896cc 100644
--- a/app/views/drivers/edit.html.erb
+++ b/app/views/drivers/edit.html.erb
@@ -1,3 +1,13 @@
+<% if @driver.errors.any?%>
+
+ <% @driver.errors.each do |column, message| %>
+ -
+ <%= column.capitalize %> <%=message%>
+
+ <%end%>
+
+<%end%>
+
<%=form_with model: @driver do |driver|%>
Please provide the following information to edit the selected driver.
<%=driver.label :name%>
diff --git a/app/views/drivers/new.html.erb b/app/views/drivers/new.html.erb
index d67a489bb..82e15b47c 100644
--- a/app/views/drivers/new.html.erb
+++ b/app/views/drivers/new.html.erb
@@ -1,3 +1,12 @@
+<% if @driver.errors.any?%>
+
+ <% @driver.errors.each do |column, message| %>
+ -
+ <%= column.capitalize %> <%=message%>
+
+ <%end%>
+
+<%end%>
<%=form_with model: @driver do |driver|%>
Please provide the following information to add a new driver.
diff --git a/app/views/passengers/edit.html.erb b/app/views/passengers/edit.html.erb
index 5744de8ca..c767b9a06 100644
--- a/app/views/passengers/edit.html.erb
+++ b/app/views/passengers/edit.html.erb
@@ -1,3 +1,13 @@
+<% if @passenger.errors.any?%>
+
+ <% @passenger.errors.each do |column, message| %>
+ -
+ <%= column.capitalize %> <%=message%>
+
+ <%end%>
+
+<%end%>
+
<%=form_with model: @passenger do |passenger|%>
Please provide the following information to edit the selected passenger.
<%=passenger.label :name%>
diff --git a/app/views/passengers/new.html.erb b/app/views/passengers/new.html.erb
index d47197a3b..4575bcadf 100644
--- a/app/views/passengers/new.html.erb
+++ b/app/views/passengers/new.html.erb
@@ -1,3 +1,13 @@
+<% if @passenger.errors.any?%>
+
+ <% @passenger.errors.each do |column, message| %>
+ -
+ <%= column.capitalize %> <%=message%>
+
+ <%end%>
+
+<%end%>
+
<%=form_with model: @passenger do |passenger|%>
Please provide the following information to add a new passenger.
diff --git a/test/controllers/passengers_controller_test.rb b/test/controllers/passengers_controller_test.rb
index 60acbdfb6..7c6dc515b 100644
--- a/test/controllers/passengers_controller_test.rb
+++ b/test/controllers/passengers_controller_test.rb
@@ -1,16 +1,49 @@
require "test_helper"
describe PassengersController do
+ let (:passenger) {
+ Passenger.create name: "Annika", phone_num: "334-213-2473"
+ }
describe "index" do
- # Your tests go here
+ it "gives back a successful response" do
+ #Act
+ get passengers_path
+
+ #Assert
+ must_respond_with :success
+ end
+
+ it "can get the root path" do
+ #Act
+ get root_path
+
+ #Assert
+ must_respond_with :success
+ end
end
describe "show" do
- # Your tests go here
+ it "shows passenger details" do
+ get passenger_path(passenger.id)
+
+ must_respond_with :success
+ end
+
+ it "will respond with an error for an invalid task" do
+ # Act
+ get passenger_path(-1)
+
+ # Assert
+ must_respond_with :missing
+ end
end
describe "new" do
- # Your tests go here
+ it "will can get the new passenger page" do
+ get new_passenger_path
+
+ must_respond_with :success
+ end
end
describe "create" do
diff --git a/test/models/passenger_test.rb b/test/models/passenger_test.rb
index 66ac353d3..6a5762167 100644
--- a/test/models/passenger_test.rb
+++ b/test/models/passenger_test.rb
@@ -2,7 +2,7 @@
describe Passenger do
let (:new_passenger) {
- Passenger.new(name: "Kari", phone_number: "111-111-1211")
+ Passenger.new(name: "Kari", phone_num: "111-111-1211")
}
it "can be instantiated" do
# Assert
@@ -13,7 +13,7 @@
# Arrange
new_passenger.save
passenger = Passenger.first
- [:name, :phone_number].each do |field|
+ [:name, :phone_num].each do |field|
# Assert
expect(passenger).must_respond_to field
@@ -47,12 +47,12 @@
it "must have a phone number" do
# Arrange
- new_passenger.phone_number = nil
+ new_passenger.phone_num = nil
# Assert
expect(new_passenger.valid?).must_equal false
- expect(new_passenger.errors.messages).must_include :new_passenger
- expect(new_passenger.errors.messages[:new_passenger]).must_equal ["can't be blank"]
+ expect(new_passenger.errors.messages).must_include :phone_num
+ expect(new_passenger.errors.messages[:phone_num]).must_equal ["can't be blank"]
end
end
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 3ab84e3d1..872c22b84 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -2,6 +2,14 @@
require_relative '../config/environment'
require 'rails/test_help'
+require "minitest"
+require "minitest/rails"
+require "minitest/autorun"
+require "minitest/reporters"
+require 'minitest/skip_dsl'
+
+Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
+
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
fixtures :all
From 153c435e099ac9331697f2c0761f79bf0b9047a4 Mon Sep 17 00:00:00 2001
From: Dominique
Date: Thu, 10 Oct 2019 10:29:41 -0700
Subject: [PATCH 08/22] finished passenger's edit test
---
.../controllers/passengers_controller_test.rb | 28 +++++++++++++++++--
1 file changed, 25 insertions(+), 3 deletions(-)
diff --git a/test/controllers/passengers_controller_test.rb b/test/controllers/passengers_controller_test.rb
index 7c6dc515b..29b338585 100644
--- a/test/controllers/passengers_controller_test.rb
+++ b/test/controllers/passengers_controller_test.rb
@@ -39,7 +39,7 @@
end
describe "new" do
- it "will can get the new passenger page" do
+ it "will get the new passenger page" do
get new_passenger_path
must_respond_with :success
@@ -47,11 +47,33 @@
end
describe "create" do
- # Your tests go here
+ it "will create a new instance of passenger" do
+ # Arrange
+ passenger_hash = {
+ passenger: {
+ name: "Victoria",
+ phone_num: "456-654-9076"
+ }
+ }
+
+ # Act
+ expect {
+ post passengers_path, params: passenger_hash
+ }.must_differ "Passenger.count", 1
+
+
+ # Act
+ must_redirect_to passengers_path
+ end
end
describe "edit" do
- # Your tests go here
+ it "can get the edit page for an existing passenger" do
+ #Act
+ get edit_passenger_path(passenger.id)
+
+ must_respond_with :success
+ end
end
describe "update" do
From 00957323cb8631815512bc009ed1d9b20475f1cf Mon Sep 17 00:00:00 2001
From: Dominique
Date: Thu, 10 Oct 2019 13:31:16 -0700
Subject: [PATCH 09/22] Passenger test finished
---
app/controllers/passengers_controller.rb | 9 ++++
.../controllers/passengers_controller_test.rb | 41 +++++++++++++++++--
2 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/app/controllers/passengers_controller.rb b/app/controllers/passengers_controller.rb
index 162670fa4..46ef402d7 100644
--- a/app/controllers/passengers_controller.rb
+++ b/app/controllers/passengers_controller.rb
@@ -20,6 +20,15 @@ def new
def edit
@passenger = Passenger.find_by(id: params[:id])
+
+ if @passenger.nil?
+ redirect_to passengers_path
+ return
+ else
+ redirect_to passenger_path
+ return
+ end
+
end
def create
diff --git a/test/controllers/passengers_controller_test.rb b/test/controllers/passengers_controller_test.rb
index 29b338585..289127dd6 100644
--- a/test/controllers/passengers_controller_test.rb
+++ b/test/controllers/passengers_controller_test.rb
@@ -72,15 +72,50 @@
#Act
get edit_passenger_path(passenger.id)
- must_respond_with :success
+ must_redirect_to passenger_path
+ end
+
+ it "will respond with a redirect when attempting to edit a non-existing passenger" do
+ #Act
+ get edit_passenger_path(id: 5000)
+
+ #Assert
+ must_redirect_to passengers_path
end
end
describe "update" do
- # Your tests go here
+ it "can update an existing passenger" do
+
+
+
+ passenger_hash = {
+ passenger: {
+ name: "Victoria",
+ phone_num: "456-654-9076"
+ }
+ }
+
+ # Act-Assert
+ # task_hash info is being sent to server and stored in params via the patch request
+ patch passenger_path(id: passenger.id), params: passenger_hash
+
+ # finding it in the database and assigning it to new variable
+ updated_passenger = Passenger.find_by(id: passenger.id)
+
+ expect(updated_passenger.name).must_equal passenger_hash[:passenger][:name]
+ expect(updated_passenger.phone_num).must_equal passenger_hash[:passenger][:phone_num]
+ end
end
describe "destroy" do
- # Your tests go here
+ it "will delete a task from the database" do
+
+ passenger
+
+ expect {
+ delete passenger_path(id: passenger.id)
+ }.must_differ 'Passenger.count', -1
+ end
end
end
From fbdbcb5742bbe01ffb65319bee4b483ef264f394 Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Thu, 10 Oct 2019 20:46:39 -0700
Subject: [PATCH 10/22] added edit trip, rate finished trip, change driver
status based on in-progress trip
---
app/assets/javascripts/trips.js | 2 +
app/assets/stylesheets/trips.scss | 3 +
app/controllers/drivers_controller.rb | 53 ++++++++++++++--
app/controllers/passengers_controller.rb | 60 ++++++++++++++++++-
app/controllers/trips_controller.rb | 53 ++++++++++++++++
app/helpers/trips_helper.rb | 2 +
app/models/driver.rb | 40 +++++++++++--
app/models/passenger.rb | 16 +++++
app/models/trip.rb | 11 ++++
app/views/drivers/edit.html.erb | 17 ++++++
app/views/drivers/index.html.erb | 6 +-
app/views/drivers/new.html.erb | 15 +++++
app/views/drivers/show.html.erb | 26 ++++++++
app/views/homepages/index.html.erb | 8 ++-
app/views/passengers/edit.html.erb | 15 +++++
app/views/passengers/index.html.erb | 6 +-
app/views/passengers/new.html.erb | 14 +++++
app/views/passengers/show.html.erb | 15 +++++
app/views/trips/edit.html.erb | 15 +++++
app/views/trips/show.html.erb | 39 ++++++++++++
config/routes.rb | 20 +++++--
...91010004249_add_status_column_to_driver.rb | 5 ++
.../20191010040014_remove_driver_status.rb | 6 ++
db/schema.rb | 13 ++--
24 files changed, 433 insertions(+), 27 deletions(-)
create mode 100644 app/assets/javascripts/trips.js
create mode 100644 app/assets/stylesheets/trips.scss
create mode 100644 app/controllers/trips_controller.rb
create mode 100644 app/helpers/trips_helper.rb
create mode 100644 app/views/drivers/edit.html.erb
create mode 100644 app/views/drivers/new.html.erb
create mode 100644 app/views/drivers/show.html.erb
create mode 100644 app/views/passengers/edit.html.erb
create mode 100644 app/views/passengers/new.html.erb
create mode 100644 app/views/passengers/show.html.erb
create mode 100644 app/views/trips/edit.html.erb
create mode 100644 app/views/trips/show.html.erb
create mode 100644 db/migrate/20191010004249_add_status_column_to_driver.rb
create mode 100644 db/migrate/20191010040014_remove_driver_status.rb
diff --git a/app/assets/javascripts/trips.js b/app/assets/javascripts/trips.js
new file mode 100644
index 000000000..dee720fac
--- /dev/null
+++ b/app/assets/javascripts/trips.js
@@ -0,0 +1,2 @@
+// Place all the behaviors and hooks related to the matching controller here.
+// All this logic will automatically be available in application.js.
diff --git a/app/assets/stylesheets/trips.scss b/app/assets/stylesheets/trips.scss
new file mode 100644
index 000000000..f1f72ad11
--- /dev/null
+++ b/app/assets/stylesheets/trips.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Trips controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/app/controllers/drivers_controller.rb b/app/controllers/drivers_controller.rb
index a9ee3931d..609367617 100644
--- a/app/controllers/drivers_controller.rb
+++ b/app/controllers/drivers_controller.rb
@@ -2,12 +2,57 @@ class DriversController < ApplicationController
def index
@drivers = Driver.all
end
-
+
def show
+ driver_id = params[:id]
+ @driver = Driver.find_by(id: driver_id)
+ end
+
+ def new
+ @driver = Driver.new
+ end
+
+ def create
+ @driver = Driver.new(name: params[:driver][:name], vin: params[:driver][:vin])
+ if @driver.save
+ redirect_to driver_path(@driver.id)
+ return
+ else
+ render :new
+ return
+ end
+ end
+
+ def edit
+ @driver = Driver.find_by(id: params[:id])
+ if @driver.nil?
+ redirect_to driver_path
+ return
+ end
+ end
+
+ def update
+ @driver = Driver.find_by(id: params[:id])
+
+
+ if @driver.update(name: params[:driver][:name])
+ redirect_to driver_path
+ else
+ render :edit
+ return
+ end
+ end
+
+ def completed
+ end
+
+ def destroy
+ driver_id = params[:id]
@driver = Driver.find_by(id: driver_id)
- @driver.trips
- return @driver.trips
+ @driver.destroy
+ redirect_to drivers_path
+ end
- end
end
+
diff --git a/app/controllers/passengers_controller.rb b/app/controllers/passengers_controller.rb
index 441b242d2..7a91b161d 100644
--- a/app/controllers/passengers_controller.rb
+++ b/app/controllers/passengers_controller.rb
@@ -1,6 +1,62 @@
class PassengersController < ApplicationController
-
+
def index
- @passengers = Passenger.all
+ if params[:passenger_id]
+ passenger = Passenger.find_by(id: params[:passenger_id])
+ @trips = passenger.trips
+ else
+ @passengers = Passenger.all
+ end
end
+
+ def show
+ passenger_id = params[:id]
+ @passenger = Passenger.find_by(id: passenger_id)
+ end
+
+ def new
+ @passenger = Passenger.new
+ end
+
+ def create
+ @passenger = Passenger.new(name: params[:passenger][:name], phone_num: params[:passenger][:phone_num])
+ if @passenger.save
+ redirect_to passenger_path(@passenger.id)
+ return
+ else
+ render :new
+ return
+ end
+ end
+
+ def edit
+ @passenger = Passenger.find_by(id: params[:id])
+ if @passenger.nil?
+ redirect_to driver_path
+ return
+ end
+ end
+
+ def update
+ @passenger = Passenger.find_by(id: params[:id])
+
+ if @passenger.update(name: params[:passenger][:name], phone_num: params[:passenger][:phone_num])
+ redirect_to passenger_path
+ return
+ else
+ render :edit
+ return
+ end
+ end
+
+ def completed
+ end
+
+ def destroy
+ passenger_id = params[:id]
+ @passenger = Passenger.find_by(id: passenger_id)
+
+ @passenger.destroy
+ redirect_to passengers_path
+ end
end
diff --git a/app/controllers/trips_controller.rb b/app/controllers/trips_controller.rb
new file mode 100644
index 000000000..cf47a73ee
--- /dev/null
+++ b/app/controllers/trips_controller.rb
@@ -0,0 +1,53 @@
+class TripsController < ApplicationController
+
+ def show
+ trip_id = params[:id]
+ @trip = Trip.find_by(id: trip_id)
+ end
+
+ def create
+ driver = Trip.find_driver
+ date = Date.today
+ @trip = Trip.new(passenger_id: params[:passenger_id], rating: nil, cost: 1, date: date, driver_id: driver.id)
+
+ if @trip.save
+ driver.status = "unavailable"
+ driver.save
+ redirect_to passenger_path(params[:passenger_id])
+ else
+ render :new
+ end
+ end
+
+ def edit
+ @trip = Trip.find_by(id: params[:id])
+
+ if @trip.nil?
+ redirect_to passengers_path
+ end
+
+ end
+
+ def update
+ driver_id = Trip.find_driver
+ date = Date.today
+
+ @trip = Trip.find_by(id: params[:id])
+
+ if @trip.update(trip_params)
+ redirect_to passenger_path(@trip.passenger_id)
+ return
+ else
+
+ render :show
+ return
+ end
+ end
+
+ private
+
+ def trip_params
+ return params.require(:trip).permit(:rating, :cost, :driver_id, :passenger_id, :date)
+ end
+
+end
diff --git a/app/helpers/trips_helper.rb b/app/helpers/trips_helper.rb
new file mode 100644
index 000000000..04f333d46
--- /dev/null
+++ b/app/helpers/trips_helper.rb
@@ -0,0 +1,2 @@
+module TripsHelper
+end
diff --git a/app/models/driver.rb b/app/models/driver.rb
index 164ae5ff3..3c87dd8b9 100644
--- a/app/models/driver.rb
+++ b/app/models/driver.rb
@@ -1,9 +1,37 @@
class Driver < ApplicationRecord
has_many :trips
-
- def trips
- driver_id = params[:id]
- driver_trips = Trip.where(driver_id: driver_id)
- return driver_trips
- end
+
+ def avg_rating
+ driver_trips = self.trips
+ if driver_trips.empty?
+ return nil
+ end
+
+ summed_ratings = 0
+
+ in_progress_trips = 0
+ driver_trips.each do |trips|
+ if trips.rating.nil?
+ in_progress_trips += 1
+ else
+ summed_ratings += trips.rating
+ end
+ end
+
+
+ average_rating = summed_ratings / (driver_trips.length - in_progress_trips)
+ return average_rating
+ end
+
+ def total_earnings
+ driver_trips = self.trips
+ earnings = 0
+
+ driver_trips.each do |trips|
+ fee = (trips.cost - 1.65)
+ driver_earnings = fee * 0.8
+ earnings += driver_earnings
+ end
+ return earnings
+ end
end
diff --git a/app/models/passenger.rb b/app/models/passenger.rb
index 2fef89192..03da76ba9 100644
--- a/app/models/passenger.rb
+++ b/app/models/passenger.rb
@@ -1,3 +1,19 @@
class Passenger < ApplicationRecord
has_many :trips
+
+ def total_spent
+ passenger_trips = self.trips
+
+ if passenger_trips.empty?
+ return nil
+ end
+
+ amount_spent = 0
+
+ passenger_trips.each do |trip|
+ amount_spent += trip.cost
+ end
+
+ return amount_spent
+ end
end
diff --git a/app/models/trip.rb b/app/models/trip.rb
index 3f761103a..56fef1b0e 100644
--- a/app/models/trip.rb
+++ b/app/models/trip.rb
@@ -1,4 +1,15 @@
class Trip < ApplicationRecord
belongs_to :passenger
belongs_to :driver
+
+ def self.find_driver
+ @drivers = Driver.all
+
+ @drivers.each do |driver|
+ if driver.status == "available"
+ return driver
+ end
+ end
+ end
+
end
diff --git a/app/views/drivers/edit.html.erb b/app/views/drivers/edit.html.erb
new file mode 100644
index 000000000..4b06fa163
--- /dev/null
+++ b/app/views/drivers/edit.html.erb
@@ -0,0 +1,17 @@
+<%= form_with model: @driver, class: 'edit-driver' do |f| %>
+Please provide the following information to update driver information:
+
+ <%= f.label :name %>
+ <%= f.text_field :name %>
+
+ <%= f.label :vin %>
+ <%= f.text_field :vin %>
+
+
+
+ <%= f.submit "Update Driver", class: "driver-button" %>
+
+<% end %>
+
+<%= link_to "Manage Drivers", drivers_path() %>
+<%= link_to "Home", root_path() %>
\ No newline at end of file
diff --git a/app/views/drivers/index.html.erb b/app/views/drivers/index.html.erb
index d9e763d23..29dfd92ee 100644
--- a/app/views/drivers/index.html.erb
+++ b/app/views/drivers/index.html.erb
@@ -3,6 +3,10 @@
<% @drivers.each do |driver|%>
<%= link_to driver.name, driver_path(driver) %>
+ <%= link_to "edit", edit_driver_path(driver) %>
+ <%= link_to "delete", driver_path(driver), method: :delete, data: {confirm: "Are you sure?"}%>
<% end%>
-
\ No newline at end of file
+
+
+<%= link_to "Home", root_path() %>
\ No newline at end of file
diff --git a/app/views/drivers/new.html.erb b/app/views/drivers/new.html.erb
new file mode 100644
index 000000000..4cf4eefcd
--- /dev/null
+++ b/app/views/drivers/new.html.erb
@@ -0,0 +1,15 @@
+<%= @driver.inspect %>
+<%= form_with model: @driver, class: 'create-driver' do |f| %>
+Please provide the following information to save your book to our database:
+
+ <%= f.label :name %>
+ <%= f.text_field :name %>
+
+ <%= f.label :vin %>
+ <%= f.text_field :vin %>
+
+ <%= f.submit "Save Driver", class: "driver-button" %>
+<% end %>
+
+<%= link_to "Manage Drivers", drivers_path()%>
+<%= link_to "Home", root_path() %>
\ No newline at end of file
diff --git a/app/views/drivers/show.html.erb b/app/views/drivers/show.html.erb
new file mode 100644
index 000000000..88f273a70
--- /dev/null
+++ b/app/views/drivers/show.html.erb
@@ -0,0 +1,26 @@
+Driver
+
+Name: <%= @driver.name%>
+Average Rating:
+ <% if @driver.avg_rating.nil?%>
+ <%= @driver.name %> has not provided any trips yet.
+ <% else%>
+ <%= @driver.avg_rating %>
+ <% end %>
+
+Total Earnings: $<%= @driver.total_earnings%>
+
+Driver's Trips
+
+<% @driver.trips.each do |trip|%>
+<%= link_to "Trip Details", trip_path(trip)%>
+Date: <%=trip.date%>
+Driver Id:<%=trip.driver_id%>
+Passenger Id: <%=trip.passenger_id%>
+Cost: <%=trip.cost%>
+Rating: <%=trip.rating%>
+
+<%end%>
+
+<%= link_to "Manage Drivers", drivers_path() %>
+<%= link_to "Home", root_path() %>
\ No newline at end of file
diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb
index 3b2634d54..227f996bc 100644
--- a/app/views/homepages/index.html.erb
+++ b/app/views/homepages/index.html.erb
@@ -1 +1,7 @@
-Hello
\ No newline at end of file
+Hello
+
+<%= link_to "Manage Drivers",drivers_path%>
+<%= link_to "Manage Passengers",passengers_path%>
+
+<%= link_to "Add a Driver", new_driver_path%>
+<%= link_to "Add a Passenger", new_passenger_path%>
\ No newline at end of file
diff --git a/app/views/passengers/edit.html.erb b/app/views/passengers/edit.html.erb
new file mode 100644
index 000000000..d3597121f
--- /dev/null
+++ b/app/views/passengers/edit.html.erb
@@ -0,0 +1,15 @@
+<%= form_with model: @passenger, class: 'edit-passenger' do |f| %>
+Please provide the following information to update your book to our database:
+
+ <%= f.label :name %>
+ <%= f.text_field :name %>
+
+ <%= f.label :phone_num %>
+ <%= f.text_field :phone_num %>
+
+ <%= f.submit "Update Passenger", class: "passenger-button" %>
+
+<% end %>
+
+<%= link_to "Manage Passengers", passengers_path()%>
+<%= link_to "Home", root_path() %>
\ No newline at end of file
diff --git a/app/views/passengers/index.html.erb b/app/views/passengers/index.html.erb
index 30e8576db..6dbcf492d 100644
--- a/app/views/passengers/index.html.erb
+++ b/app/views/passengers/index.html.erb
@@ -4,6 +4,10 @@
<%@passengers.each do |passenger|%>
<%= link_to passenger.name, passenger_path(passenger)%>
+ <%= link_to "edit", edit_passenger_path(passenger) %>
+ <%= link_to "delete", passenger_path(passenger), method: :delete, data: {confirm: "Are you sure?"}%>
<%end%>
-
\ No newline at end of file
+
+
+<%= link_to "Home", root_path() %>
\ No newline at end of file
diff --git a/app/views/passengers/new.html.erb b/app/views/passengers/new.html.erb
new file mode 100644
index 000000000..73ab3a961
--- /dev/null
+++ b/app/views/passengers/new.html.erb
@@ -0,0 +1,14 @@
+<%= form_with model: @passenger, class: 'create-passenger' do |f| %>
+Please provide the following information to save your book to our database:
+
+ <%= f.label :name %>
+ <%= f.text_field :name %>
+
+ <%= f.label :phone_num %>
+ <%= f.text_field :phone_num %>
+
+ <%= f.submit "Save Passenger", class: "passenger-button" %>
+<% end %>
+
+<%= link_to "Manage Drivers", drivers_path()%>
+<%= link_to "Home", root_path() %>
\ No newline at end of file
diff --git a/app/views/passengers/show.html.erb b/app/views/passengers/show.html.erb
new file mode 100644
index 000000000..bc8abf165
--- /dev/null
+++ b/app/views/passengers/show.html.erb
@@ -0,0 +1,15 @@
+Name: <%= @passenger.name%>
+Total Amount Spent: <%= @passenger.total_spent%>
+<%= link_to "Request a Trip", passenger_trips_path(@passenger.id), method: :post%>
+
+Passenger's Trips
+<% @passenger.trips.each do |trip|%>
+
+ Trip Id:<%=link_to trip.id, trip_path(trip)%>
+
+
+<%end%>
+
+
+<%= link_to "Manage Passengers", passengers_path()%>
+<%= link_to "Home", root_path() %>
\ No newline at end of file
diff --git a/app/views/trips/edit.html.erb b/app/views/trips/edit.html.erb
new file mode 100644
index 000000000..e5807d12b
--- /dev/null
+++ b/app/views/trips/edit.html.erb
@@ -0,0 +1,15 @@
+<%= form_with model: @trip, class: 'edit-trip' do |f| %>
+Please provide the following information to update your trip
+
+ <%= f.label :cost %>
+ <%= f.text_field :cost %>
+
+ <%= f.label :rating %>
+ <%= f.select :rating, options_for_select(1..5, @trip.rating) %>
+
+ <%= f.submit "Update Trip", class: "trip-button" %>
+
+<% end %>
+
+<%= link_to "Manage Passengers", passengers_path()%>
+<%= link_to "Home", root_path() %>
\ No newline at end of file
diff --git a/app/views/trips/show.html.erb b/app/views/trips/show.html.erb
new file mode 100644
index 000000000..d156a8503
--- /dev/null
+++ b/app/views/trips/show.html.erb
@@ -0,0 +1,39 @@
+Trip
+
+ <% unless @trip.rating.nil? %>
+ <%=link_to "Edit This Trip", edit_trip_path(@trip)%>
+ <% end %>
+
+ Date:
+<%=@trip.date%>
+
+
+ Rating:
+<% if @trip.rating.nil?%>
+ <%= form_with model: @trip, class: 'edit-trip' do |f| %>
+ <%= f.select :rating, options_for_select(1..5) %>
+ <%= f.submit "Submit Rating", class: "trip-button"%>
+ <% end %>
+<% else %>
+ <%=@trip.rating%>
+<% end%>
+
+
+ Cost:
+<%=@trip.cost%>
+
+
+
+ Passenger Id:
+<%=@trip.passenger_id%>
+
+
+ Driver Id:
+<%=@trip.driver_id%>
+
+
+
+
+<%= link_to "Manage Drivers", drivers_path() %>
+<%= link_to "Manage Passengers", passengers_path() %>
+<%= link_to "Home", root_path() %>
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 54e1dd381..36abdb77c 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,11 +1,19 @@
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
-
-
+
+
root 'homepages#index'
-
- resources :drivers
- resources :passengers
-
+ resources :drivers do
+ resources :trips, only: [:new]
+ end
+
+
+
+ resources :passengers do
+ resources :trips, only: [:create]
+ end
+
+ resources :trips
+
end
diff --git a/db/migrate/20191010004249_add_status_column_to_driver.rb b/db/migrate/20191010004249_add_status_column_to_driver.rb
new file mode 100644
index 000000000..ac0fbaa02
--- /dev/null
+++ b/db/migrate/20191010004249_add_status_column_to_driver.rb
@@ -0,0 +1,5 @@
+class AddStatusColumnToDriver < ActiveRecord::Migration[5.2]
+ def change
+ add_column(:drivers, :status, :string)
+ end
+end
diff --git a/db/migrate/20191010040014_remove_driver_status.rb b/db/migrate/20191010040014_remove_driver_status.rb
new file mode 100644
index 000000000..cf2f5701c
--- /dev/null
+++ b/db/migrate/20191010040014_remove_driver_status.rb
@@ -0,0 +1,6 @@
+class RemoveDriverStatus < ActiveRecord::Migration[5.2]
+ def change
+ remove_column(:drivers, :status)
+ add_column(:drivers, :status, :string, :default => "available" )
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 0ec1b0dbd..1591aa022 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,25 +10,26 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2019_10_08_175900) do
-
+ActiveRecord::Schema.define(version: 2019_10_10_040014) do
+
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
-
+
create_table "drivers", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "name"
t.string "vin"
+ t.string "status", default: "available"
end
-
+
create_table "passengers", force: :cascade do |t|
t.string "name"
t.string "phone_num"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
-
+
create_table "trips", force: :cascade do |t|
t.integer "driver_id"
t.integer "passenger_id"
@@ -38,5 +39,5 @@
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
-
+
end
From 95bbeffff95136d4e8b0a30bfbcdda302ea9abd3 Mon Sep 17 00:00:00 2001
From: Dominique
Date: Thu, 10 Oct 2019 20:56:19 -0700
Subject: [PATCH 11/22] edit trip form finished
---
app/controllers/trips_controller.rb | 24 ++++++++++++--
app/models/passenger.rb | 2 ++
app/models/trip.rb | 14 ++++++++
app/views/drivers/show.html.erb | 8 +----
app/views/passengers/show.html.erb | 14 ++++----
app/views/trips/show.html.erb | 32 ++++++++++++++++++-
config/routes.rb | 2 +-
...20191010212212_add_driver_status_column.rb | 5 +++
db/schema.rb | 3 +-
.../controllers/passengers_controller_test.rb | 9 ++++++
10 files changed, 93 insertions(+), 20 deletions(-)
create mode 100644 db/migrate/20191010212212_add_driver_status_column.rb
diff --git a/app/controllers/trips_controller.rb b/app/controllers/trips_controller.rb
index d525a4e5e..9c5a13b00 100644
--- a/app/controllers/trips_controller.rb
+++ b/app/controllers/trips_controller.rb
@@ -1,10 +1,30 @@
class TripsController < ApplicationController
- def index
- end
def show
@trip = Trip.find_by(id: params[:id])
end
+
+ # Creates a new trip
+ def create
+ driver_id = Trip.find_driver
+ date = Date.today
+
+ @trip = Trip.new(passenger_id: params[:passenger_id], rating: nil, cost: 0, date: date, driver_id: driver_id)
+
+ if @trip.save
+ redirect_to passenger_path(params[:passenger_id])
+ else
+ render :new
+ end
+ end
+
+ def update
+ # @trip = Trip.find_by(id: params[:id])
+
+ # if @trip.update(passenger_id: params[:passenger_id], rating: params[:rating], cost: params[:cost], date: params[:cost], driver_id: params[:driver_id])
+ # redirect_to trip_path
+ # end
+ end
end
diff --git a/app/models/passenger.rb b/app/models/passenger.rb
index f959f05a4..19faf8ba3 100644
--- a/app/models/passenger.rb
+++ b/app/models/passenger.rb
@@ -13,4 +13,6 @@ def total_amount
return total_charge
end
+
+
end
diff --git a/app/models/trip.rb b/app/models/trip.rb
index b1858053b..4c72bb62c 100644
--- a/app/models/trip.rb
+++ b/app/models/trip.rb
@@ -2,5 +2,19 @@ class Trip < ApplicationRecord
belongs_to :passenger
belongs_to :driver
+ def self.find_driver
+ @drivers = Driver.all
+
+ @drivers.each do |driver|
+ if driver.status == "available"
+ driver_id = driver.id
+ return driver_id
+ end
+ end
+ end
+
end
+
+# want method that takes in the driver_id of the associated trip and edit the rating of that trip with an if else
+# statement that will update rating if it is nil.
diff --git a/app/views/drivers/show.html.erb b/app/views/drivers/show.html.erb
index d845acca4..52584f702 100644
--- a/app/views/drivers/show.html.erb
+++ b/app/views/drivers/show.html.erb
@@ -8,13 +8,7 @@
Trips
<%@driver.trips.each do |trip|%>
-<%= link_to "Trip Details", trip_path(trip)%>
-Trip_id: <%=trip.id%>
-
Date: <%=trip.date%>
-Driver_id: <%=trip.driver_id%>
-Passenger: <%=trip.passenger_id%>
-Cost: <%=trip.cost%>
-Rating: <%=trip.rating%>
+Trip_id: <%=trip.id%> (<%= link_to "Details", trip_path(trip)%>)
<%end%>
\ No newline at end of file
diff --git a/app/views/passengers/show.html.erb b/app/views/passengers/show.html.erb
index a32d1dab8..16398f848 100644
--- a/app/views/passengers/show.html.erb
+++ b/app/views/passengers/show.html.erb
@@ -2,14 +2,12 @@
Total Charges: $<%=@passenger.total_amount%>
-
+<%=link_to "Request a Trip", passenger_trips_path(@passenger.id), method: :post%>
<%@passenger.trips.each do |trip|%>
- <%= link_to "Trip Details", trip_path(trip)%>
- Trip_id: <%=trip.id%>
-
Driver_id: <%=trip.driver_id%>
- Passenger_id:<%=trip.passenger_id%>
- Date: <%=trip.date%>
- Rating: <%=trip.rating%>
- Cost: <%=trip.cost%>
+ Trip_id: <%=trip.id%> (<%= link_to "Details", trip_path(trip)%>)
+
<%end%>
+
+<%= link_to "Manage Passengers", passengers_path%>
+<%= link_to "Home", root_path%>
\ No newline at end of file
diff --git a/app/views/trips/show.html.erb b/app/views/trips/show.html.erb
index 371dc551d..8f99f1d9c 100644
--- a/app/views/trips/show.html.erb
+++ b/app/views/trips/show.html.erb
@@ -7,6 +7,36 @@
Driver_id: <%=@trip.driver_id%>
Passenger: <%=@trip.passenger_id%>
Cost: <%=@trip.cost%>
-Rating: <%=@trip.rating%>
+
+<%= form_with model: @trip do |f|%>
+
+ <%=f.label "Date:"%>
+ <%=f.text_field :date, :readonly => true%>
+
+ <%=f.label "Driver_id:"%>
+ <%=f.text_field :driver_id, :readonly => true%>
+
+
+ <%=f.label "Passenger_id:"%>
+ <%=f.text_field :passenger_id, :readonly => true%>
+
+ <%=f.label "Cost:"%>
+ <%=f.text_field :cost, :readonly => true%>
+
+ <%if @trip.rating == nil %>
+ <%= f.label :rating %>
+ <%= f.select :rating, [1, 2, 3, 4, 5] %>
+ <%elsif @trip.rating != nil %>
+ Rating: <%=@trip.rating%>
+ <%end%>
+<%end%>
+
+<%# <%= link_to "update", passenger_trips_path(@trip), method: :patch%>
+
+
+
+
+
+
diff --git a/config/routes.rb b/config/routes.rb
index 363830d2b..ed46e3e58 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -14,7 +14,7 @@
end
resources :passengers do
- resources :trips, only: [:show]
+ resources :trips, only: [:show, :create]
end
diff --git a/db/migrate/20191010212212_add_driver_status_column.rb b/db/migrate/20191010212212_add_driver_status_column.rb
new file mode 100644
index 000000000..8954e077d
--- /dev/null
+++ b/db/migrate/20191010212212_add_driver_status_column.rb
@@ -0,0 +1,5 @@
+class AddDriverStatusColumn < ActiveRecord::Migration[5.2]
+ def change
+ add_column(:drivers, :status, :string, :default => "available")
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 0ec1b0dbd..9de7e85e6 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2019_10_08_175900) do
+ActiveRecord::Schema.define(version: 2019_10_10_212212) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -20,6 +20,7 @@
t.datetime "updated_at", null: false
t.string "name"
t.string "vin"
+ t.string "status", default: "available"
end
create_table "passengers", force: :cascade do |t|
diff --git a/test/controllers/passengers_controller_test.rb b/test/controllers/passengers_controller_test.rb
index 289127dd6..5c18ae661 100644
--- a/test/controllers/passengers_controller_test.rb
+++ b/test/controllers/passengers_controller_test.rb
@@ -117,5 +117,14 @@
delete passenger_path(id: passenger.id)
}.must_differ 'Passenger.count', -1
end
+
+ it "will redirect to the root page once a task is destroyed" do
+
+
+ delete passenger_path(passenger.id)
+
+ # Assert
+ must_redirect_to passengers_path
+ end
end
end
From 74d46723a8ef67d2129c880bad47768277091a3b Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Thu, 10 Oct 2019 21:07:39 -0700
Subject: [PATCH 12/22] editing driver info, including status
---
app/controllers/drivers_controller.rb | 8 +++++++-
app/views/drivers/edit.html.erb | 3 +++
app/views/drivers/show.html.erb | 1 +
3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/app/controllers/drivers_controller.rb b/app/controllers/drivers_controller.rb
index 609367617..4faf566d6 100644
--- a/app/controllers/drivers_controller.rb
+++ b/app/controllers/drivers_controller.rb
@@ -35,7 +35,7 @@ def update
@driver = Driver.find_by(id: params[:id])
- if @driver.update(name: params[:driver][:name])
+ if @driver.update(driver_params)
redirect_to driver_path
else
render :edit
@@ -54,5 +54,11 @@ def destroy
redirect_to drivers_path
end
+ private
+
+ def driver_params
+ params.require(:driver).permit(:name, :status, :vin)
+ end
+
end
diff --git a/app/views/drivers/edit.html.erb b/app/views/drivers/edit.html.erb
index 4b06fa163..d77aba798 100644
--- a/app/views/drivers/edit.html.erb
+++ b/app/views/drivers/edit.html.erb
@@ -7,6 +7,9 @@
<%= f.label :vin %>
<%= f.text_field :vin %>
+ <%= f.label :status %>
+ <%= f.select :status, options_for_select(["available", "unavailable"], @driver.status) %>
+
<%= f.submit "Update Driver", class: "driver-button" %>
diff --git a/app/views/drivers/show.html.erb b/app/views/drivers/show.html.erb
index 88f273a70..b1f385f13 100644
--- a/app/views/drivers/show.html.erb
+++ b/app/views/drivers/show.html.erb
@@ -1,5 +1,6 @@
Driver
+<%=link_to "Edit Driver", edit_driver_path(@driver) %>
Name: <%= @driver.name%>
Average Rating:
<% if @driver.avg_rating.nil?%>
From abd8631d9182e73209a09ddf0c2e276749793bdc Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Thu, 10 Oct 2019 21:16:34 -0700
Subject: [PATCH 13/22] delete a trip function
---
app/controllers/trips_controller.rb | 9 +++++++++
app/views/trips/show.html.erb | 1 +
2 files changed, 10 insertions(+)
diff --git a/app/controllers/trips_controller.rb b/app/controllers/trips_controller.rb
index cf47a73ee..1db792650 100644
--- a/app/controllers/trips_controller.rb
+++ b/app/controllers/trips_controller.rb
@@ -44,6 +44,15 @@ def update
end
end
+ def destroy
+ @trip = Trip.find_by(id: params[:id])
+
+ if @trip.destroy()
+ redirect_to root_path
+ end
+
+
+ end
private
def trip_params
diff --git a/app/views/trips/show.html.erb b/app/views/trips/show.html.erb
index d156a8503..0b0b0026d 100644
--- a/app/views/trips/show.html.erb
+++ b/app/views/trips/show.html.erb
@@ -4,6 +4,7 @@
<%=link_to "Edit This Trip", edit_trip_path(@trip)%>
<% end %>
+<%=link_to "Delete Trip", trip_path(@trip), method: :delete %>
Date:
<%=@trip.date%>
From 02746612e20c1c4f7eef54e6d296c8ffe7a165fb Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Thu, 10 Oct 2019 22:07:26 -0700
Subject: [PATCH 14/22] merge in updated tests
---
app/controllers/passengers_controller.rb | 9 +-
app/models/driver.rb | 2 +
app/models/passenger.rb | 2 +
test/controllers/drivers_controller_test.rb | 106 ++++++++--------
.../controllers/passengers_controller_test.rb | 115 ++++++++++++++++--
test/models/driver_test.rb | 5 +-
test/models/passenger_test.rb | 20 +--
test/test_helper.rb | 10 +-
8 files changed, 194 insertions(+), 75 deletions(-)
diff --git a/app/controllers/passengers_controller.rb b/app/controllers/passengers_controller.rb
index 7a91b161d..0e8e31035 100644
--- a/app/controllers/passengers_controller.rb
+++ b/app/controllers/passengers_controller.rb
@@ -12,6 +12,11 @@ def index
def show
passenger_id = params[:id]
@passenger = Passenger.find_by(id: passenger_id)
+
+ if @passenger.nil?
+ head :not_found
+ return
+ end
end
def new
@@ -21,7 +26,7 @@ def new
def create
@passenger = Passenger.new(name: params[:passenger][:name], phone_num: params[:passenger][:phone_num])
if @passenger.save
- redirect_to passenger_path(@passenger.id)
+ redirect_to passengers_path
return
else
render :new
@@ -32,7 +37,7 @@ def create
def edit
@passenger = Passenger.find_by(id: params[:id])
if @passenger.nil?
- redirect_to driver_path
+ redirect_to passengers_path
return
end
end
diff --git a/app/models/driver.rb b/app/models/driver.rb
index 3c87dd8b9..5dd2e5e78 100644
--- a/app/models/driver.rb
+++ b/app/models/driver.rb
@@ -1,5 +1,7 @@
class Driver < ApplicationRecord
has_many :trips
+ validates :name, presence: true
+ validates :vin, presence: true
def avg_rating
driver_trips = self.trips
diff --git a/app/models/passenger.rb b/app/models/passenger.rb
index 03da76ba9..b1a7354b9 100644
--- a/app/models/passenger.rb
+++ b/app/models/passenger.rb
@@ -1,5 +1,7 @@
class Passenger < ApplicationRecord
has_many :trips
+ validates :name, presence: true
+ validates :phone_num, presence: true
def total_spent
passenger_trips = self.trips
diff --git a/test/controllers/drivers_controller_test.rb b/test/controllers/drivers_controller_test.rb
index 48aef7556..ea365db94 100644
--- a/test/controllers/drivers_controller_test.rb
+++ b/test/controllers/drivers_controller_test.rb
@@ -2,81 +2,81 @@
describe DriversController do
# Note: If any of these tests have names that conflict with either the requirements or your team's decisions, feel empowered to change the test names. For example, if a given test name says "responds with 404" but your team's decision is to respond with redirect, please change the test name.
-
+
describe "index" do
it "responds with success when there are many drivers saved" do
# Arrange
# Ensure that there is at least one Driver saved
-
+
# Act
-
+
# Assert
-
+
end
-
+
it "responds with success when there are no drivers saved" do
# Arrange
# Ensure that there are zero drivers saved
-
+
# Act
-
+
# Assert
-
+
end
end
-
+
describe "show" do
it "responds with success when showing an existing valid driver" do
# Arrange
# Ensure that there is a driver saved
-
+
# Act
-
+
# Assert
-
+
end
-
+
it "responds with 404 with an invalid driver id" do
# Arrange
# Ensure that there is an id that points to no driver
-
+
# Act
-
+
# Assert
-
+
end
end
-
+
describe "new" do
it "responds with success" do
end
end
-
+
describe "create" do
it "can create a new driver with valid information accurately, and redirect" do
# Arrange
# Set up the form data
-
+
# Act-Assert
# Ensure that there is a change of 1 in Driver.count
-
+
# Assert
# Find the newly created Driver, and check that all its attributes match what was given in the form data
# Check that the controller redirected the user
-
+
end
-
+
it "does not create a driver if the form data violates Driver validations, and responds with a redirect" do
# Note: This will not pass until ActiveRecord Validations lesson
# Arrange
# Set up the form data so that it violates Driver validations
-
+
# Act-Assert
# Ensure that there is no change in Driver.count
-
+
# Assert
# Check that the controller redirects
-
+
end
end
@@ -84,92 +84,92 @@
it "responds with success when getting the edit page for an existing, valid driver" do
# Arrange
# Ensure there is an existing driver saved
-
+
# Act
-
+
# Assert
-
+
end
-
+
it "responds with redirect when getting the edit page for a non-existing driver" do
# Arrange
# Ensure there is an invalid id that points to no driver
-
+
# Act
-
+
# Assert
-
+
end
end
-
+
describe "update" do
it "can update an existing driver with valid information accurately, and redirect" do
# Arrange
# Ensure there is an existing driver saved
# Assign the existing driver's id to a local variable
# Set up the form data
-
+
# Act-Assert
# Ensure that there is no change in Driver.count
-
+
# Assert
# Use the local variable of an existing driver's id to find the driver again, and check that its attributes are updated
# Check that the controller redirected the user
-
+
end
-
+
it "does not update any driver if given an invalid id, and responds with a 404" do
# Arrange
# Ensure there is an invalid id that points to no driver
# Set up the form data
-
+
# Act-Assert
# Ensure that there is no change in Driver.count
-
+
# Assert
# Check that the controller gave back a 404
-
+
end
-
+
it "does not create a driver if the form data violates Driver validations, and responds with a redirect" do
# Note: This will not pass until ActiveRecord Validations lesson
# Arrange
# Ensure there is an existing driver saved
# Assign the existing driver's id to a local variable
# Set up the form data so that it violates Driver validations
-
+
# Act-Assert
# Ensure that there is no change in Driver.count
-
+
# Assert
# Check that the controller redirects
-
+
end
end
-
+
describe "destroy" do
it "destroys the driver instance in db when driver exists, then redirects" do
# Arrange
# Ensure there is an existing driver saved
-
+
# Act-Assert
# Ensure that there is a change of -1 in Driver.count
-
+
# Assert
# Check that the controller redirects
-
+
end
-
+
it "does not change the db when the driver does not exist, then responds with " do
# Arrange
# Ensure there is an invalid id that points to no driver
-
+
# Act-Assert
# Ensure that there is no change in Driver.count
-
+
# Assert
# Check that the controller responds or redirects with whatever your group decides
-
+
end
end
-end
+end
\ No newline at end of file
diff --git a/test/controllers/passengers_controller_test.rb b/test/controllers/passengers_controller_test.rb
index 60acbdfb6..b8d9ebc81 100644
--- a/test/controllers/passengers_controller_test.rb
+++ b/test/controllers/passengers_controller_test.rb
@@ -1,31 +1,130 @@
require "test_helper"
describe PassengersController do
+ let (:passenger) {
+ Passenger.create name: "Annika", phone_num: "334-213-2473"
+ }
describe "index" do
- # Your tests go here
+ it "gives back a successful response" do
+ #Act
+ get passengers_path
+
+ #Assert
+ must_respond_with :success
+ end
+
+ it "can get the root path" do
+ #Act
+ get root_path
+
+ #Assert
+ must_respond_with :success
+ end
end
describe "show" do
- # Your tests go here
+ it "shows passenger details" do
+ get passenger_path(passenger.id)
+
+ must_respond_with :success
+ end
+
+ it "will respond with an error for an invalid passenger" do
+ # Act
+ get passenger_path(-1)
+
+ # Assert
+ must_respond_with :missing
+ end
end
describe "new" do
- # Your tests go here
+ it "will get the new passenger page" do
+ get new_passenger_path
+
+ must_respond_with :success
+ end
end
describe "create" do
- # Your tests go here
+ it "will create a new instance of passenger" do
+ # Arrange
+ passenger_hash = {
+ passenger: {
+ name: "Victoria",
+ phone_num: "456-654-9076"
+ }
+ }
+
+ # Act
+ expect {
+ post passengers_path, params: passenger_hash
+ }.must_differ "Passenger.count", 1
+
+
+ # Act
+ must_redirect_to passengers_path
+ end
end
describe "edit" do
- # Your tests go here
+ it "can get the edit page for an existing passenger" do
+ #Act
+ get edit_passenger_path(passenger.id)
+
+ must_respond_with :success
+ end
+
+ it "will respond with a redirect when attempting to edit a non-existing passenger" do
+ #Act
+ get edit_passenger_path(id: 5000)
+
+ #Assert
+ must_redirect_to passengers_path
+ end
end
describe "update" do
- # Your tests go here
+ it "can update an existing passenger" do
+
+
+
+ passenger_hash = {
+ passenger: {
+ name: "Victoria",
+ phone_num: "456-654-9076"
+ }
+ }
+
+ # Act-Assert
+ # task_hash info is being sent to server and stored in params via the patch request
+ patch passenger_path(id: passenger.id), params: passenger_hash
+
+ # finding it in the database and assigning it to new variable
+ updated_passenger = Passenger.find_by(id: passenger.id)
+
+ expect(updated_passenger.name).must_equal passenger_hash[:passenger][:name]
+ expect(updated_passenger.phone_num).must_equal passenger_hash[:passenger][:phone_num]
+ end
end
describe "destroy" do
- # Your tests go here
+ it "will delete a task from the database" do
+
+ passenger
+
+ expect {
+ delete passenger_path(id: passenger.id)
+ }.must_differ 'Passenger.count', -1
+ end
+
+ it "will redirect to the root page once a task is destroyed" do
+
+
+ delete passenger_path(passenger.id)
+
+ # Assert
+ must_redirect_to passengers_path
+ end
end
-end
+end
\ No newline at end of file
diff --git a/test/models/driver_test.rb b/test/models/driver_test.rb
index 9f12d286c..849054009 100644
--- a/test/models/driver_test.rb
+++ b/test/models/driver_test.rb
@@ -2,8 +2,7 @@
describe Driver do
let (:new_driver) {
- Driver.new(name: "Kari", vin: "123", active: true,
- car_make: "Cherry", car_model: "DR5")
+ Driver.new(name: "Kari", vin: "123", status: "available")
}
it "can be instantiated" do
# Assert
@@ -14,7 +13,7 @@
# Arrange
new_driver.save
driver = Driver.first
- [:name, :vin, :active, :car_make, :car_model].each do |field|
+ [:name, :vin, :status].each do |field|
# Assert
expect(driver).must_respond_to field
diff --git a/test/models/passenger_test.rb b/test/models/passenger_test.rb
index 66ac353d3..0da0e2747 100644
--- a/test/models/passenger_test.rb
+++ b/test/models/passenger_test.rb
@@ -2,7 +2,7 @@
describe Passenger do
let (:new_passenger) {
- Passenger.new(name: "Kari", phone_number: "111-111-1211")
+ Passenger.new(name: "Kari", phone_num: "111-111-1211")
}
it "can be instantiated" do
# Assert
@@ -13,7 +13,7 @@
# Arrange
new_passenger.save
passenger = Passenger.first
- [:name, :phone_number].each do |field|
+ [:name, :phone_num].each do |field|
# Assert
expect(passenger).must_respond_to field
@@ -24,11 +24,15 @@
it "can have many trips" do
# Arrange
new_passenger.save
- passenger = Passenger.first
+
+ new_driver = Driver.create(name: "Waldo", vin: "ALWSS52P9NEYLVDE9")
+ trip_1 = Trip.create(driver_id: new_driver.id, passenger_id: new_passenger.id, date: Date.today, rating: 5, cost: 1234)
+ trip_2 = Trip.create(driver_id: new_driver.id, passenger_id: new_passenger.id, date: Date.today, rating: 3, cost: 6334)
+
# Assert
- expect(passenger.trips.count).must_be :>, 0
- passenger.trips.each do |trip|
+ expect(new_passenger.trips.count).must_equal 2
+ new_passenger.trips.each do |trip|
expect(trip).must_be_instance_of Trip
end
end
@@ -47,12 +51,12 @@
it "must have a phone number" do
# Arrange
- new_passenger.phone_number = nil
+ new_passenger.phone_num = nil
# Assert
expect(new_passenger.valid?).must_equal false
- expect(new_passenger.errors.messages).must_include :new_passenger
- expect(new_passenger.errors.messages[:new_passenger]).must_equal ["can't be blank"]
+ expect(new_passenger.errors.messages).must_include :phone_num
+ expect(new_passenger.errors.messages[:phone_num]).must_equal ["can't be blank"]
end
end
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 3ab84e3d1..9c79af3dd 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -2,9 +2,17 @@
require_relative '../config/environment'
require 'rails/test_help'
+require "minitest"
+require "minitest/rails"
+require "minitest/autorun"
+require "minitest/reporters"
+require 'minitest/skip_dsl'
+
+Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
+
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
fixtures :all
# Add more helper methods to be used by all tests here...
-end
+end
\ No newline at end of file
From b50213ac0bc7c504168797dcc35d3e6481f204de Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Fri, 11 Oct 2019 08:06:58 -0700
Subject: [PATCH 15/22] added some of driver controller test
---
app/controllers/drivers_controller.rb | 17 +++--
app/views/drivers/show.html.erb | 2 +-
test/controllers/drivers_controller_test.rb | 79 +++++++++++++--------
3 files changed, 63 insertions(+), 35 deletions(-)
diff --git a/app/controllers/drivers_controller.rb b/app/controllers/drivers_controller.rb
index 4faf566d6..f895d8be9 100644
--- a/app/controllers/drivers_controller.rb
+++ b/app/controllers/drivers_controller.rb
@@ -6,6 +6,11 @@ def index
def show
driver_id = params[:id]
@driver = Driver.find_by(id: driver_id)
+
+ if @driver.nil?
+ redirect_to drivers_path
+ return
+ end
end
def new
@@ -15,7 +20,7 @@ def new
def create
@driver = Driver.new(name: params[:driver][:name], vin: params[:driver][:vin])
if @driver.save
- redirect_to driver_path(@driver.id)
+ redirect_to drivers_path
return
else
render :new
@@ -26,7 +31,7 @@ def create
def edit
@driver = Driver.find_by(id: params[:id])
if @driver.nil?
- redirect_to driver_path
+ redirect_to drivers_path
return
end
end
@@ -34,7 +39,10 @@ def edit
def update
@driver = Driver.find_by(id: params[:id])
-
+ if @driver.nil?
+ redirect_to drivers_path
+ end
+
if @driver.update(driver_params)
redirect_to driver_path
else
@@ -43,9 +51,6 @@ def update
end
end
- def completed
- end
-
def destroy
driver_id = params[:id]
@driver = Driver.find_by(id: driver_id)
diff --git a/app/views/drivers/show.html.erb b/app/views/drivers/show.html.erb
index b1f385f13..fcba15b10 100644
--- a/app/views/drivers/show.html.erb
+++ b/app/views/drivers/show.html.erb
@@ -10,7 +10,7 @@
<% end %>
Total Earnings: $<%= @driver.total_earnings%>
-
+Driver Status: <%= @driver.status%>
Driver's Trips
<% @driver.trips.each do |trip|%>
diff --git a/test/controllers/drivers_controller_test.rb b/test/controllers/drivers_controller_test.rb
index ea365db94..161887787 100644
--- a/test/controllers/drivers_controller_test.rb
+++ b/test/controllers/drivers_controller_test.rb
@@ -7,11 +7,12 @@
it "responds with success when there are many drivers saved" do
# Arrange
# Ensure that there is at least one Driver saved
+ Driver.create(name: "Tommy Salami", vin: "cat123")
# Act
-
+ get drivers_path
# Assert
-
+ must_respond_with :success
end
it "responds with success when there are no drivers saved" do
@@ -19,9 +20,9 @@
# Ensure that there are zero drivers saved
# Act
-
+ get drivers_path
# Assert
-
+ must_respond_with :success
end
end
@@ -29,10 +30,13 @@
it "responds with success when showing an existing valid driver" do
# Arrange
# Ensure that there is a driver saved
-
+ driver = Driver.create(name: "Tommy Salami", vin: "cat123")
# Act
+
+ get driver_path(driver.id)
# Assert
+ must_respond_with :success
end
@@ -41,9 +45,10 @@
# Ensure that there is an id that points to no driver
# Act
+ get driver_path(567889832525)
# Assert
-
+ must_respond_with :not_found
end
end
@@ -56,13 +61,20 @@
it "can create a new driver with valid information accurately, and redirect" do
# Arrange
# Set up the form data
+ driver_hash = {
+ driver: {name: "Tommy Salami", vin: "cat123"}
+ }
# Act-Assert
# Ensure that there is a change of 1 in Driver.count
+ expect {
+ post drivers_path, params: driver_hash
+ }.must_differ "Driver.count", 1
# Assert
# Find the newly created Driver, and check that all its attributes match what was given in the form data
# Check that the controller redirected the user
+ must_redirect_to drivers_path
end
@@ -70,51 +82,58 @@
# Note: This will not pass until ActiveRecord Validations lesson
# Arrange
# Set up the form data so that it violates Driver validations
+
+ bad_driver = {
+ school: "Ada!"
+ }
+
# Act-Assert
# Ensure that there is no change in Driver.count
-
+ expect {
+ post drivers_path, params: bad_driver
+ }.must_respond_with :missing
# Assert
# Check that the controller redirects
-
+ must_redirect_to drivers_path
end
end
describe "edit" do
it "responds with success when getting the edit page for an existing, valid driver" do
- # Arrange
# Ensure there is an existing driver saved
+ driver = Driver.create(name: "Tommy Salami", vin: "cat123")
+ get edit_driver_path(driver.id)
- # Act
-
- # Assert
+ must_respond_with :success
end
it "responds with redirect when getting the edit page for a non-existing driver" do
- # Arrange
# Ensure there is an invalid id that points to no driver
-
- # Act
-
- # Assert
+ get edit_driver_path(976)
+ must_redirect_to drivers_path
end
end
describe "update" do
it "can update an existing driver with valid information accurately, and redirect" do
- # Arrange
- # Ensure there is an existing driver saved
- # Assign the existing driver's id to a local variable
- # Set up the form data
-
- # Act-Assert
- # Ensure that there is no change in Driver.count
-
- # Assert
- # Use the local variable of an existing driver's id to find the driver again, and check that its attributes are updated
- # Check that the controller redirected the user
+ driver = Driver.create(name: "Tommy Salami", vin: "123cat")
+
+ driver_hash = {
+ driver: {
+ name: "Felix Puppy",
+ vin: "dog456"
+ }
+ }
+
+ patch driver_path(id: driver.id), params: driver_hash
+ updated_driver = Driver.find_by(id: driver.id)
+
+ expect(updated_driver.name).must_equal driver_hash[:driver][:name]
+ expect(updated_driver.vin).must_equal driver_hash[:driver][:vin]
+
end
@@ -128,6 +147,10 @@
# Assert
# Check that the controller gave back a 404
+
+ patch driver_path(id: 789)
+ must_redirect_to drivers_path
+
end
From 766eed45917d69c5619a235479c79bd7e9b065f5 Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Fri, 11 Oct 2019 10:44:25 -0700
Subject: [PATCH 16/22] added more test to driver controllers and made
corresponding changes in code
---
app/controllers/drivers_controller.rb | 4 ++--
app/models/driver.rb | 2 +-
test/controllers/drivers_controller_test.rb | 17 ++++++++++++++---
test/models/driver_test.rb | 2 +-
4 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/app/controllers/drivers_controller.rb b/app/controllers/drivers_controller.rb
index f895d8be9..ebd1340d9 100644
--- a/app/controllers/drivers_controller.rb
+++ b/app/controllers/drivers_controller.rb
@@ -38,7 +38,7 @@ def edit
def update
@driver = Driver.find_by(id: params[:id])
-
+
if @driver.nil?
redirect_to drivers_path
end
@@ -48,7 +48,7 @@ def update
else
render :edit
return
- end
+ end
end
def destroy
diff --git a/app/models/driver.rb b/app/models/driver.rb
index 5dd2e5e78..bc98a5d9c 100644
--- a/app/models/driver.rb
+++ b/app/models/driver.rb
@@ -1,6 +1,6 @@
class Driver < ApplicationRecord
has_many :trips
- validates :name, presence: true
+ validates :name, presence: true, format: {with: /[a-zA-Z]/}
validates :vin, presence: true
def avg_rating
diff --git a/test/controllers/drivers_controller_test.rb b/test/controllers/drivers_controller_test.rb
index 161887787..b0cd62120 100644
--- a/test/controllers/drivers_controller_test.rb
+++ b/test/controllers/drivers_controller_test.rb
@@ -137,7 +137,7 @@
end
- it "does not update any driver if given an invalid id, and responds with a 404" do
+ it "responds with a redirect for an invalid update" do
# Arrange
# Ensure there is an invalid id that points to no driver
# Set up the form data
@@ -147,10 +147,19 @@
# Assert
# Check that the controller gave back a 404
+ driver = Driver.create(name: "Tommy Salami", vin: "123cat")
+ bad_driver = {
+ driver: {
+ name: 100,
+ vin: "cool500"
+ }
+ }
- patch driver_path(id: 789)
- must_redirect_to drivers_path
+ patch driver_path(id: driver.id), params: bad_driver
+ updated_driver = Driver.find_by(id: driver.id)
+ expect(updated_driver.name).must_equal "Tommy Salami"
+ expect(updated_driver.vin).must_equal "123cat"
end
@@ -180,6 +189,8 @@
# Assert
# Check that the controller redirects
+
+
end
diff --git a/test/models/driver_test.rb b/test/models/driver_test.rb
index 849054009..bfb0d7d71 100644
--- a/test/models/driver_test.rb
+++ b/test/models/driver_test.rb
@@ -42,7 +42,7 @@
# Assert
expect(new_driver.valid?).must_equal false
expect(new_driver.errors.messages).must_include :name
- expect(new_driver.errors.messages[:name]).must_equal ["can't be blank"]
+ expect(new_driver.errors.messages[:name]).must_equal ["can't be blank", "is invalid"]
end
it "must have a VIN number" do
From 6c65b4743123dd79a1246b9240f0bfdedd2cf540 Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Fri, 11 Oct 2019 17:50:41 -0700
Subject: [PATCH 17/22] completed all driver tests
---
app/controllers/drivers_controller.rb | 18 +-
app/models/driver.rb | 3 +-
test/controllers/drivers_controller_test.rb | 238 +++++++-------------
test/models/driver_test.rb | 42 +++-
4 files changed, 135 insertions(+), 166 deletions(-)
diff --git a/app/controllers/drivers_controller.rb b/app/controllers/drivers_controller.rb
index ebd1340d9..74749646a 100644
--- a/app/controllers/drivers_controller.rb
+++ b/app/controllers/drivers_controller.rb
@@ -8,7 +8,7 @@ def show
@driver = Driver.find_by(id: driver_id)
if @driver.nil?
- redirect_to drivers_path
+ head :not_found
return
end
end
@@ -23,7 +23,8 @@ def create
redirect_to drivers_path
return
else
- render :new
+ # render :new
+ redirect_to drivers_path
return
end
end
@@ -46,7 +47,9 @@ def update
if @driver.update(driver_params)
redirect_to driver_path
else
- render :edit
+ redirect_to edit_driver_path
+ return
+ # render :edit
return
end
end
@@ -55,8 +58,13 @@ def destroy
driver_id = params[:id]
@driver = Driver.find_by(id: driver_id)
- @driver.destroy
- redirect_to drivers_path
+ if @driver.nil?
+ redirect_to drivers_path
+ return
+ elsif @driver.destroy
+ redirect_to drivers_path
+ return
+ end
end
private
diff --git a/app/models/driver.rb b/app/models/driver.rb
index bc98a5d9c..ab9b9daf8 100644
--- a/app/models/driver.rb
+++ b/app/models/driver.rb
@@ -34,6 +34,7 @@ def total_earnings
driver_earnings = fee * 0.8
earnings += driver_earnings
end
- return earnings
+
+ return earnings.round(2)
end
end
diff --git a/test/controllers/drivers_controller_test.rb b/test/controllers/drivers_controller_test.rb
index b0cd62120..553caf36e 100644
--- a/test/controllers/drivers_controller_test.rb
+++ b/test/controllers/drivers_controller_test.rb
@@ -1,53 +1,28 @@
require "test_helper"
describe DriversController do
- # Note: If any of these tests have names that conflict with either the requirements or your team's decisions, feel empowered to change the test names. For example, if a given test name says "responds with 404" but your team's decision is to respond with redirect, please change the test name.
-
describe "index" do
it "responds with success when there are many drivers saved" do
- # Arrange
- # Ensure that there is at least one Driver saved
Driver.create(name: "Tommy Salami", vin: "cat123")
-
- # Act
get drivers_path
- # Assert
must_respond_with :success
end
it "responds with success when there are no drivers saved" do
- # Arrange
- # Ensure that there are zero drivers saved
-
- # Act
get drivers_path
- # Assert
must_respond_with :success
end
end
describe "show" do
it "responds with success when showing an existing valid driver" do
- # Arrange
- # Ensure that there is a driver saved
driver = Driver.create(name: "Tommy Salami", vin: "cat123")
- # Act
-
get driver_path(driver.id)
-
- # Assert
must_respond_with :success
-
end
it "responds with 404 with an invalid driver id" do
- # Arrange
- # Ensure that there is an id that points to no driver
-
- # Act
get driver_path(567889832525)
-
- # Assert
must_respond_with :not_found
end
end
@@ -59,151 +34,112 @@
describe "create" do
it "can create a new driver with valid information accurately, and redirect" do
- # Arrange
- # Set up the form data
driver_hash = {
- driver: {name: "Tommy Salami", vin: "cat123"}
- }
-
- # Act-Assert
- # Ensure that there is a change of 1 in Driver.count
- expect {
- post drivers_path, params: driver_hash
- }.must_differ "Driver.count", 1
-
- # Assert
- # Find the newly created Driver, and check that all its attributes match what was given in the form data
- # Check that the controller redirected the user
- must_redirect_to drivers_path
-
+ driver: {name: "Tommy Salami", vin: "cat123"}
+ }
+ expect {
+ post drivers_path, params: driver_hash
+ }.must_differ "Driver.count", 1
+
+ must_redirect_to drivers_path
end
-
- it "does not create a driver if the form data violates Driver validations, and responds with a redirect" do
- # Note: This will not pass until ActiveRecord Validations lesson
- # Arrange
- # Set up the form data so that it violates Driver validations
- bad_driver = {
- school: "Ada!"
- }
+ it "does not create a driver if the form data violates Driver validations, and responds with a redirect" do
+ driver_hash = {
+ driver: {name: " ", vin: "cat123"}
+ }
-
- # Act-Assert
- # Ensure that there is no change in Driver.count
- expect {
- post drivers_path, params: bad_driver
- }.must_respond_with :missing
- # Assert
- # Check that the controller redirects
- must_redirect_to drivers_path
- end
- end
+ expect {
+ post drivers_path, params: driver_hash
+ }.must_differ "Driver.count", 0
- describe "edit" do
- it "responds with success when getting the edit page for an existing, valid driver" do
- # Ensure there is an existing driver saved
- driver = Driver.create(name: "Tommy Salami", vin: "cat123")
- get edit_driver_path(driver.id)
-
- must_respond_with :success
-
- end
+ must_redirect_to drivers_path
+ end
+end
+
+describe "edit" do
+ it "responds with success when getting the edit page for an existing, valid driver" do
+ driver = Driver.create(name: "Tommy Salami", vin: "cat123")
+ get edit_driver_path(driver.id)
+
+ must_respond_with :success
- it "responds with redirect when getting the edit page for a non-existing driver" do
- # Ensure there is an invalid id that points to no driver
- get edit_driver_path(976)
- must_redirect_to drivers_path
-
- end
end
- describe "update" do
- it "can update an existing driver with valid information accurately, and redirect" do
- driver = Driver.create(name: "Tommy Salami", vin: "123cat")
+ it "responds with redirect when getting the edit page for a non-existing driver" do
+ get edit_driver_path(976)
+ must_redirect_to drivers_path
+ end
+end
- driver_hash = {
+describe "update" do
+ it "can update an existing driver with valid information accurately, and redirect" do
+ driver = Driver.create(name: "Tommy Salami", vin: "123cat")
+ driver_hash = {driver: {name: "Felix Puppy", vin: "dog456"}}
+
+ patch driver_path(id: driver.id), params: driver_hash
+ updated_driver = Driver.find_by(id: driver.id)
+
+ expect(updated_driver.name).must_equal driver_hash[:driver][:name]
+ expect(updated_driver.vin).must_equal driver_hash[:driver][:vin]
+
+ must_redirect_to driver_path(driver.id)
+ end
+
+ it "responds with a redirect for an invalid update" do
+ driver = Driver.create(name: "Tommy Salami", vin: "123cat")
+ bad_driver = {
driver: {
- name: "Felix Puppy",
- vin: "dog456"
+ name: "",
+ vin: "cool500"
}
}
- patch driver_path(id: driver.id), params: driver_hash
- updated_driver = Driver.find_by(id: driver.id)
+ patch driver_path(id: driver.id), params: bad_driver
+ updated_driver = Driver.find_by(id: driver.id)
+ expect(updated_driver.name).must_equal "Tommy Salami"
+ expect(updated_driver.vin).must_equal "123cat"
+ must_redirect_to edit_driver_path
+ end
- expect(updated_driver.name).must_equal driver_hash[:driver][:name]
- expect(updated_driver.vin).must_equal driver_hash[:driver][:vin]
+it "can change driver status online" do
+ driver = Driver.create(name: "Kari", vin: "123")
+
+ expect(driver.status).must_equal "available"
+end
-
- end
-
- it "responds with a redirect for an invalid update" do
- # Arrange
- # Ensure there is an invalid id that points to no driver
- # Set up the form data
-
- # Act-Assert
- # Ensure that there is no change in Driver.count
-
- # Assert
- # Check that the controller gave back a 404
- driver = Driver.create(name: "Tommy Salami", vin: "123cat")
- bad_driver = {
- driver: {
- name: 100,
- vin: "cool500"
- }
- }
+ it "can change driver status offline" do
+ driver = Driver.create(name: "Kari", vin: "123")
+
+ passenger = Passenger.create(name: "Jessica", phone_num: 334-876-2345)
+
+ trip_hash = {
+ passenger_id: passenger.id
+ }
+ post trips_path, params: trip_hash
- patch driver_path(id: driver.id), params: bad_driver
- updated_driver = Driver.find_by(id: driver.id)
- expect(updated_driver.name).must_equal "Tommy Salami"
- expect(updated_driver.vin).must_equal "123cat"
-
- end
+ trip= Trip.find_by(passenger_id: passenger_id)
+
+ expect(trip.driver.status).must_equal "unavailable"
+ end
+end
+
+describe "destroy" do
+ it "destroys the driver instance in db when driver exists, then redirects" do
+ driver = Driver.create(name: "Tommy Salami", vin: "123cat")
- it "does not create a driver if the form data violates Driver validations, and responds with a redirect" do
- # Note: This will not pass until ActiveRecord Validations lesson
- # Arrange
- # Ensure there is an existing driver saved
- # Assign the existing driver's id to a local variable
- # Set up the form data so that it violates Driver validations
-
- # Act-Assert
- # Ensure that there is no change in Driver.count
-
- # Assert
- # Check that the controller redirects
-
- end
+ expect {
+ delete driver_path(id: driver.id)
+ }.must_differ 'Driver.count', -1
end
+
+ it "does not change the db when the driver does not exist, then responds with " do
+ driver = Driver.create(name: "Bob", vin: "123cat")
- describe "destroy" do
- it "destroys the driver instance in db when driver exists, then redirects" do
- # Arrange
- # Ensure there is an existing driver saved
-
- # Act-Assert
- # Ensure that there is a change of -1 in Driver.count
-
- # Assert
- # Check that the controller redirects
-
-
-
- end
-
- it "does not change the db when the driver does not exist, then responds with " do
- # Arrange
- # Ensure there is an invalid id that points to no driver
-
- # Act-Assert
- # Ensure that there is no change in Driver.count
-
- # Assert
- # Check that the controller responds or redirects with whatever your group decides
-
- end
+ expect {
+ delete driver_path(id: -2)
+ }.must_differ 'Driver.count', 0
end
+end
end
\ No newline at end of file
diff --git a/test/models/driver_test.rb b/test/models/driver_test.rb
index bfb0d7d71..aebc527ff 100644
--- a/test/models/driver_test.rb
+++ b/test/models/driver_test.rb
@@ -1,5 +1,7 @@
require "test_helper"
+
+
describe Driver do
let (:new_driver) {
Driver.new(name: "Kari", vin: "123", status: "available")
@@ -57,21 +59,43 @@
end
# Tests for methods you create should go here
+ let (:new_driver) { Driver.create(name: "Kari", vin: "123")}
describe "custom methods" do
- describe "average rating" do
- # Your code here
- end
- describe "total earnings" do
- # Your code here
+
+ it "averages the ratings amongst completed trips" do
+ passenger = Passenger.create(name: "Jessica", phone_num: 334-876-2345)
+
+ trip_1 = Trip.create(driver_id: new_driver.id, passenger_id: passenger.id, date: Date.parse("Feb 25, 2019"), rating: 3, cost: 2344)
+ trip_2 = Trip.create(driver_id: new_driver.id, passenger_id: passenger.id, date: Date.parse("Jan 23, 2000"), rating: 3, cost: 2344)
+ trip_3 = Trip.create(driver_id: new_driver.id, passenger_id: passenger.id, date: Date.parse("Dec 12, 2014"), rating: 3, cost: 2344)
+
+ expect(new_driver.avg_rating).must_equal 3
+
+ end
+
+ it "total earnings" do
+ passenger = Passenger.create(name: "Jessica", phone_num: 334-876-2345)
+
+ trip_1 = Trip.create(driver_id: new_driver.id, passenger_id: passenger.id, date: Date.parse("Feb 25, 2019"), rating: 3, cost: 5)
+ trip_2 = Trip.create(driver_id: new_driver.id, passenger_id: passenger.id, date: Date.parse("Jan 23, 2000"), rating: 3, cost: 5)
+ trip_3 = Trip.create(driver_id: new_driver.id, passenger_id: passenger.id, date: Date.parse("Dec 12, 2014"), rating: 3, cost: 5)
+
+ expect(new_driver.total_earnings).must_equal 8.04
end
- describe "can go online" do
- # Your code here
+ it "can go online" do
+ expect(new_driver.status).must_equal "available"
+
+
end
- describe "can go offline" do
- # Your code here
+ it "can go offline" do
+
+ passenger = Passenger.create(name: "Jessica", phone_num: 334-876-2345)
+ trip_1 = Trip.create(driver_id: new_driver.id, passenger_id: passenger.id, date: Date.parse("Feb 25, 2019"), rating: nil, cost: 2344)
+
+ expect(new_driver.reload.status).must_equal "unavailable"
end
# You may have additional methods to test
From 2143cf5e2d8a428ca8f9e2deae4b8768745f62ec Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Fri, 11 Oct 2019 17:58:27 -0700
Subject: [PATCH 18/22] fixed typos
---
test/models/driver_test.rb | 2 --
test/models/passenger_test.rb | 2 --
2 files changed, 4 deletions(-)
diff --git a/test/models/driver_test.rb b/test/models/driver_test.rb
index aebc527ff..cf60017c2 100644
--- a/test/models/driver_test.rb
+++ b/test/models/driver_test.rb
@@ -97,7 +97,5 @@
expect(new_driver.reload.status).must_equal "unavailable"
end
-
- # You may have additional methods to test
end
end
diff --git a/test/models/passenger_test.rb b/test/models/passenger_test.rb
index 0da0e2747..5fff18246 100644
--- a/test/models/passenger_test.rb
+++ b/test/models/passenger_test.rb
@@ -24,7 +24,6 @@
it "can have many trips" do
# Arrange
new_passenger.save
-
new_driver = Driver.create(name: "Waldo", vin: "ALWSS52P9NEYLVDE9")
trip_1 = Trip.create(driver_id: new_driver.id, passenger_id: new_passenger.id, date: Date.today, rating: 5, cost: 1234)
trip_2 = Trip.create(driver_id: new_driver.id, passenger_id: new_passenger.id, date: Date.today, rating: 3, cost: 6334)
@@ -63,7 +62,6 @@
# Tests for methods you create should go here
describe "custom methods" do
describe "request a ride" do
- # Your code here
end
describe "complete trip" do
From 5f228286bcd6931121dc1700dea70c2ca37c1f6a Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Sat, 12 Oct 2019 15:36:05 -0700
Subject: [PATCH 19/22] completed driver status test
---
test/controllers/drivers_controller_test.rb | 145 +++++++++-----------
test/controllers/trips_controller_test.rb | 21 ++-
test/models/driver_test.rb | 10 --
3 files changed, 82 insertions(+), 94 deletions(-)
diff --git a/test/controllers/drivers_controller_test.rb b/test/controllers/drivers_controller_test.rb
index 553caf36e..a529e8d22 100644
--- a/test/controllers/drivers_controller_test.rb
+++ b/test/controllers/drivers_controller_test.rb
@@ -44,102 +44,87 @@
must_redirect_to drivers_path
end
- it "does not create a driver if the form data violates Driver validations, and responds with a redirect" do
- driver_hash = {
- driver: {name: " ", vin: "cat123"}
- }
-
- expect {
- post drivers_path, params: driver_hash
- }.must_differ "Driver.count", 0
-
- must_redirect_to drivers_path
- end
-end
+ it "does not create a driver if the form data violates Driver validations, and responds with a redirect" do
+ driver_hash = {
+ driver: {name: " ", vin: "cat123"}
+ }
-describe "edit" do
- it "responds with success when getting the edit page for an existing, valid driver" do
- driver = Driver.create(name: "Tommy Salami", vin: "cat123")
- get edit_driver_path(driver.id)
-
- must_respond_with :success
+ expect {
+ post drivers_path, params: driver_hash
+ }.must_differ "Driver.count", 0
+ must_redirect_to drivers_path
+ end
end
-
- it "responds with redirect when getting the edit page for a non-existing driver" do
- get edit_driver_path(976)
- must_redirect_to drivers_path
+
+ describe "edit" do
+ it "responds with success when getting the edit page for an existing, valid driver" do
+ driver = Driver.create(name: "Tommy Salami", vin: "cat123")
+ get edit_driver_path(driver.id)
+
+ must_respond_with :success
+
+ end
+
+ it "responds with redirect when getting the edit page for a non-existing driver" do
+ get edit_driver_path(976)
+ must_redirect_to drivers_path
+ end
end
-end
-describe "update" do
- it "can update an existing driver with valid information accurately, and redirect" do
- driver = Driver.create(name: "Tommy Salami", vin: "123cat")
- driver_hash = {driver: {name: "Felix Puppy", vin: "dog456"}}
+ describe "update" do
+ it "can update an existing driver with valid information accurately, and redirect" do
+ driver = Driver.create(name: "Tommy Salami", vin: "123cat")
+ driver_hash = {driver: {name: "Felix Puppy", vin: "dog456"}}
- patch driver_path(id: driver.id), params: driver_hash
- updated_driver = Driver.find_by(id: driver.id)
+ patch driver_path(id: driver.id), params: driver_hash
+ updated_driver = Driver.find_by(id: driver.id)
- expect(updated_driver.name).must_equal driver_hash[:driver][:name]
- expect(updated_driver.vin).must_equal driver_hash[:driver][:vin]
+ expect(updated_driver.name).must_equal driver_hash[:driver][:name]
+ expect(updated_driver.vin).must_equal driver_hash[:driver][:vin]
- must_redirect_to driver_path(driver.id)
- end
+ must_redirect_to driver_path(driver.id)
+ end
- it "responds with a redirect for an invalid update" do
- driver = Driver.create(name: "Tommy Salami", vin: "123cat")
- bad_driver = {
- driver: {
- name: "",
- vin: "cool500"
- }
- }
+ it "responds with a redirect for an invalid update" do
+ driver = Driver.create(name: "Tommy Salami", vin: "123cat")
+ bad_driver = {
+ driver: {
+ name: "",
+ vin: "cool500"
+ }
+ }
- patch driver_path(id: driver.id), params: bad_driver
- updated_driver = Driver.find_by(id: driver.id)
- expect(updated_driver.name).must_equal "Tommy Salami"
- expect(updated_driver.vin).must_equal "123cat"
- must_redirect_to edit_driver_path
- end
+ patch driver_path(id: driver.id), params: bad_driver
+ updated_driver = Driver.find_by(id: driver.id)
+ expect(updated_driver.name).must_equal "Tommy Salami"
+ expect(updated_driver.vin).must_equal "123cat"
+ must_redirect_to edit_driver_path
+ end
-it "can change driver status online" do
- driver = Driver.create(name: "Kari", vin: "123")
-
- expect(driver.status).must_equal "available"
-end
+ it "can change driver status online" do
+ driver = Driver.create(name: "Kari", vin: "123")
- it "can change driver status offline" do
- driver = Driver.create(name: "Kari", vin: "123")
-
- passenger = Passenger.create(name: "Jessica", phone_num: 334-876-2345)
-
- trip_hash = {
- passenger_id: passenger.id
- }
+ expect(driver.status).must_equal "available"
+ end
- post trips_path, params: trip_hash
+ end
- trip= Trip.find_by(passenger_id: passenger_id)
+ describe "destroy" do
+ it "destroys the driver instance in db when driver exists, then redirects" do
+ driver = Driver.create(name: "Tommy Salami", vin: "123cat")
- expect(trip.driver.status).must_equal "unavailable"
- end
-end
+ expect {
+ delete driver_path(id: driver.id)
+ }.must_differ 'Driver.count', -1
+ end
-describe "destroy" do
- it "destroys the driver instance in db when driver exists, then redirects" do
- driver = Driver.create(name: "Tommy Salami", vin: "123cat")
-
- expect {
- delete driver_path(id: driver.id)
- }.must_differ 'Driver.count', -1
- end
+ it "does not change the db when the driver does not exist, then responds with " do
+ driver = Driver.create(name: "Bob", vin: "123cat")
- it "does not change the db when the driver does not exist, then responds with " do
- driver = Driver.create(name: "Bob", vin: "123cat")
-
- expect {
- delete driver_path(id: -2)
- }.must_differ 'Driver.count', 0
+ expect {
+ delete driver_path(id: -2)
+ }.must_differ 'Driver.count', 0
+ end
end
-end
end
\ No newline at end of file
diff --git a/test/controllers/trips_controller_test.rb b/test/controllers/trips_controller_test.rb
index 59455c041..5ccb6bf8d 100644
--- a/test/controllers/trips_controller_test.rb
+++ b/test/controllers/trips_controller_test.rb
@@ -4,19 +4,32 @@
describe "show" do
# Your tests go here
end
-
+
describe "create" do
+ it "can change driver status offline" do
+ driver = Driver.create(name: "Kari", vin: "123")
+
+ passenger = Passenger.create(name: "Jessica", phone_num: 334-876-2345)
+
+ post passenger_trips_path(passenger.id)
+
+ trip = Trip.find_by(passenger_id: passenger.id)
+
+
+ expect(trip.driver.status).must_equal "unavailable"
+ end
+
# Your tests go here
end
-
+
describe "edit" do
# Your tests go here
end
-
+
describe "update" do
# Your tests go here
end
-
+
describe "destroy" do
# Your tests go here
end
diff --git a/test/models/driver_test.rb b/test/models/driver_test.rb
index cf60017c2..f1e866d8d 100644
--- a/test/models/driver_test.rb
+++ b/test/models/driver_test.rb
@@ -86,16 +86,6 @@
it "can go online" do
expect(new_driver.status).must_equal "available"
-
-
- end
-
- it "can go offline" do
-
- passenger = Passenger.create(name: "Jessica", phone_num: 334-876-2345)
- trip_1 = Trip.create(driver_id: new_driver.id, passenger_id: passenger.id, date: Date.parse("Feb 25, 2019"), rating: nil, cost: 2344)
-
- expect(new_driver.reload.status).must_equal "unavailable"
end
end
end
From cbfd2f52f3c70e0fe499ff4423f6e2d1fd086169 Mon Sep 17 00:00:00 2001
From: Dominique
Date: Sat, 12 Oct 2019 16:49:38 -0700
Subject: [PATCH 20/22] last migration
---
db/schema.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/db/schema.rb b/db/schema.rb
index 1591aa022..e92d52643 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2019_10_10_040014) do
+ActiveRecord::Schema.define(version: 20191010212212) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
From cbe163e19c36a59a9100cd532ac3bc2c25fbc6ce Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Sat, 12 Oct 2019 17:38:36 -0700
Subject: [PATCH 21/22] removed duplicate migration
---
.../20191010212212_add_driver_status_column.rb | 5 -----
db/schema.rb | 12 ++++++------
2 files changed, 6 insertions(+), 11 deletions(-)
delete mode 100644 db/migrate/20191010212212_add_driver_status_column.rb
diff --git a/db/migrate/20191010212212_add_driver_status_column.rb b/db/migrate/20191010212212_add_driver_status_column.rb
deleted file mode 100644
index 8954e077d..000000000
--- a/db/migrate/20191010212212_add_driver_status_column.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class AddDriverStatusColumn < ActiveRecord::Migration[5.2]
- def change
- add_column(:drivers, :status, :string, :default => "available")
- end
-end
diff --git a/db/schema.rb b/db/schema.rb
index e92d52643..9de7e85e6 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,11 +10,11 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20191010212212) do
-
+ActiveRecord::Schema.define(version: 2019_10_10_212212) do
+
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
-
+
create_table "drivers", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
@@ -22,14 +22,14 @@
t.string "vin"
t.string "status", default: "available"
end
-
+
create_table "passengers", force: :cascade do |t|
t.string "name"
t.string "phone_num"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
-
+
create_table "trips", force: :cascade do |t|
t.integer "driver_id"
t.integer "passenger_id"
@@ -39,5 +39,5 @@
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
-
+
end
From 71cd323f9ce39b2456df8e15aafe9e299268760a Mon Sep 17 00:00:00 2001
From: Mariya Burrows
Date: Sat, 12 Oct 2019 22:19:00 -0700
Subject: [PATCH 22/22] removed duplicate links from layouts file
---
app/models/trip.rb | 5 +----
app/views/homepages/index.html.erb | 2 +-
app/views/layouts/application.html.erb | 8 --------
3 files changed, 2 insertions(+), 13 deletions(-)
diff --git a/app/models/trip.rb b/app/models/trip.rb
index 4fb300ba9..2f2b928bb 100644
--- a/app/models/trip.rb
+++ b/app/models/trip.rb
@@ -12,7 +12,4 @@ def self.find_driver
end
end
-end
-
-# want method that takes in the driver_id of the associated trip and edit the rating of that trip with an if else
-# statement that will update rating if it is nil.
+end
\ No newline at end of file
diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb
index 227f996bc..6e7cce1ad 100644
--- a/app/views/homepages/index.html.erb
+++ b/app/views/homepages/index.html.erb
@@ -1,4 +1,4 @@
-Hello
+Rideshare Rails
<%= link_to "Manage Drivers",drivers_path%>
<%= link_to "Manage Passengers",passengers_path%>
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 7e539b02f..a5594c512 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -8,14 +8,6 @@
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
-
- Rideshare Rails!
-
- - <%= link_to "Passengers", passengers_path%>
- - <%= link_to "Drivers", drivers_path%>
- - <%= link_to "Add Driver", new_driver_path%>
- - <%= link_to "Add Passenger", new_passenger_path%>
-
<%= yield %>