Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Karinna & Kat - VideoStoreAPI - Octos #8

Open
wants to merge 38 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
99464ea
initialize new rails app
kseastman May 7, 2018
844cca0
added zomg route and controlllers, verified in postman.
kseastman May 7, 2018
98863ac
Controller tests and initialize methods for Customer class added. Al…
karinnainiguez May 7, 2018
d63dbb8
Add model tests for movie and make them pass with method and validati…
karinnainiguez May 7, 2018
728016a
Ready to seed
karinnainiguez May 7, 2018
508928a
added routes and rentals controller.
kseastman May 7, 2018
b0f200d
created movie fixtures, tests for movies controller and customers con…
kseastman May 7, 2018
d0c595f
Add controller tests for create method in movies and make them pass
karinnainiguez May 7, 2018
b6c357c
begin rentals controller tests
karinnainiguez May 8, 2018
fcc917c
rental model testing, and movie, rental and customer relationships ad…
kseastman May 8, 2018
dd15ea6
rental controller checkout tests and methods.
kseastman May 8, 2018
9805f24
rentals controller tests created. Tests now passing with json render…
karinnainiguez May 8, 2018
59bf868
refactor movies controller and tests to match smoke test
karinnainiguez May 8, 2018
c5145d2
added .DS_Store to gitignore
kseastman May 8, 2018
4fdc15d
Merge branch 'ke/stash'
kseastman May 8, 2018
e0cd8f9
More refactor to pass smoke tests
karinnainiguez May 8, 2018
5488cad
finished refactor to meet smoke test, redid controller_testing.
kseastman May 9, 2018
aa47296
Add logic for rented count for customer and checked out for movie
karinnainiguez May 9, 2018
d421766
added filters to coverage, put zomg path back in so we could test it …
kseastman May 9, 2018
5b0e7ec
added rabl, oj and jbuilder to Gemfile
kseastman May 9, 2018
08a2967
adding rabl file for customer index. Refactor tests. all passing.
karinnainiguez May 9, 2018
c80e70b
Added show and index for movies, refactored tests. All smoke tests an…
kseastman May 9, 2018
d457229
Added rental model tests for not allowing duplicate checkouts or chec…
kseastman May 9, 2018
cdffa75
adding validations to make tests pass for rental model
karinnainiguez May 9, 2018
5216b6d
executive decision to not refactor on our TODO note.
kseastman May 9, 2018
7db4ac3
added customers to yaml and controller tests for optional query param…
kseastman May 9, 2018
dfc3908
temporary unsatisfactory solution in customers_controller for params …
kseastman May 9, 2018
23f706e
optional params accounted for in customers controller. Controller te…
karinnainiguez May 10, 2018
b43346c
Add tests for customer model request query method. Tests not passing…
karinnainiguez May 10, 2018
bbe9f73
Adding request_query method to customer model. All tests passing
karinnainiguez May 10, 2018
f97e3c1
addded fixtures, modified customer model test for movie, all movie_te…
kseastman May 11, 2018
57a6eac
refactoring. all tests passing
karinnainiguez May 11, 2018
ebb5127
moving customer model method to application record to be shared
karinnainiguez May 11, 2018
d742286
movie version deprecated
kseastman May 11, 2018
8e775a3
Merge branch 'master' into ke/optional_params
kseastman May 11, 2018
a673a13
request_query optionals passing tests and implemented for movies.
kseastman May 11, 2018
b0ca22b
Final refactoring of customer
karinnainiguez May 11, 2018
450e87a
Add invalid sort to movie model testing
karinnainiguez May 11, 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
19 changes: 19 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# 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

.byebug_history

coverage
.DS_Store
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) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.6'
# Use postgresql as the database for Active Record
gem 'pg', '>= 0.18', '< 2.0'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# 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 Capistrano for deployment
# gem 'capistrano-rails', group: :development

# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible
# gem 'rack-cors'
gem 'rabl'
gem 'oj'
gem 'jbuilder', '~> 2.5'

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'
gem 'simplecov', require: false
end
172 changes: 172 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (5.1.6)
actionpack (= 5.1.6)
nio4r (~> 2.0)
websocket-driver (~> 0.6.1)
actionmailer (5.1.6)
actionpack (= 5.1.6)
actionview (= 5.1.6)
activejob (= 5.1.6)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.1.6)
actionview (= 5.1.6)
activesupport (= 5.1.6)
rack (~> 2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.1.6)
activesupport (= 5.1.6)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
activejob (5.1.6)
activesupport (= 5.1.6)
globalid (>= 0.3.6)
activemodel (5.1.6)
activesupport (= 5.1.6)
activerecord (5.1.6)
activemodel (= 5.1.6)
activesupport (= 5.1.6)
arel (~> 8.0)
activesupport (5.1.6)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
ansi (1.5.0)
arel (8.0.0)
builder (3.2.3)
byebug (10.0.2)
coderay (1.1.2)
concurrent-ruby (1.0.5)
crass (1.0.4)
docile (1.3.0)
erubi (1.7.1)
ffi (1.9.23)
globalid (0.4.1)
activesupport (>= 4.2.0)
i18n (1.0.1)
concurrent-ruby (~> 1.0)
jbuilder (2.7.0)
activesupport (>= 4.2.0)
multi_json (>= 1.2)
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.2)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.0)
mini_mime (>= 0.1.1)
method_source (0.9.0)
mini_mime (1.0.0)
mini_portile2 (2.3.0)
minitest (5.11.3)
minitest-rails (3.0.0)
minitest (~> 5.8)
railties (~> 5.0)
minitest-reporters (1.2.0)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
multi_json (1.13.1)
nio4r (2.3.1)
nokogiri (1.8.2)
mini_portile2 (~> 2.3.0)
oj (3.6.0)
pg (1.0.0)
pry (0.11.3)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
pry-rails (0.3.6)
pry (>= 0.10.4)
puma (3.11.4)
rabl (0.13.1)
activesupport (>= 2.3.14)
rack (2.0.5)
rack-test (1.0.0)
rack (>= 1.0, < 3)
rails (5.1.6)
actioncable (= 5.1.6)
actionmailer (= 5.1.6)
actionpack (= 5.1.6)
actionview (= 5.1.6)
activejob (= 5.1.6)
activemodel (= 5.1.6)
activerecord (= 5.1.6)
activesupport (= 5.1.6)
bundler (>= 1.3.0)
railties (= 5.1.6)
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.1.6)
actionpack (= 5.1.6)
activesupport (= 5.1.6)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (12.3.1)
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
ruby-progressbar (1.9.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.1)
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.6.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.3)

PLATFORMS
ruby

DEPENDENCIES
byebug
jbuilder (~> 2.5)
listen (>= 3.0.5, < 3.2)
minitest-rails
minitest-reporters
oj
pg (>= 0.18, < 2.0)
pry-rails
puma (~> 3.7)
rabl
rails (~> 5.1.6)
simplecov
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data

BUNDLED WITH
1.16.1
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.
16 changes: 16 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
class CustomersController < ApplicationController
def index
@customers = Customer.request_query(params, Customer)

if @customers.empty?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally an empty set of data isn't an error, but rather it would just return an empty array indicating that there was no data available

render json: {errors: {
customer: ["No customers were found"]
}
}, status: :not_found

else
render 'index.json'
end
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 zomg
render json: {message: "it works!"}, status: :ok
end

def index
@movies = Movie.request_query(params, Movie)

if @movies.empty?
render json: {
errors: { movie: ["No Movies were found"]}
}, status: :not_found

else
render 'index.json'
end
end


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

if @movie
render 'show.json'
else
render json: {errors: {movie: ["Cound not find movie with ID: #{params[:id]}"]}}, status: :not_found
end
end

def create
movie = Movie.new(movie_params)

if movie.save
render json: { id: movie.id }, status: :ok
else
render json: {
errors: movie.errors.messages
}, status: :bad_request
end

end

private
def movie_params
return params.permit(:title, :overview, :release_date, :inventory)
end
end
41 changes: 41 additions & 0 deletions app/controllers/rentals_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
class RentalsController < ApplicationController
# protect_from_forgery with: :null_session

def checkout
rental = Rental.create_from_request(rental_params)
if rental.save
render json: { id: rental.id }, status: :ok
else
render json: {
errors: rental.errors.messages
}, status: :bad_request
end
end

def checkin
rental = Rental.where(rental_params).last

if rental
rental.checkin_date = DateTime.now
if rental.save
render json: rental.as_json, status: :ok
else
render json: {
errors: rental.errors.messages
}, status: :bad_request
end
else
render json: {
errors: {
rental: ["Rental not found"]
}
}, status: :not_found
end

end

private
def rental_params
return params.permit(:customer_id, :movie_id)
end
end
2 changes: 2 additions & 0 deletions app/jobs/application_job.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ApplicationJob < ActiveJob::Base
end
4 changes: 4 additions & 0 deletions app/mailers/application_mailer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class ApplicationMailer < ActionMailer::Base
default from: '[email protected]'
layout 'mailer'
end
Loading