Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
0a49579
initial rails setup
msfinnan May 14, 2019
8bf4ae5
customers controller
RPerry May 14, 2019
814ed0b
added models and validations
msfinnan May 14, 2019
99ec629
test fixtures
RPerry May 14, 2019
30381b4
changed data type i yml file
RPerry May 14, 2019
a2f1fc1
fixed due date for rentals fixtures
msfinnan May 14, 2019
f7cc8e2
changing name of yml file fixtures
RPerry May 14, 2019
92585c8
updated fixtures and created rental model tests
msfinnan May 14, 2019
aef7036
accepted pulled changes
RPerry May 14, 2019
f801f40
added routes for customers and movies
msfinnan May 14, 2019
a4a8dba
created movies and rentals controllers, started movies controller test
msfinnan May 14, 2019
c3455a1
customers controller and tests
RPerry May 14, 2019
737a3ef
finished controller tests and actions for movies
msfinnan May 14, 2019
5403bfc
Merge branch 'master' of https://github.com/msfinnan/VideoStoreAPI
msfinnan May 14, 2019
b434315
added columns to movies and customers regarding aviailability
msfinnan May 14, 2019
70ddb25
fixed migration error
msfinnan May 14, 2019
f932c4e
added new columns to movie and customer controllers and tests
RPerry May 14, 2019
0560f79
checkout controller action and tests
RPerry May 14, 2019
307702d
updated movies controller and test
msfinnan May 14, 2019
c30f8b3
merge conflicts resolved
msfinnan May 14, 2019
3ff6512
rentals checkin action and controller tests complete
msfinnan May 15, 2019
ee1c179
changed status from success to ok in checkin action
RPerry May 15, 2019
8391e50
added some tests to movies show controller
RPerry May 15, 2019
658481b
changed route to include dash
RPerry May 15, 2019
af6a109
added to checkout and checkin methods and controller tests
RPerry May 15, 2019
078b6e7
updated checkin action and wrote tests for checkin action
msfinnan May 15, 2019
4146657
added functionality so user cannot checkout movie that has a availabl…
msfinnan May 15, 2019
0157402
added validation for title to movie model and corresponding tests
msfinnan May 15, 2019
ebb8ab0
added simplecov and delted unused customer strong params
msfinnan May 15, 2019
20e598e
added query params for sorting by name or id
msfinnan May 15, 2019
e2579f3
refactored customer index action, added tests for query params, added…
msfinnan May 15, 2019
9d259a0
added paginate to customers controller index and tests
RPerry May 15, 2019
38d4c16
limited sortable fields for customers controller index
RPerry May 15, 2019
26ab04f
added edges cases for customer controller test
RPerry May 15, 2019
2febcf7
added sort and paginate to movies and controller tests
RPerry May 16, 2019
df8c508
added migratin to add columns to rentals, created overdues action
msfinnan May 16, 2019
3c5a078
updated overdue action, finished tests for overdue action
msfinnan May 17, 2019
a16ad55
changed fixture
RPerry May 17, 2019
64042c8
Merge branch 'master' of https://github.com/msfinnan/VideoStoreAPI
RPerry May 17, 2019
6c115a0
changed date object in test
RPerry May 24, 2019
7a1b285
Merge pull request #1 from msfinnan/fix
RPerry May 24, 2019
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.
25 changes: 25 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# 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'
/coverage/
# Ignore bundler config.
/.bundle

# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.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 @@
ruby-2.5.1
58 changes: 58 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.5.1'

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

# 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'
gem 'rb-readline'
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 :test do
gem 'minitest-rails'
gem 'minitest-reporters'
end

gem 'simplecov', require: false, group: :test
gem 'will_paginate', '~> 3.1.6'
181 changes: 181 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
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)
ansi (1.5.0)
arel (9.0.0)
bootsnap (1.4.4)
msgpack (~> 1.0)
builder (3.2.3)
byebug (11.0.1)
coderay (1.1.2)
concurrent-ruby (1.1.5)
crass (1.0.4)
docile (1.3.1)
erubi (1.8.0)
ffi (1.10.0)
globalid (0.4.2)
activesupport (>= 4.2.0)
i18n (1.6.0)
concurrent-ruby (~> 1.0)
json (2.1.0)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
loofah (2.2.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
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.1)
mini_portile2 (2.4.0)
minitest (5.11.3)
minitest-rails (3.0.0)
minitest (~> 5.8)
railties (~> 5.0)
minitest-reporters (1.3.6)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
msgpack (1.2.10)
nio4r (2.3.1)
nokogiri (1.10.3)
mini_portile2 (~> 2.4.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)
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.0.4)
loofah (~> 2.2, >= 2.2.2)
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 (12.3.2)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
ffi (~> 1.0)
rb-readline (0.5.5)
ruby-progressbar (1.10.0)
ruby_dep (1.5.0)
simplecov (0.16.1)
docile (~> 1.1)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.2)
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.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)
tzinfo (1.2.5)
thread_safe (~> 0.1)
websocket-driver (0.7.0)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.3)
will_paginate (3.1.7)

PLATFORMS
ruby

DEPENDENCIES
bootsnap (>= 1.1.0)
byebug
listen (>= 3.0.5, < 3.2)
minitest-rails
minitest-reporters
pg (>= 0.18, < 2.0)
pry-rails
puma (~> 3.11)
rails (~> 5.2.3)
rb-readline
simplecov
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data
will_paginate (~> 3.1.6)

RUBY VERSION
ruby 2.5.1p57

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

if params[:sort]== "name" || params[:sort]== "registered_at" || params[:sort] == "postal_code" && params[:n]
customers = Customer.all.order(params[:sort]).paginate(page: params[:p], per_page: params[:n])
elsif params[:sort] == "name" || params[:sort]== "registered_at" || params[:sort] == "postal_code"
customers = Customer.all.order(params[:sort])
elsif params[:n] && params[:p]
customers = Customer.all.paginate(page: params[:p], per_page: params[:n])
else
customers = Customer.all
end

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

private
end
44 changes: 44 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@

class MoviesController < ApplicationController

def index
if params[:sort]== "title" || params[:sort]== "release_date" && params[:n]
movies = Movie.all.order(params[:sort]).paginate(page: params[:p], per_page: params[:n])
elsif params[:sort] == "title" || params[:sort]== "release_date"
movies = Movie.all.order(params[:sort])
elsif params[:n] && params[:p]
movies = Movie.all.paginate(page: params[:p], per_page: params[:n])
else
movies = Movie.all
end
render json: movies.as_json(only: [:id, :title, :release_date]), status: :ok
end

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

if movie #if movie is not nil
render json: movie.as_json(only: [:id, :inventory, :overview, :title, :release_date, :available_inventory]), status: :ok
else
render json: {ok: false, errors: "Movie not found"}, status: :not_found
end
end

def create
movie = Movie.new(movie_params)

if movie.save #is successful
movie.available_inventory = movie.inventory
movie.save
render json: movie.as_json(only: [:id, :overview, :title, :release_date, :inventory, :available_inventory]), status: :ok #include id so they can find pet later if they want to
else
render json: {ok: false, errors: movie.errors.messages}, status: :bad_request
end
end

private

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