Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
208bb2a
initial rails setup
jacquelynoelle Nov 5, 2018
30bb2ba
initial models setup
jacquelynoelle Nov 5, 2018
174d0b8
Added tests and relations/vaildations for customer model
jacquelynoelle Nov 5, 2018
926288f
added tests and relatinoships/validations for movie model
jacquelynoelle Nov 5, 2018
df05adf
Added tests and relationships/validations for rental model
jacquelynoelle Nov 5, 2018
037ca09
Draft of routes for wave 2 and 3
jacquelynoelle Nov 5, 2018
9f7bd5c
created customers and movies controllers
jacquelynoelle Nov 5, 2018
cc9c3f5
get requests for /zomg, /customers, and /movies working via postman
jacquelynoelle Nov 5, 2018
c6ccda6
Added routes and controller actions/tests
jacquelynoelle Nov 5, 2018
b5d8fdb
Added draft rentals controller and missing columns from other models …
jacquelynoelle Nov 6, 2018
e9874e9
Passing smoke tests and all model and controller tests for wave 2
jacquelynoelle Nov 6, 2018
12d74c2
rental controller tweaks, switching branches
jacquelynoelle Nov 6, 2018
6d77349
Added custom methods and tests for customer model rental feature
jacquelynoelle Nov 6, 2018
ad7508f
Added custom methods and tests for movie model rental feature
jacquelynoelle Nov 6, 2018
b3e42f4
Added custom methods and tests for rental model and cleaned up custom…
jacquelynoelle Nov 6, 2018
4f4a217
Added available_inventory to seeds for movie
jacquelynoelle Nov 6, 2018
f0fae48
Rental controller checkout tests passing
jacquelynoelle Nov 6, 2018
730f3fe
rentals controller testing - checkin method done
leannerivera Nov 6, 2018
df4b331
customer controller tests all pass -- customer sort and pagination me…
leannerivera Nov 6, 2018
9ea5a2c
added checkout column to rentals
leannerivera Nov 6, 2018
62f328a
can return json of overdue rentals
leannerivera Nov 6, 2018
4bc4257
movies history route added
leannerivera Nov 6, 2018
8045f7e
Wrote customer current and history controller tests
jacquelynoelle Nov 7, 2018
b319b50
Implemented model and controller methods and tests for current custom…
jacquelynoelle Nov 7, 2018
b87411f
Added screener in checkin method to select the oldest rental to be ch…
jacquelynoelle Nov 7, 2018
a6afe1f
displays rental history, tests passed
leannerivera Nov 7, 2018
a0d8141
Merge branch 'master' of https://github.com/jacquelynoelle/VideoStoreAPI
leannerivera Nov 7, 2018
87bb83e
errors in tests and fixtures fixed -- all pass
leannerivera Nov 7, 2018
28ccf60
Added query params to all list controller methods
jacquelynoelle Nov 7, 2018
3e997d6
added and passed all tests for sorting and history/current/overdue ro…
leannerivera Nov 7, 2018
633c4ca
DRYed up sorting and pagination
jacquelynoelle Nov 7, 2018
677d1f4
DRYed up our controllers
jacquelynoelle Nov 7, 2018
b732c99
deleted unnneeded comments and unused methods
leannerivera Nov 7, 2018
15d56b4
Added rabl gem and recongifured customers#index
jacquelynoelle Nov 7, 2018
cf19ac7
rabl for movies done
leannerivera Nov 7, 2018
d479018
Implemented rabl for all controllers
jacquelynoelle Nov 7, 2018
e181ed7
Added handling for bad page input
jacquelynoelle Nov 7, 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
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
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'

gem 'rabl', '~> 0.14.0'
gem 'oj'

# 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'
gem 'will_paginate'
# 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
176 changes: 176 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
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)
oj (3.7.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)
rabl (0.14.0)
activesupport (>= 2.3.14)
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)
will_paginate (3.1.6)

PLATFORMS
ruby

DEPENDENCIES
bootsnap (>= 1.1.0)
byebug
listen (>= 3.0.5, < 3.2)
minitest-rails
minitest-reporters
oj
pg (>= 0.18, < 2.0)
pry-rails
puma (~> 3.11)
rabl (~> 0.14.0)
rails (~> 5.2.1)
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data
will_paginate

RUBY VERSION
ruby 2.5.1p57

BUNDLED WITH
1.16.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
44 changes: 44 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
class ApplicationController < ActionController::API
def current
rentals_list(:current_rentals)
end

def history
rentals_list(:historical_rentals)
end

private
def sort_and_paginate(list, params)
list = sort_list(list, params)
list = paginate_list(list, params)
return list
end

def sort_list(list, params)
if params[:sort]
return list.sort_by{ |item| item[params[:sort]] }
else
return list
end
end

def paginate_list(list, params)
if params[:n] || params[:p]
if params[:n] && !params[:p]
params[:p] = 1
end

if params[:p] && !params[:n]
params[:n] = 10
end

if params[:p].to_i > 0
return list.paginate(page: params[:p].to_i, per_page: params[:n].to_i)
else
return []
end
else
return list
end
end
end
Empty file added app/controllers/concerns/.keep
Empty file.
29 changes: 29 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
class CustomersController < ApplicationController
def zomg
render json: { zomg: "it works!" }
end

def index
customers = Customer.all

@customers = sort_and_paginate(customers, customer_params)

render :index, status: :ok
end

private

def customer_params
params.permit(:sort, :n, :p)
end

def rentals_list(criteria)
customer = Customer.find_by(id: params[:id].to_i)

list = customer.send(criteria)

@list = sort_and_paginate(list, customer_params)

render :rentals, status: :ok
end
end
Loading