Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
b35d1bb
created video model
codeandmorecode Dec 2, 2020
ab8e66f
created video customer
codeandmorecode Dec 2, 2020
c7793b6
videos controller generated
codeandmorecode Dec 2, 2020
e34f200
customer controller generated
codeandmorecode Dec 2, 2020
5985c10
add/remove columns to customers and videos
codeandmorecode Dec 3, 2020
e93617f
created show and create method for Video Controller
Dec 3, 2020
22d93e0
created show and create method for customer controller
Dec 3, 2020
63edb15
added model validations
Dec 3, 2020
f43f960
customer model - relations - has rentals test
codeandmorecode Dec 3, 2020
6f65bf6
customer model - relations - has rentals test - matches fixtures
codeandmorecode Dec 3, 2020
3022242
customer model - relations - has videos through rentals
codeandmorecode Dec 3, 2020
ab3259d
customer model - relations - must have a name
codeandmorecode Dec 3, 2020
779e606
customer model - relations - must have an address
codeandmorecode Dec 3, 2020
54e5267
customer model - relations - must have a city
codeandmorecode Dec 3, 2020
c60b7c0
customer model - relations - must have a state
codeandmorecode Dec 3, 2020
717d034
customer model - relations - must have a postal code
codeandmorecode Dec 3, 2020
75885c9
customer model - relations - must have a phone
codeandmorecode Dec 3, 2020
aca2bf7
customer model - relations - must have a unique name
codeandmorecode Dec 3, 2020
b98bc08
customer model - relations - must have a unique phone
codeandmorecode Dec 3, 2020
817edbe
customer model - validations - must be valid when all required fields…
codeandmorecode Dec 3, 2020
77c3ff2
video model - relations - has rentals
codeandmorecode Dec 3, 2020
f9177e8
video model - relations - has customers
codeandmorecode Dec 3, 2020
d292578
fixed typos
codeandmorecode Dec 3, 2020
c93b134
video model - validations - must have a title test
codeandmorecode Dec 3, 2020
9ec196e
video model - validations - must have an overview test
codeandmorecode Dec 3, 2020
d75725b
video model - validations - must have a release date - test
codeandmorecode Dec 3, 2020
9d2ac6f
video model - validations - must have a total inventory - test
codeandmorecode Dec 3, 2020
bed2716
video model - validations - must have an available inventory - test
codeandmorecode Dec 3, 2020
9824f5a
video model - validations - must have a unique title - test
codeandmorecode Dec 3, 2020
ba4b28e
video model - validations - must be valid when all required fields a…
codeandmorecode Dec 3, 2020
b5700b5
deleted controller with singular/plural mistake
codeandmorecode Dec 3, 2020
c25ab30
issue with double controller resolved
codeandmorecode Dec 3, 2020
7b7f5f3
updated Video Controller Index Test so that it can pass
Dec 3, 2020
862d7a5
Video Controller tests are passing
Dec 3, 2020
cd1845f
updated controller tests for Customer/Video
Dec 3, 2020
c55a250
generated Rental model and Rentals Controller and added relationships…
Dec 3, 2020
2a4f1ac
rental model tests - relations - must respond to videos
codeandmorecode Dec 3, 2020
d613916
rental model tests - relations - must respond to customers
codeandmorecode Dec 3, 2020
c93dd4a
changed the Create Customer method and works via postman
Dec 3, 2020
ef1392f
rental model tests - validations - must have a customer_id
codeandmorecode Dec 3, 2020
500028a
rental model tests - validations - must have a video_id
codeandmorecode Dec 3, 2020
05b277f
rental model tests - validations - must have a checkout_date
codeandmorecode Dec 3, 2020
2a3e22c
rental model tests - validations - must have a due_date
codeandmorecode Dec 3, 2020
ac8c8f9
rental model tests - validations - must be valid when created with al…
codeandmorecode Dec 3, 2020
0fa8cd6
Merge branch 'master' of https://github.com/codeandmorecode/video-sto…
codeandmorecode Dec 3, 2020
00b5d3c
syntax fixed
codeandmorecode Dec 3, 2020
8b23770
Show tests for Videos now working
Dec 3, 2020
e5b89c7
merge conflict
Dec 3, 2020
6abe33d
fixed bugs
codeandmorecode Dec 3, 2020
ccfaaf7
Merge branch 'master' of https://github.com/codeandmorecode/video-sto…
codeandmorecode Dec 3, 2020
96f1d20
fixed bugs
codeandmorecode Dec 3, 2020
cb2bbc6
update the controlers for videos, customer and rentals
Dec 3, 2020
3f6a0b5
checkout rental business logic method
codeandmorecode Dec 3, 2020
3da9aca
merge resolution
Dec 3, 2020
2a00501
gitignore file update
Dec 3, 2020
0800e0f
update .idea
Dec 3, 2020
f30f38f
gitignore update
Dec 3, 2020
3f0cefa
error handling fixed for all 3 controllers
codeandmorecode Dec 4, 2020
24dedda
routes updated and rental yml file updated
codeandmorecode Dec 4, 2020
d60201e
videos index - smoke test wave 1 passing
Dec 4, 2020
61a71de
Merge branch 'master' of https://github.com/codeandmorecode/video-sto…
codeandmorecode Dec 4, 2020
62f1635
fixed tests
codeandmorecode Dec 4, 2020
c7f3a3c
fixed routes for check_out and check_in methods
codeandmorecode Dec 4, 2020
5836e08
created check-in method inside Rental Controller, updated bussiness l…
Dec 4, 2020
22a260c
rentals controller test - can checkout a rental; increments rental count
codeandmorecode Dec 4, 2020
dd3d30e
rentals controller test - can checkout a rental; decrements video ava…
codeandmorecode Dec 4, 2020
0ed2ea5
rentals controller test - can checkout a rental; increments customer …
codeandmorecode Dec 4, 2020
1008f90
rentals controller test - can checkout a rental; returns status ok, a…
codeandmorecode Dec 4, 2020
4120f8e
rentals controller test - can checkout a rental; returns 404 - skeleton
codeandmorecode Dec 4, 2020
bdfee88
fixed bug in rentals controller test
codeandmorecode Dec 4, 2020
0531d27
rentals controller check in tests skeleton
codeandmorecode Dec 4, 2020
33d7c1e
rentals controller 404 tests
codeandmorecode Dec 4, 2020
6c8ade6
rentals controller 404 tests part 2 (checkin method)
codeandmorecode Dec 4, 2020
aa37bdb
rentals controller tests - all fixed 0 failures, 0 errors, 0 skips
codeandmorecode 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
Binary file added .DS_Store
Binary file not shown.
30 changes: 30 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -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 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

.idea
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.
32 changes: 32 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
class CustomersController < ApplicationController
def index
customers = Customer.order(:id)
render json: customers.as_json(only: [:id,:name, :registered_at, :postal_code, :phone, :videos_checked_out_count]), status: :ok
end

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

if customer.nil?
render json: {
errors: ['Not Found'],
}, status: :not_found
return
end
render json:customer.as_json(only: [:name, :registered_at, :address, :city, :state, :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, status: :created
else
render json: { errors: customer.errors.messages}, status: :bad_request
end
end
end

private
def customer_params
return params.permit(:name, :address, :city, :state, :postal_code, :phone)
end
Loading