Skip to content
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
162c58d
Add customer and movie model and seed db
idevera Nov 6, 2017
6e907c7
Add relationships to models
idevera Nov 6, 2017
44f395b
Add yml data
idevera Nov 6, 2017
a9de2e7
Add models and add controller methods
idevera Nov 6, 2017
5510333
Add controller testing
idevera Nov 6, 2017
a83fcf8
Add tests for index
julalam Nov 6, 2017
984f0ae
Add show method
julalam Nov 6, 2017
0563151
Add tests for show
julalam Nov 6, 2017
0bcaaa9
Add create method
julalam Nov 6, 2017
011eee9
Add testing to the movie controller index, show, create
idevera Nov 6, 2017
f38c9c4
Fix controller movie test
idevera Nov 7, 2017
6538c8c
Add tests for create
julalam Nov 7, 2017
7df0e97
Add update method
julalam Nov 7, 2017
b116d51
Remove customer from params and fix the tests
julalam Nov 7, 2017
8d92e23
Add tests for update, one is failing
julalam Nov 7, 2017
6225aa1
Add tests for model but one is failing
julalam Nov 7, 2017
f97f5ad
Merge pull request #1 from idevera/customer-controller-testing
julalam Nov 7, 2017
694b510
Fix movie tests params
idevera Nov 7, 2017
ec3c0b6
Merge branch with master
idevera Nov 7, 2017
6185e33
Add available inventory column to the movies table
idevera Nov 7, 2017
5c95ff8
Remove comments
julalam Nov 7, 2017
df80e8b
Fix merge conflict
julalam Nov 7, 2017
18c3df1
Add moveis count to customer
julalam Nov 7, 2017
3f49495
Fix test to match new column
julalam Nov 7, 2017
7796c8b
Merge pull request #2 from idevera/more-customer
julalam Nov 7, 2017
9214ea9
Add tests to the movie controller after adding the available inventor…
idevera Nov 7, 2017
3d9a285
Merge with branch
idevera Nov 7, 2017
9811e30
Add serializer to customer
julalam Nov 7, 2017
381fdac
Merge pull request #3 from idevera/serializer
julalam Nov 7, 2017
85b501e
Comment out the initializer for now
julalam Nov 7, 2017
372239c
Merge branch 'master' of https://github.com/idevera/VideoStoreAPI
idevera Nov 7, 2017
d2ab1bb
Add default value of 0 to movies checked out by customer
julalam Nov 7, 2017
3ec132d
Get initializer to work
julalam Nov 7, 2017
3bea4b2
Add recent changes
idevera Nov 7, 2017
9c79ae6
Merge branch 'master' of https://github.com/idevera/VideoStoreAPI
idevera Nov 7, 2017
f306dc3
Remove serializer from movie controller and add tests to movie model
idevera Nov 7, 2017
7845855
Fix routes and params
idevera Nov 7, 2017
5eb6019
Change routes
idevera Nov 7, 2017
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.
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 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
56 changes: 56 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
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.4'
# Use postgresql as the database for Active Record
gem 'pg', '~> 0.18'
# 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', '~> 3.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 'active_model_serializers'

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]
gem 'pry-rails'
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]

gem 'jquery-turbolinks'
group :development do
gem 'better_errors'
gem 'pry-rails'
gem 'binding_of_caller'
end

