Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
9207c67
initial setup
emirry Dec 2, 2020
37d052f
field typeo
emirry Dec 2, 2020
6cfdfa0
customer index route/controller implemented. completed migration for …
emirry Dec 2, 2020
0ec1692
implemented show and included in routes
emirry Dec 2, 2020
466291a
changed fields to a global variable in tests
emirry Dec 2, 2020
acf8517
show postive nominal test
emirry Dec 2, 2020
f52adec
edge case test for customers show
emirry Dec 2, 2020
0a8bae5
add index action
annakim93 Dec 3, 2020
4224a89
revising data type for release_date for video; adding videos checked …
annakim93 Dec 3, 2020
3991f95
model validation for name, show action and tests implemented
emirry Dec 3, 2020
3108d57
add route for videos; pass videos_controller index action test
annakim93 Dec 3, 2020
7118254
add route for videos; pass videos_controller index action test
annakim93 Dec 3, 2020
c7ad583
create show action to pass videos controller show tests
annakim93 Dec 3, 2020
40b3951
add validations to video model to pass create test with invalid params
annakim93 Dec 3, 2020
b2e2945
revising validations for video model
annakim93 Dec 3, 2020
6604945
video model test for instantiation
annakim93 Dec 3, 2020
e892088
video model validation tests
annakim93 Dec 3, 2020
b3ee949
included customer validations and began mode validatation tests
emirry Dec 3, 2020
ceaf5c7
test for validation that a name is unique
emirry Dec 3, 2020
a30c218
tests for validations passing
emirry Dec 3, 2020
e8aeeb0
Merge pull request #1 from annakim93/video
annakim93 Dec 3, 2020
e738b88
customer_params
emirry Dec 3, 2020
b8e6985
Merge branch 'master' into customers_controller
emirry Dec 3, 2020
cce26bb
Merge pull request #2 from annakim93/customers_controller
emirry Dec 3, 2020
9a8bc07
adjustment to video save in controller to comment out ok: false
annakim93 Dec 3, 2020
b055da6
changing errors for show action to array
annakim93 Dec 3, 2020
8336b38
created rentals controller and model
emirry Dec 3, 2020
2a43042
relationships and dropped migration
emirry Dec 3, 2020
b6135ef
added more rental columns
emirry Dec 3, 2020
d0a7cc1
rental routes and pseudocode
emirry Dec 3, 2020
7d1fb6f
checkout checkin methods
emirry Dec 3, 2020
e3a17a5
check in method for rentals controller, first draft
emirry Dec 3, 2020
2b23a0a
customer relationship to models implemented
emirry Dec 3, 2020
30a7ae0
modified custom rentals route and rental custom method
emirry Dec 3, 2020
0785efe
migration to add customer and video refs
emirry Dec 3, 2020
41e012c
Merge pull request #3 from annakim93/rentalscheckin
emirry Dec 3, 2020
d52049b
migration to add customer and video refs
emirry Dec 3, 2020
835a507
add route for custom action check out
annakim93 Dec 3, 2020
36ffd15
created check_out_rental custom action for videos controller
annakim93 Dec 3, 2020
2f5cb6f
add rental initialize method to Rental model
annakim93 Dec 3, 2020
a22221d
added helper method is_valid? to check that video is available before…
annakim93 Dec 3, 2020
1d61b47
move is_valid? check before rental save
annakim93 Dec 3, 2020
e4658be
fix due date intialization
annakim93 Dec 3, 2020
77800d9
change status to OK for checkout success
annakim93 Dec 3, 2020
ad8369c
adjust is_valid check to occur before save and render json with custo…
annakim93 Dec 3, 2020
6a7f3f0
fix include in render json for checkout
annakim93 Dec 3, 2020
fa0995a
save video and customer after incrementing/decrementing
annakim93 Dec 3, 2020
0ed4e96
working checkout action
annakim93 Dec 3, 2020
39bf90f
rental check_in_rental modified
emirry Dec 3, 2020
d425bb6
began writing check in tests for rentals
emirry Dec 3, 2020
f325502
resolved conflicts
emirry Dec 3, 2020
826d670
checkout/checkin works
emirry Dec 3, 2020
d98186c
test for customer video count validation
emirry Dec 4, 2020
6204cde
updating rentals controller check_in_rental action to find the rental…
annakim93 Dec 4, 2020
075b8ac
add find_video and find_customer private methods to rentals controller
annakim93 Dec 4, 2020
9972a00
adding validation checks for video and customer
annakim93 Dec 4, 2020
72b6f95
change valid video and customer methods to check if present not nil
annakim93 Dec 4, 2020
f3dc60a
rework render json for successful rental save to match postman expect…
annakim93 Dec 4, 2020
b0481e6
adjust rental in rental check in custom action to be a Rental object …
annakim93 Dec 4, 2020
8a18871
cleanup unused methods
annakim93 Dec 4, 2020
e342d98
add missing return for invalid rental check in check in custom action
annakim93 Dec 4, 2020
485a576
add tests for custom Video model method: in_stock?
annakim93 Dec 5, 2020
9a2e3a4
add tests for custom model method: check in and check out
annakim93 Dec 5, 2020
30b88df
add customer tests for custom model methods: check in and out
annakim93 Dec 5, 2020
964e0b7
add failure tests for rentals controller; delete check for valid vide…
annakim93 Dec 5, 2020
aa6852f
move check_in and check_out to customer and video models so that we d…
annakim93 Dec 5, 2020
872e10c
add tests for check in custom action
annakim93 Dec 5, 2020
1d92d06
add has_many rentals association to Video model; add relationship tes…
annakim93 Dec 5, 2020
b5ec02d
rental model relationship tests
annakim93 Dec 5, 2020
6796948
got rid of valid video and customer checks and replaced with rental.v…
annakim93 Dec 5, 2020
8037ee4
add custom method tests for Rental model
annakim93 Dec 5, 2020
72e5022
small formatting
annakim93 Dec 5, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 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 pidfiles, but keep the directory.
/tmp/pids/*
!/tmp/pids/
!/tmp/pids/.keep

# Ignore uploaded files in development.
/storage/*
!/storage/.keep
.byebug_history

# Ignore master key for decrypting credentials and more.
/config/master.key
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2.6.5
57 changes: 57 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.6.5'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 6.0.3', '>= 6.0.3.4'
# Use postgresql as the database for Active Record
gem 'pg', '>= 0.18', '< 2.0'
# Use Puma as the app server
gem 'puma', '~> 4.1'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
# gem 'jbuilder', '~> 2.7'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Active Storage variant
# gem 'image_processing', '~> 1.2'

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.4.2', require: false

# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible
# gem 'rack-cors'

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
gem 'listen', '~> 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

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

group :development, :test do
gem 'pry-rails'
end

group :development do
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'
end
212 changes: 212 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (6.0.3.4)
actionpack (= 6.0.3.4)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.0.3.4)
actionpack (= 6.0.3.4)
activejob (= 6.0.3.4)
activerecord (= 6.0.3.4)
activestorage (= 6.0.3.4)
activesupport (= 6.0.3.4)
mail (>= 2.7.1)
actionmailer (6.0.3.4)
actionpack (= 6.0.3.4)
actionview (= 6.0.3.4)
activejob (= 6.0.3.4)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (6.0.3.4)
actionview (= 6.0.3.4)
activesupport (= 6.0.3.4)
rack (~> 2.0, >= 2.0.8)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (6.0.3.4)
actionpack (= 6.0.3.4)
activerecord (= 6.0.3.4)
activestorage (= 6.0.3.4)
activesupport (= 6.0.3.4)
nokogiri (>= 1.8.5)
actionview (6.0.3.4)
activesupport (= 6.0.3.4)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
activejob (6.0.3.4)
activesupport (= 6.0.3.4)
globalid (>= 0.3.6)
activemodel (6.0.3.4)
activesupport (= 6.0.3.4)
activerecord (6.0.3.4)
activemodel (= 6.0.3.4)
activesupport (= 6.0.3.4)
activestorage (6.0.3.4)
actionpack (= 6.0.3.4)
activejob (= 6.0.3.4)
activerecord (= 6.0.3.4)
marcel (~> 0.3.1)
activesupport (6.0.3.4)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
zeitwerk (~> 2.2, >= 2.2.2)
ansi (1.5.0)
bootsnap (1.5.1)
msgpack (~> 1.0)
builder (3.2.4)
byebug (11.1.3)
coderay (1.1.3)
concurrent-ruby (1.1.7)
crass (1.0.6)
debase (0.2.4.1)
debase-ruby_core_source (>= 0.10.2)
debase-ruby_core_source (0.10.11)
erubi (1.10.0)
ffi (1.13.1)
formatador (0.2.5)
globalid (0.4.2)
activesupport (>= 4.2.0)
guard (2.16.2)
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.8.5)
concurrent-ruby (~> 1.0)
listen (3.3.3)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
loofah (2.8.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
lumberjack (1.2.8)
mail (2.7.1)
mini_mime (>= 0.1.1)
marcel (0.3.3)
mimemagic (~> 0.3.2)
method_source (1.0.0)
mimemagic (0.3.5)
mini_mime (1.0.2)
mini_portile2 (2.4.0)
minitest (5.14.2)
minitest-rails (6.0.1)
minitest (~> 5.10)
railties (~> 6.0.0)
minitest-reporters (1.4.2)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
msgpack (1.3.3)
nenv (0.3.0)
nio4r (2.5.4)
nokogiri (1.10.10)
mini_portile2 (~> 2.4.0)
notiffany (0.1.3)
nenv (~> 0.1)
shellany (~> 0.0)
pg (1.2.3)
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
pry-rails (0.3.9)
pry (>= 0.10.4)
puma (4.3.7)
nio4r (~> 2.0)
rack (2.2.3)
rack-test (1.1.0)
rack (>= 1.0, < 3)
rails (6.0.3.4)
actioncable (= 6.0.3.4)
actionmailbox (= 6.0.3.4)
actionmailer (= 6.0.3.4)
actionpack (= 6.0.3.4)
actiontext (= 6.0.3.4)
actionview (= 6.0.3.4)
activejob (= 6.0.3.4)
activemodel (= 6.0.3.4)
activerecord (= 6.0.3.4)
activestorage (= 6.0.3.4)
activesupport (= 6.0.3.4)
bundler (>= 1.3.0)
railties (= 6.0.3.4)
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 (6.0.3.4)
actionpack (= 6.0.3.4)
activesupport (= 6.0.3.4)
method_source
rake (>= 0.8.7)
thor (>= 0.20.3, < 2.0)
rake (13.0.1)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
ruby-debug-ide (0.7.2)
rake (>= 0.8.1)
ruby-progressbar (1.10.1)
shellany (0.0.1)
spring (2.1.1)
spring-watcher-listen (2.0.1)
listen (>= 2.7, < 4.0)
spring (>= 1.2, < 3.0)
sprockets (4.0.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.2)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
thor (1.0.1)
thread_safe (0.3.6)
tzinfo (1.2.8)
thread_safe (~> 0.1)
websocket-driver (0.7.3)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
zeitwerk (2.4.2)

PLATFORMS
ruby

DEPENDENCIES
bootsnap (>= 1.4.2)
byebug
debase (>= 0.2.4.1)
guard
guard-minitest
listen (~> 3.2)
minitest-rails
minitest-reporters
pg (>= 0.18, < 2.0)
pry-rails
puma (~> 4.1)
rails (~> 6.0.3, >= 6.0.3.4)
ruby-debug-ide (>= 0.7.0)
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data

RUBY VERSION
ruby 2.6.5p114

BUNDLED WITH
2.1.4
9 changes: 9 additions & 0 deletions Guardfile
Original file line number Diff line number Diff line change
@@ -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
6 changes: 6 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -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
4 changes: 4 additions & 0 deletions app/channels/application_cable/channel.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module ApplicationCable
class Channel < ActionCable::Channel::Base
end
end
4 changes: 4 additions & 0 deletions app/channels/application_cable/connection.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module ApplicationCable
class Connection < ActionCable::Connection::Base
end
end
2 changes: 2 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ApplicationController < ActionController::API
end
Empty file added app/controllers/concerns/.keep
Empty file.
47 changes: 47 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
class CustomersController < ApplicationController
def index
customers = Customer.all.order(:id).as_json(
only: [:id, :name, :registered_at, :postal_code, :phone, :videos_checked_out_count]
)

render json: customers, status: :ok
end

def show
customer = Customer.find_by(id: params[:id])

if customer.nil?
render json: { ok: false, message: 'Not Found'}, status: :not_found
return
end

render json: customer.as_json(
only: [:id, :name, :registered_at, :postal_code, :phone, :videos_checked_out_count]
), status: :ok
end

def create
customer = Customer.new(customer_params)

if customer.save
render json: customer.as_json(only: [:id]), status: :created
else
render json: { errors: customer.errors.messages }, status: :bad_request
end
end

private

def customer_params
return params.require(:customer).permit(
:name,
:registered_at,
:address,
:city,
:state,
:postal_code,
:phone,
:videos_checked_out_count
)
end
end
Loading