Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
bdd7d21
initial rails setup
larachan15 Nov 5, 2018
35e1989
created controllers and models
kimj42 Nov 5, 2018
1df5cb5
Merge pull request #1 from larachan15/karis-setup
kimj42 Nov 5, 2018
20e9f25
testing for customer model
kimj42 Nov 5, 2018
e8b4088
Merge pull request #2 from larachan15/karis-setup
larachan15 Nov 5, 2018
aefce26
created tests for movies model
kimj42 Nov 5, 2018
a4037f7
Merge pull request #3 from larachan15/karis-setup
larachan15 Nov 5, 2018
6d489da
added routes
kimj42 Nov 5, 2018
b1c5fe0
Merge pull request #4 from larachan15/karis-setup
larachan15 Nov 5, 2018
f49f078
controller tests for index and show complete
larachan15 Nov 6, 2018
dc32b50
customers controller and tests complete
larachan15 Nov 6, 2018
4ef0dc2
Merge pull request #5 from larachan15/dionisia-work
kimj42 Nov 6, 2018
ca35154
movies controllers and tests passing
larachan15 Nov 6, 2018
f3048fe
Merge pull request #6 from larachan15/dionisia-work
kimj42 Nov 7, 2018
3b2ad23
a ds_store file was added?
kimj42 Nov 7, 2018
4faaf7f
added movies_checked_out via migration and added more validation to c…
kimj42 Nov 7, 2018
c827ee5
Merge branch 'master' into karis-setup
kimj42 Nov 7, 2018
c1f1e0d
Merge pull request #7 from larachan15/karis-setup
larachan15 Nov 7, 2018
5444e6c
fixed movies controller smoke test pass except for movie has availabl…
larachan15 Nov 7, 2018
e55b123
added migration for available inventory to movies
kimj42 Nov 7, 2018
e1df04f
passes all smoke tests
kimj42 Nov 7, 2018
fecf995
Merge pull request #8 from larachan15/karis-setup
larachan15 Nov 7, 2018
04bd127
merging conflicts
larachan15 Nov 7, 2018
38a604b
changed fields to return to match requirement
kimj42 Nov 7, 2018
3553cf3
modified fields to return
kimj42 Nov 7, 2018
ff74c1f
added foreign keys to rentals
kimj42 Nov 7, 2018
433ebe1
added routes for checkin and checkout, methods work
kimj42 Nov 7, 2018
0330b80
Merge pull request #10 from larachan15/karis-setup
larachan15 Nov 7, 2018
deb1caf
fixed avail inventory issue
kimj42 Nov 7, 2018
1a51ef1
Merge pull request #11 from larachan15/karis-setup
larachan15 Nov 7, 2018
6a78b2d
merge conflict fix
larachan15 Nov 7, 2018
b67a549
Update movies_controller.rb
kimj42 Nov 7, 2018
babe58a
Merge pull request #12 from larachan15/dionisia-work
kimj42 Nov 7, 2018
b748f60
updated rental checkout
larachan15 Nov 8, 2018
6f0149b
added checkin method to rental
larachan15 Nov 8, 2018
4a75e15
modified seed data and validations
larachan15 Nov 8, 2018
35609b8
all smoke tests passing
larachan15 Nov 8, 2018
9bff45c
Merge pull request #13 from larachan15/dionisia-work
kimj42 Nov 8, 2018
9ab3023
smoke tests were not passing before but now they are whoo
larachan15 Nov 9, 2018
7d9171d
rentals tests
larachan15 Nov 9, 2018
391c48e
Merge pull request #14 from larachan15/dionisia-work
kimj42 Nov 9, 2018
f3d2eed
rentals controller tests added
larachan15 Nov 9, 2018
7078c31
Merge pull request #15 from larachan15/dionisia-work
kimj42 Nov 9, 2018
be43d0a
added tests for model methods
kimj42 Nov 9, 2018
9036746
Merge pull request #16 from larachan15/karis-setup
larachan15 Nov 9, 2018
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.
23 changes: 23 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 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 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
54 changes: 54 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
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.1'
# 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'
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
169 changes: 169 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (5.2.1)
actionpack (= 5.2.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailer (5.2.1)
actionpack (= 5.2.1)
actionview (= 5.2.1)
activejob (= 5.2.1)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.2.1)
actionview (= 5.2.1)
activesupport (= 5.2.1)
rack (~> 2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.2.1)
activesupport (= 5.2.1)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
activejob (5.2.1)
activesupport (= 5.2.1)
globalid (>= 0.3.6)
activemodel (5.2.1)
activesupport (= 5.2.1)
activerecord (5.2.1)
activemodel (= 5.2.1)
activesupport (= 5.2.1)
arel (>= 9.0)
activestorage (5.2.1)
actionpack (= 5.2.1)
activerecord (= 5.2.1)
marcel (~> 0.3.1)
activesupport (5.2.1)
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.3.2)
msgpack (~> 1.0)
builder (3.2.3)
byebug (10.0.2)
coderay (1.1.2)
concurrent-ruby (1.1.1)
crass (1.0.4)
erubi (1.7.1)
ffi (1.9.25)
globalid (0.4.1)
activesupport (>= 4.2.0)
i18n (1.1.1)
concurrent-ruby (~> 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.1)
mimemagic (0.3.2)
mini_mime (1.0.1)
mini_portile2 (2.3.0)
minitest (5.11.3)
minitest-rails (3.0.0)
minitest (~> 5.8)
railties (~> 5.0)
minitest-reporters (1.3.5)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
msgpack (1.2.4)
nio4r (2.3.1)
nokogiri (1.8.5)
mini_portile2 (~> 2.3.0)
pg (1.1.3)
pry (0.12.0)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
pry-rails (0.3.6)
pry (>= 0.10.4)
puma (3.12.0)
rack (2.0.5)
rack-test (1.1.0)
rack (>= 1.0, < 3)
rails (5.2.1)
actioncable (= 5.2.1)
actionmailer (= 5.2.1)
actionpack (= 5.2.1)
actionview (= 5.2.1)
activejob (= 5.2.1)
activemodel (= 5.2.1)
activerecord (= 5.2.1)
activestorage (= 5.2.1)
activesupport (= 5.2.1)
bundler (>= 1.3.0)
railties (= 5.2.1)
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.1)
actionpack (= 5.2.1)
activesupport (= 5.2.1)
method_source
rake (>= 0.8.7)
thor (>= 0.19.0, < 2.0)
rake (12.3.1)
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
ruby-progressbar (1.10.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.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.0)
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)

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.1)
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data

