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

Jessica Owens, Shaunna Wiens --carets #21

Open
wants to merge 38 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
467b79c
Generated customer and movie models
vertige Nov 6, 2017
c9e828f
Added basic rote instantiation tests
vertige Nov 6, 2017
89f2bd0
customer index route and action
skwiens Nov 6, 2017
4bb42b7
cust index returns json
skwiens Nov 6, 2017
11ad4e5
json returns an array
skwiens Nov 6, 2017
82000b1
customer index returns all customers with reqd fields
skwiens Nov 6, 2017
ad0b16b
refactor cust index test
skwiens Nov 6, 2017
6fe9398
Wrote Customers validation tests
vertige Nov 6, 2017
f7e0fa0
Included registered at in the validation
vertige Nov 6, 2017
ba88916
Assessed our status responses for CustomersController#index
vertige Nov 6, 2017
369b589
validations for movie model
skwiens Nov 6, 2017
c31c0d8
refactored customer model test
skwiens Nov 6, 2017
4ae51bb
validated id
skwiens Nov 6, 2017
2ae7ebd
MoviesController#index test-returns successfully returns json as an A…
vertige Nov 6, 2017
85f39e6
MoviesController#index test-returns customers with exactly the fields…
vertige Nov 6, 2017
94b9732
MoviesController#index test-returns an empty array if there are no Mo…
vertige Nov 6, 2017
1a68d14
Wrote and tested MoviesController#Show tests and methods
vertige Nov 7, 2017
59f9f67
Prepped empty MoviesController#create tests
vertige Nov 7, 2017
a48ffb9
Wrote and tested MoviesController#create method
vertige Nov 7, 2017
9cb1aca
rentals model and controller generated
skwiens Nov 7, 2017
4e04454
test fixtures added
skwiens Nov 7, 2017
e17f92b
movie relationships and tests
skwiens Nov 7, 2017
2b167e9
fixed format to pass smokeman tests
skwiens Nov 7, 2017
1f10ddd
Added Customer Rental relation tests
vertige Nov 7, 2017
26d4aee
Tested Rental model validations
vertige Nov 7, 2017
ef1a5d6
Wrote tests for belongs to movie and customer
vertige Nov 7, 2017
9f1431f
Added Relation tests when custoer and movie are destroyed
vertige Nov 7, 2017
08ae9f9
checkout movie action in rentails controller -- still doesn't change …
skwiens Nov 7, 2017
23320d2
checkout action in rentals controller AND set_checkout method in rent…
skwiens Nov 8, 2017
645e47d
Wrote tests for Movie#rent
vertige Nov 8, 2017
c068f8e
Wrote tests for Movie#return
vertige Nov 8, 2017
fd59502
Wrote available_inventory test
vertige Nov 8, 2017
8197e59
finished tests and checkout action in rental controller now changes m…
skwiens Nov 8, 2017
fadd223
added available_inventory to MoviesController#show
vertige Nov 8, 2017
6fca43e
fix strong params and recovery if out is nil for smoke test
skwiens Nov 8, 2017
3cc33b4
Wrote first checkin controller test. breaking for lunch
vertige Nov 8, 2017
7adee01
returns the movie test for movie for rental controller
skwiens Nov 8, 2017
08fbe9a
finished tests for checkin in the controller
skwiens Nov 9, 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 'active_model_serializers'
# 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
179 changes: 179 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
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)
active_model_serializers (0.10.6)
actionpack (>= 4.1, < 6)
activemodel (>= 4.1, < 6)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.2)
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)
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)
case_transform (0.2)
activesupport
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
jsonapi-renderer (0.1.3)
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
active_model_serializers
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.15.4
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.all

render json:
customers.as_json(

Choose a reason for hiding this comment

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

hmm... no # of checked out movies

only: [:id, :name, :registered_at, :postal_code, :phone], status: :ok
)
end
end
40 changes: 40 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
class MoviesController < ApplicationController

def index
movies = Movie.all

render json: movies.as_json(only: [:id, :title, :release_date]), status: :ok
end

def show
movie = Movie.find_by(id: params[:id])

if movie
show_movie_hash = {
title: movie.title,
overview: movie.overview,
release_date: movie.release_date,
inventory: movie.inventory,
available_inventory: movie.available_inventory,
}

render json: show_movie_hash.as_json, status: :ok
else
render json: { ok: false }, 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 }, status: :bad_request

Choose a reason for hiding this comment

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

I would also include the errors hash messages in the JSON

end end

private
def movie_params
params.permit(:title, :overview, :release_date, :inventory, :out)
end
end
36 changes: 36 additions & 0 deletions app/controllers/rentals_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
class RentalsController < ApplicationController

def checkout
rental = Rental.new(rental_params)
rental.set_checkout

if rental.valid? && rental.movie.rent
rental.save
rental.movie.save
render json: rental.as_json(only: [:id]), status: :ok
else
render json: {ok: false}, status: :bad_request
end
end

def check_in
rental = Rental.find_rental(rental_params)

if rental && rental.movie.return
rental.set_check_in
rental.save
rental.movie.save
render json: rental.as_json(only: [:id]), status: :ok
else
render json: {ok: false}, status: :bad_request
end

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
4 changes: 4 additions & 0 deletions app/mailers/application_mailer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class ApplicationMailer < ActionMailer::Base
default from: '[email protected]'
layout 'mailer'
end
3 changes: 3 additions & 0 deletions app/models/application_record.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
Empty file added app/models/concerns/.keep
Empty file.
6 changes: 6 additions & 0 deletions app/models/customer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class Customer < ApplicationRecord
has_many :rentals, dependent: :nullify

validates_presence_of :name, :postal_code, :phone, :registered_at

end
Loading