Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Julia & Victoria -- Carets #12

Open
wants to merge 32 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
764a827
Initialize Rails app
vsawchuk Nov 6, 2017
ef4d1dd
Remove comments in routes file
vsawchuk Nov 6, 2017
6bdb021
made customer model
julmeier Nov 6, 2017
530d6eb
added customer controller, created migration to add account_credit to…
julmeier Nov 6, 2017
a23f981
Add customer controller tests, begin index action
vsawchuk Nov 6, 2017
1971f04
Passing customer controller tests for index action
vsawchuk Nov 6, 2017
fb55a3e
Add customer controller test for required fields on index action
vsawchuk Nov 6, 2017
dc25d9f
modified index method to include the movies_checked_out_count in the …
julmeier Nov 6, 2017
ffd2b2b
Refactor index action on customers controller to a method action for …
vsawchuk Nov 6, 2017
0e10415
created movies model and seeded database
julmeier Nov 6, 2017
6e1707b
added the get movies model, routes, and controllers and associated te…
julmeier Nov 6, 2017
0f60ea5
Functionality complete for show individual movie
vsawchuk Nov 6, 2017
a3142eb
Handle errors from movies show action
vsawchuk Nov 6, 2017
0db8183
created post movies route and method. tested for positive cases
julmeier Nov 7, 2017
52902d9
created error codes and messages for invalid movie
julmeier Nov 7, 2017
309143d
changed response code from 201 to 200 so that postman tests would pass
julmeier Nov 7, 2017
a5daa4d
created rentals model. added validates and relationships to all three…
julmeier Nov 7, 2017
360d294
started rental model testing
julmeier Nov 7, 2017
f567fcb
Add rental script seed
vsawchuk Nov 7, 2017
dc24bea
Rental model validation testing
vsawchuk Nov 7, 2017
c0954d9
Begin rental checkout functionality in rentalscontroller
vsawchuk Nov 7, 2017
0e8ac18
rentals controller testing
julmeier Nov 7, 2017
29770fd
Implement inventory controls on rental create method and relevant tes…
vsawchuk Nov 7, 2017
290219a
added checkin date column to rentals
julmeier Nov 7, 2017
8cd10aa
created update method and testing
julmeier Nov 7, 2017
c63878f
added available_inventory method. this broke some previous tests that…
julmeier Nov 8, 2017
bc50b31
Fix failing tests, mostly foreign key constraints
vsawchuk Nov 8, 2017
fb8437c
created checkout_count method in the customer model and modified the …
julmeier Nov 8, 2017
30745a0
created overdue method in rental model and associated testing
julmeier Nov 8, 2017
4ca4330
created overdue route
julmeier Nov 8, 2017
4441043
created overdue method in rentals_controller and associated testing
julmeier Nov 8, 2017
787d8ba
Remove duplication of index customers method
vsawchuk Nov 8, 2017
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
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 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

.byebug_history
53 changes: 53 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
source 'https://rubygems.org'

git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end

gem "awesome_print"
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.4'
# Use postgresql as the database for Active Record
gem 'pg', '~> 0.18'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# 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', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

# 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.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

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

gem 'jquery-turbolinks'
group :development do
gem 'better_errors'
gem 'pry-rails'
gem 'binding_of_caller'
end