RUBY VERSION
ruby 2.5.1p57

BUNDLED WITH
1.16.5
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
6 changes: 6 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class ApplicationController < ActionController::API

def render_error(status, errors)
render json: { errors: errors }, status: status
end
end
Empty file added app/controllers/concerns/.keep
Empty file.
43 changes: 43 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
require 'date'

class CustomersController < ApplicationController
def index
customers = Customer.all
render json: jsonify(customers), status: :ok #response code
# binding.pry
end

# def show
# customer = Customer.find_by(id: params[:id])
#
# if customer
# render json: jsonify(customer), status: :ok #response code
# else
# # options
# # head :not_found
# # render json: {}, status: :not_found
# render_error(:not_found, { customer_id: ["No such customer"] } )
# end
# end

# def create
# customer = Customer.new(customer_params)
# # binding.pry
# if customer.save
# render json: { id: customer.id }, status: :ok
# else
# render_error(:bad_request, customer.errors.messages)
# end
# end

private

def customer_params
# binding.pry
params.require(:customer).permit(:name, :registered_at, :postal_code, :phone, :movies_checked_out_count)
end

def jsonify(customer_data)
return customer_data.as_json(only: [:id, :name, :registered_at, :postal_code, :phone, :movies_checked_out_count])
end
end
48 changes: 48 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
class MoviesController < ApplicationController
def index
movies = Movie.all

if movies
render json: movies.as_json(only: [:id, :title, :release_date]), status: :ok #response code
else
render_errors(:not_found, { movies: ["No movies found."]})
end
end

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

if movie
render json: jsonify(movie), status: :ok #response code
# render json: movie.as_json(only: [:title, :overview, :release_date, :inventory, :available_inventory]), status: :ok
else
# options
# head :not_found
# render json: {}, status: :not_found
render_error(:not_found, { movie_id: ["No such movie"] } )
end
end

def create
# binding.pry
movie = Movie.new(movie_params)
movie.available_inventory = movie.inventory
# binding.pry
if movie.save
render json: { id: movie.id }, status: :ok
# render json: movie.as_json(only: [:title, :overview, :release_date, :inventory, :available_inventory]), status: :ok
else
render_error(:bad_request, movie.errors.messages)
end
end

private

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

def jsonify(movie_data)
return movie_data.as_json(only: [:title, :overview, :release_date, :inventory, :available_inventory])
end
end
Loading