Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
f1a2fe7
rails new
iamsammysam Nov 5, 2019
5e01d0d
created relationship, models and controllers
iamsammysam Nov 5, 2019
a335a49
updated schema and created rentals class
iamsammysam Nov 6, 2019
60cefc9
created fixtures
iamsammysam Nov 6, 2019
95fbf5f
movies model tests for validation and relationship
iamsammysam Nov 6, 2019
c819f91
added controller actions to movies and customers
criacuervos Nov 6, 2019
34f0cda
added movies controller test, fixed some errors in movies YML, and up…
criacuervos Nov 6, 2019
55ed510
updated bug on controllers
criacuervos Nov 6, 2019
ca09f0d
model tests
iamsammysam Nov 6, 2019
54da182
Merge pull request #1 from iamsammysam/controllers
iamsammysam Nov 6, 2019
8079845
Merge pull request #2 from iamsammysam/wave1_movies
criacuervos Nov 6, 2019
540e8fa
customer controller tests
iamsammysam Nov 6, 2019
3cee0b3
added relationships tests to models- movie and customer, and finished…
criacuervos Nov 6, 2019
a00ebe1
finished fixing buggo
criacuervos Nov 6, 2019
c2a431f
added movies_checked_out_count column to customers
iamsammysam Nov 6, 2019
9b809e5
updated
criacuervos Nov 6, 2019
e7b83a8
updated schema and fixtures
iamsammysam Nov 6, 2019
ffa5bb3
Merge pull request #3 from iamsammysam/controllers
iamsammysam Nov 7, 2019
2d10ea7
Merge branch 'master' into wave2_controller
criacuervos Nov 7, 2019
e4e8f04
Merge pull request #4 from iamsammysam/wave2_controller
criacuervos Nov 7, 2019
f44ad41
fixing bus on model and controller test for movies
iamsammysam Nov 7, 2019
8b502d9
updated tests after smoke test fixes
criacuervos Nov 7, 2019
edb6bf0
Merge pull request #5 from iamsammysam/controllers
iamsammysam Nov 7, 2019
5803da4
Merge pull request #6 from iamsammysam/wave2_controller
criacuervos Nov 7, 2019
8bf9966
added checkin and checkout to rentals controller, helper methods in r…
criacuervos Nov 8, 2019
5f54123
Merge pull request #7 from iamsammysam/rentals
criacuervos Nov 8, 2019
d3f1ffc
added tests for checkin rentals controller
criacuervos Nov 8, 2019
1497a2b
updated schema
iamsammysam Nov 8, 2019
7933775
Merge pull request #9 from iamsammysam/wave3_rentals
criacuervos Nov 8, 2019
7499b0f
Merge branch 'master' into rentals
iamsammysam Nov 8, 2019
6f8d8a3
Merge pull request #8 from iamsammysam/rentals
iamsammysam Nov 8, 2019
ec2574a
refactoring
iamsammysam Nov 9, 2019
a4fa816
updated tests and finished wave3
criacuervos Nov 9, 2019
2a9c96c
Merge pull request #10 from iamsammysam/rentals
iamsammysam Nov 9, 2019
1d30b10
Merge pull request #11 from iamsammysam/wave3_rentals
iamsammysam Nov 9, 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
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 @@
2.5.5
59 changes: 59 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.5.5'

# 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'
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 'debase', '>= 0.2.4.1'
gem 'ruby-debug-ide', '>= 0.7.0'
end

group :test do
gem 'minitest-rails'
gem 'minitest-reporters'
end
175 changes: 175 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
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.5)
msgpack (~> 1.0)
builder (3.2.3)
byebug (11.0.1)
coderay (1.1.2)
concurrent-ruby (1.1.5)
crass (1.0.5)
debase (0.2.4.1)
debase-ruby_core_source (>= 0.10.2)
debase-ruby_core_source (0.10.6)
erubi (1.9.0)
ffi (1.11.1)
globalid (0.4.2)
activesupport (>= 4.2.0)
i18n (1.7.0)
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.3.1)
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.2)
mini_portile2 (2.4.0)
minitest (5.13.0)
minitest-rails (5.2.0)
minitest (~> 5.10)
railties (~> 5.2.0)
minitest-reporters (1.4.2)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
msgpack (1.3.1)
nio4r (2.5.2)
nokogiri (1.10.5)
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.3.0)
loofah (~> 2.3)
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 (13.0.0)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
ffi (~> 1.0)
ruby-debug-ide (0.7.0)
rake (>= 0.8.1)
ruby-progressbar (1.10.1)
ruby_dep (1.5.0)
spring (2.1.0)
spring-watcher-listen (2.0.1)
listen (>= 2.7, < 4.0)
spring (>= 1.2, < 3.0)
sprockets (4.0.0)
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.1)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.4)

PLATFORMS
ruby

DEPENDENCIES
bootsnap (>= 1.1.0)
byebug
debase (>= 0.2.4.1)
listen (>= 3.0.5, < 3.2)
minitest-rails
minitest-reporters
pg (>= 0.18, < 2.0)
pry-rails
puma (~> 3.11)
rails (~> 5.2.3)
ruby-debug-ide (>= 0.7.0)
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data

RUBY VERSION
ruby 2.5.5p157

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

private

def not_found
render json: {
ok: false,
errors: ["Not Found"]
}, status: :not_found
end

def bad_request(model)
render json: {
ok: false,
errors: model.errors.messages
}, status: :bad_request
end

end
Empty file added app/controllers/concerns/.keep
Empty file.
19 changes: 19 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
class CustomersController < ApplicationController

def index
@customers = Customer.all
customers = Customer.all.as_json(only: [:id, :name, :registered_at, :postal_code, :phone, :movies_checked_out_count])
render json: customers, status: :ok
end

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

if customer
render json: customer.as_json(only: [:id, :name, :registered_at, :address, :city, :state, :postal_code, :phone, :movies_checked_out_count])
else
not_found
end
end

end
36 changes: 36 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
class MoviesController < ApplicationController

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

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

if movie
render json: movie.as_json(only: [:id, :title, :overview, :release_date, :inventory, :available_inventory])
return
else
not_found
end
end

def create
movie = Movie.new(movie_params)

if movie.save
render json: movie.as_json(only: [:id]), status: :ok
return
else
bad_request(movie)
end
end

private

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