group :test do
gem 'minitest-rails'
gem 'minitest-reporters'
end
172 changes: 172 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (5.1.4)
actionpack (= 5.1.4)
nio4r (~> 2.0)
websocket-driver (~> 0.6.1)
actionmailer (5.1.4)
actionpack (= 5.1.4)
actionview (= 5.1.4)
activejob (= 5.1.4)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.1.4)
actionview (= 5.1.4)
activesupport (= 5.1.4)
rack (~> 2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.1.4)
activesupport (= 5.1.4)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
activejob (5.1.4)
activesupport (= 5.1.4)
globalid (>= 0.3.6)
activemodel (5.1.4)
activesupport (= 5.1.4)
activerecord (5.1.4)
activemodel (= 5.1.4)
activesupport (= 5.1.4)
arel (~> 8.0)
activesupport (5.1.4)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7)
minitest (~> 5.1)
tzinfo (~> 1.1)
ansi (1.5.0)
arel (8.0.0)
awesome_print (1.8.0)
better_errors (2.4.0)
coderay (>= 1.0.0)
erubi (>= 1.0.0)
rack (>= 0.9.0)
binding_of_caller (0.7.3)
debug_inspector (>= 0.0.1)
builder (3.2.3)
byebug (9.1.0)
coderay (1.1.2)
concurrent-ruby (1.0.5)
crass (1.0.2)
debug_inspector (0.0.3)
erubi (1.7.0)
ffi (1.9.18)
globalid (0.4.1)
activesupport (>= 4.2.0)
i18n (0.9.1)
concurrent-ruby (~> 1.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.1.1)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.0)
mini_mime (>= 0.1.1)
method_source (0.9.0)
mini_mime (0.1.4)
mini_portile2 (2.3.0)
minitest (5.10.3)
minitest-rails (3.0.0)
minitest (~> 5.8)
railties (~> 5.0)
minitest-reporters (1.1.18)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
nio4r (2.1.0)
nokogiri (1.8.1)
mini_portile2 (~> 2.3.0)
pg (0.21.0)
pry (0.11.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
pry-rails (0.3.6)
pry (>= 0.10.4)
puma (3.10.0)
rack (2.0.3)
rack-test (0.7.0)
rack (>= 1.0, < 3)
rails (5.1.4)
actioncable (= 5.1.4)
actionmailer (= 5.1.4)
actionpack (= 5.1.4)
actionview (= 5.1.4)
activejob (= 5.1.4)
activemodel (= 5.1.4)
activerecord (= 5.1.4)
activesupport (= 5.1.4)
bundler (>= 1.3.0)
railties (= 5.1.4)
sprockets-rails (>= 2.0.0)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.0.3)
loofah (~> 2.0)
railties (5.1.4)
actionpack (= 5.1.4)
activesupport (= 5.1.4)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (12.2.1)
rb-fsevent (0.10.2)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
ruby-progressbar (1.9.0)
ruby_dep (1.5.0)
spring (2.0.2)
activesupport (>= 4.2)
spring-watcher-listen (2.0.1)
listen (>= 2.7, < 4.0)
spring (>= 1.2, < 3.0)
sprockets (3.7.1)
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.0)
thread_safe (0.3.6)
turbolinks (5.0.1)
turbolinks-source (~> 5)
turbolinks-source (5.0.3)
tzinfo (1.2.4)
thread_safe (~> 0.1)
websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2)

PLATFORMS
ruby

DEPENDENCIES
awesome_print
better_errors
binding_of_caller
byebug
jquery-turbolinks
listen (>= 3.0.5, < 3.2)
minitest-rails
minitest-reporters
pg (~> 0.18)
pry-rails
puma (~> 3.7)
rails (~> 5.1.4)
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data

BUNDLED WITH
1.16.0.pre.3
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.
10 changes: 10 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class CustomersController < ApplicationController

def index
customers = Customer.index_customers

render(
json: customers.to_json
)
end
end
54 changes: 54 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
class MoviesController < ApplicationController

def index
movies = Movie.all
render(
json: movies.to_json(only: [:id, :title, :release_date]),
status: :ok
)
end

def show
movie = Movie.find_by(id: params[:id])
if movie
render(
json: movie.as_json(only: [:title, :overview, :release_date, :inventory]).merge("available_inventory" => movie.available_inventory),
status: :ok
)
else
render(
json: {
"ok" => false,
"errors" => {
"id": ["Could not find movie with id: #{params[:id]}"]
}
},
status: :not_found
)
end
end

def create
movie = Movie.new(movie_params)
if movie.save
render(
json: movie.as_json(only: [:id]),
status: :ok
)
else
render(
json: {
"ok" => false,
"errors" => movie.errors.messages
},
status: :bad_request) #400 response code
end
end

private

def movie_params
params.permit(:title, :overview, :release_date)
end

end
64 changes: 64 additions & 0 deletions app/controllers/rentals_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
class RentalsController < ApplicationController
def create
due_date_string = params[:due_date]
due_date_var = Date.parse(due_date_string)
rental = Rental.new(rental_params.merge(checkout_date: Date.today, due_date: due_date_var))
if rental.valid?
if Rental.available?(params[:movie_id])
rental.save
render(
json: rental.as_json(only: [:id]),
status: :ok
)
else
render(
json: {
"ok" => false,
"errors" => ["Requested movie is not in stock."]
},
status: :bad_request)
end
else
render(
json: {
"ok" => false,
"errors" => rental.errors.messages
},
status: :bad_request)
end
end

def update
rental = Rental.find_by(movie_id: params[:movie_id], customer_id: params[:customer_id])
if rental
rental.checkin_date = Date.today
rental.save
render(
json: rental.as_json(only: [:id]),
status: :ok
)
else
render(
json: {
"ok" => false,
"errors" => ["Rental does not exist."]
},
status: :bad_request)
end
end

def overdue
overdue_rentals = Rental.overdue
render(
json: overdue_rentals.as_json,
status: :ok
)
end

private

def rental_params
params.permit(:customer_id, :movie_id)
end

end
2 changes: 2 additions & 0 deletions app/jobs/application_job.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ApplicationJob < ActiveJob::Base
end
Loading