group :test do
gem 'minitest-rails'
gem 'minitest-reporters'
end
179 changes: 179 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (5.1.4)
actionpack (= 5.1.4)
nio4r (~> 2.0)
websocket-driver (~> 0.6.1)
actionmailer (5.1.4)
actionpack (= 5.1.4)
actionview (= 5.1.4)
activejob (= 5.1.4)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.1.4)
actionview (= 5.1.4)
activesupport (= 5.1.4)
rack (~> 2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.1.4)
activesupport (= 5.1.4)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_model_serializers (0.10.6)
actionpack (>= 4.1, < 6)
activemodel (>= 4.1, < 6)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.2)
activejob (5.1.4)
activesupport (= 5.1.4)
globalid (>= 0.3.6)
activemodel (5.1.4)
activesupport (= 5.1.4)
activerecord (5.1.4)
activemodel (= 5.1.4)
activesupport (= 5.1.4)
arel (~> 8.0)
activesupport (5.1.4)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7)
minitest (~> 5.1)
tzinfo (~> 1.1)
ansi (1.5.0)
arel (8.0.0)
better_errors (2.4.0)
coderay (>= 1.0.0)
erubi (>= 1.0.0)
rack (>= 0.9.0)
binding_of_caller (0.7.3)
debug_inspector (>= 0.0.1)
builder (3.2.3)
byebug (9.1.0)
case_transform (0.2)
activesupport
coderay (1.1.2)
concurrent-ruby (1.0.5)
crass (1.0.2)
debug_inspector (0.0.3)
erubi (1.7.0)
ffi (1.9.18)
globalid (0.4.1)
activesupport (>= 4.2.0)
i18n (0.9.1)
concurrent-ruby (~> 1.0)
jquery-turbolinks (2.1.0)
railties (>= 3.1.0)
turbolinks
jsonapi-renderer (0.1.3)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
loofah (2.1.1)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.0)
mini_mime (>= 0.1.1)
method_source (0.9.0)
mini_mime (0.1.4)
mini_portile2 (2.3.0)
minitest (5.10.3)
minitest-rails (3.0.0)
minitest (~> 5.8)
railties (~> 5.0)
minitest-reporters (1.1.18)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
nio4r (2.1.0)
nokogiri (1.8.1)
mini_portile2 (~> 2.3.0)
pg (0.21.0)
pry (0.11.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
pry-rails (0.3.6)
pry (>= 0.10.4)
puma (3.10.0)
rack (2.0.3)
rack-test (0.7.0)
rack (>= 1.0, < 3)
rails (5.1.4)
actioncable (= 5.1.4)
actionmailer (= 5.1.4)
actionpack (= 5.1.4)
actionview (= 5.1.4)
activejob (= 5.1.4)
activemodel (= 5.1.4)
activerecord (= 5.1.4)
activesupport (= 5.1.4)
bundler (>= 1.3.0)
railties (= 5.1.4)
sprockets-rails (>= 2.0.0)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.0.3)
loofah (~> 2.0)
railties (5.1.4)
actionpack (= 5.1.4)
activesupport (= 5.1.4)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (12.2.1)
rb-fsevent (0.10.2)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
ruby-progressbar (1.9.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.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)
turbolinks (5.0.1)
turbolinks-source (~> 5)
turbolinks-source (5.0.3)
tzinfo (1.2.4)
thread_safe (~> 0.1)
websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2)

PLATFORMS
ruby

DEPENDENCIES
active_model_serializers
better_errors
binding_of_caller
byebug
jquery-turbolinks
listen (>= 3.0.5, < 3.2)
minitest-rails
minitest-reporters
pg (~> 0.18)
pry-rails
puma (~> 3.7)
rails (~> 5.1.4)
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data

BUNDLED WITH
1.15.4
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.
69 changes: 69 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
class CustomersController < ApplicationController
# protect_from_forgery with: :null_session

def index
customers = Customer.all

render(
# json: customers.as_json(except: [:created_at, :updated_at]),
json: customers,
status: :ok
)
end

def show
customer = Customer.find_by(id: params[:id])
if customer
render(
json: customer,
# json: customer.as_json(except: [:created_at, :updated_at]),
status: :ok
)
else
render(
json: {nothing: true}, status: :not_found
)

Choose a reason for hiding this comment

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

This will literally send back { nothing: true } as a JSON response. Not sure that's what you intended.

end
end

def create
customer = Customer.new(customer_params)

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

def update
customer = Customer.find_by(id: params[:id])
if customer
customer.update_attributes(customer_params)
if customer.save
render(
json: customer.as_json(except: [:created_at, :updated_at]),
status: :ok
)
else
render(
json: {errors: customer.errors.messages}, status: :bad_request
)
end
else
render(
json: {nothing: true}, status: :not_found
)
end
end

private

def customer_params
params.permit(:name, :registered_at, :address, :city, :state, :postal_code, :phone, :account_credit, :movies_checked_out_count)
end
end
38 changes: 38 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
class MoviesController < ApplicationController
def index
movies = Movie.all
render(
json: movies.as_json(only: [:id, :title, :release_date]), status: :ok
)
end

def show
movie = Movie.find_by(id: params[:id])
if movie
render(
json: movie.as_json(only: [:title, :overview, :release_date, :inventory, :available_inventory]), status: :ok
)
else
render(
json: { "nothing" => true }, status: :not_found
)
end
end

def create
movie = Movie.new(movies_params)
if movie.save
# This is returning the new movie id as a json back to the user
render json: { id: movie.id }, status: :ok
else
# If there was an error with one of the validations then we are sending back a json hash with the errors as an array?
render json: { errors: movie.errors.messages }, status: :bad_request
end
end

private

def movies_params
params.permit(:title, :overview, :release_date, :inventory)
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
3 changes: 3 additions & 0 deletions app/models/application_record.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
Empty file added app/models/concerns/.keep
Empty file.
Loading