Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
7751b7e
ran rails new api
anibelamerica Nov 5, 2018
98bc1d3
adds movie model
anibelamerica Nov 5, 2018
53d5dd4
add customer model
anibelamerica Nov 5, 2018
580db0c
adds customer and movie model validations
anibelamerica Nov 5, 2018
913bd3e
adds test route for zomg
anibelamerica Nov 5, 2018
1f29efe
adds movie model validation tests
anibelamerica Nov 5, 2018
5ee2c77
adds tests for movie model custom methods
anibelamerica Nov 6, 2018
a063b53
Write validation tests for Customer and fix test_helper line
madaleines Nov 6, 2018
02a530f
Merge branch 'movie-model' with master containing movie and customer …
anibelamerica Nov 6, 2018
3c2369d
creates movies controller and routes
anibelamerica Nov 6, 2018
0f318ef
creates customers controller and routes
anibelamerica Nov 6, 2018
1359e8e
adds customers index controller tests and methods
anibelamerica Nov 6, 2018
3957caa
adds render error method
anibelamerica Nov 6, 2018
284c9c2
adds movies controller show action tests and methods
anibelamerica Nov 6, 2018
a3f5635
refactors movie and customer controllers to use rabl gem
anibelamerica Nov 6, 2018
6db5d63
fixes controller tests to use rabl
anibelamerica Nov 6, 2018
0a1057b
Write tests for index
madaleines Nov 6, 2018
74d3a1e
Remove commented code
madaleines Nov 6, 2018
2bb4481
Set up index view with rabl
madaleines Nov 6, 2018
8eff1ad
Add controller tests and methods passing smoke tests
madaleines Nov 7, 2018
fdc6ccd
adds rentals model
anibelamerica Nov 7, 2018
86820f1
Generate rentals controller
madaleines Nov 7, 2018
5513f44
includes tests for overdue rentals endpoint
anibelamerica Nov 7, 2018
6899878
Add due date column to rentals
madaleines Nov 7, 2018
4d4dc80
Merge branch 'master' into endpoints-AA
anibelamerica Nov 7, 2018
3e5a9e1
adds preliminary customer parameters
anibelamerica Nov 7, 2018
a507f27
renames rental columns
anibelamerica Nov 7, 2018
377b503
Add helper methods to models and def create/update in controller for …
madaleines Nov 7, 2018
3b65f33
Add relationships to rentals
madaleines Nov 7, 2018
6f20779
preliminary customers controller code for sort parameters
anibelamerica Nov 7, 2018
8fa866b
Add routes for rentals
madaleines Nov 7, 2018
c968d9e
adds Rental controller check-out and check-in methods
anibelamerica Nov 7, 2018
8c19767
Merge branch 'master' into endpoints-AA
anibelamerica Nov 7, 2018
33b5732
fixes due date on Rental check-out method
anibelamerica Nov 7, 2018
797f61d
Get rental controller tests passing
madaleines Nov 7, 2018
2a98cf6
removes json from rabl view names
anibelamerica Nov 7, 2018
f3b178e
adds movies_checked_out_count to customers json
anibelamerica Nov 7, 2018
1948c1e
adds tests for custom methods of customer class
anibelamerica Nov 7, 2018
7f11b0d
Add pagination with params for customers index
madaleines Nov 7, 2018
e63300e
fixes some tests to account for changes in yml files, updates custome…
anibelamerica Nov 7, 2018
dcda362
Merge branch 'master' of https://github.com/anibelamerica/VideoStoreAPI
anibelamerica Nov 7, 2018
c02283a
adds available inventory to show movie rabl
anibelamerica Nov 7, 2018
83af0ff
Add check if inventory is available to create rental
madaleines Nov 7, 2018
84f0f38
Add tests to take into account if there is available inventory
madaleines Nov 8, 2018
b9fc476
Add id attribute to pass smoke tests
madaleines Nov 9, 2018
cd25fe6
Edit tests
madaleines Nov 9, 2018
203fc41
Edit tests
madaleines Nov 9, 2018
2478b87
Add validations, relations, and custom method tests for rental model
madaleines Nov 9, 2018
43a4c9f
adds rental overdue action and tests
anibelamerica Nov 9, 2018
a0bd389
adjusts yml files and fixes tests
anibelamerica 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
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.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'

gem 'will_paginate', '~> 3.1.0'

# 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

gem 'rabl', '~> 0.14.0'
174 changes: 174 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
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)
rabl (0.14.0)
activesupport (>= 2.3.14)
rack (2.0.6)
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
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 (~> 3.1.0)

RUBY VERSION
ruby 2.5.1p57

BUNDLED WITH
1.16.4
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
7 changes: 7 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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.
20 changes: 20 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
require 'will_paginate/array'

class CustomersController < ApplicationController

def index
valid_params = %w(name registered_at postal_code)

if valid_params.include?(params[:sort])
sort = params[:sort]
end

@customers = Customer.order(sort).paginate(page: params[:p], per_page: params[:n])
end

def show
end

private

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

before_action :find_movie, only: [:show]

def index
@movies = Movie.all
end

def show
unless @movie
render_error(:not_found, { movie_id: ["Movie does not exist"] })
end
end

def create
movie = Movie.new(movie_params)
if movie.save
render json: { id: movie.id }
else
render_error(:bad_request, movie.errors.messages)
end
end

private

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

def find_movie
@movie = Movie.find_by(id: params[:id])
end
end
Loading