Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
02f75c0
API setup
BarbaraWidjono Nov 5, 2018
c85a64a
added customer model and movies model
pushpaagr Nov 5, 2018
1573602
Validations for customer and movie
BarbaraWidjono Nov 5, 2018
f7721d5
added controllers
pushpaagr Nov 5, 2018
648263c
Added Movie#index, Movie#show
BarbaraWidjono Nov 5, 2018
5c627d1
Changed show page
BarbaraWidjono Nov 5, 2018
b16d719
added customer#show method
pushpaagr Nov 5, 2018
39838a2
zomg method
BarbaraWidjono Nov 5, 2018
334314c
added model realtions and added rentals table with foreign keys
pushpaagr Nov 5, 2018
9f4377f
added create method to movies
pushpaagr Nov 5, 2018
ca18327
created add method for movies controller
pushpaagr Nov 5, 2018
c72c742
Changed movie model validations
BarbaraWidjono Nov 5, 2018
36a5821
Merge branch 'master' of https://github.com/pushpaagr/VideoStoreAPI
BarbaraWidjono Nov 5, 2018
0fc3cb5
Customer model tests: validations, relations
BarbaraWidjono Nov 6, 2018
b3d6794
Customer controller tests
BarbaraWidjono Nov 6, 2018
14e30de
added model testing for movies
pushpaagr Nov 6, 2018
5d43122
Merge branch 'master' of https://github.com/pushpaagr/VideoStoreAPI
BarbaraWidjono Nov 6, 2018
fc063b6
added movies avail inventory column, and customer checkout count
pushpaagr Nov 6, 2018
8f5d149
Changed json output
BarbaraWidjono Nov 6, 2018
54a9c06
added rental controller
pushpaagr Nov 6, 2018
2947869
added code for rental_create, not quite finished
pushpaagr Nov 6, 2018
86ddbb4
minor space changes
pushpaagr Nov 6, 2018
c5b04c9
Setting available inventory
BarbaraWidjono Nov 6, 2018
341ffae
Merge branch 'master' of https://github.com/pushpaagr/VideoStoreAPI
BarbaraWidjono Nov 6, 2018
96edf47
Change add inventory to Movie#create
BarbaraWidjono Nov 6, 2018
424aaba
put method in movie model
pushpaagr Nov 6, 2018
d755922
Merge branch 'master' of https://github.com/pushpaagr/VideoStoreAPI
BarbaraWidjono Nov 6, 2018
9acf14a
moved method from movie model back to rental controller
pushpaagr Nov 6, 2018
82d7e09
added duedate and checkout date to rentals table
pushpaagr Nov 6, 2018
0dacb79
Moved change available method
BarbaraWidjono Nov 6, 2018
923e5a6
Merge
BarbaraWidjono Nov 6, 2018
5cef38b
added date requirement for rental due date and checkout date
pushpaagr Nov 6, 2018
97af0b3
Merge branch 'master' of https://github.com/pushpaagr/VideoStoreAPI
BarbaraWidjono Nov 6, 2018
a0ab03e
zomg method
BarbaraWidjono Nov 6, 2018
365e087
added delete route and destroy method in rental controller
pushpaagr Nov 6, 2018
73233bc
Merge branch 'master' of https://github.com/pushpaagr/VideoStoreAPI
BarbaraWidjono Nov 6, 2018
ebf19b5
Rentals#destroy check_in method added
BarbaraWidjono Nov 6, 2018
b6911cb
Changed search query for Rental#destroy
BarbaraWidjono Nov 7, 2018
43a0ae8
customer fixture
BarbaraWidjono Nov 7, 2018
7d5fcd3
yml for rental
pushpaagr Nov 7, 2018
9ba74b3
Merge branch 'master' of https://github.com/pushpaagr/VideoStoreAPI
BarbaraWidjono Nov 7, 2018
d3d006f
added rental model testing, all tests pass
pushpaagr Nov 7, 2018
3932393
added movies_controller tests
pushpaagr Nov 7, 2018
023c71d
all tests for movie passing
pushpaagr Nov 7, 2018
a01c477
fixture data
BarbaraWidjono Nov 7, 2018
94add5c
merge conflict
BarbaraWidjono Nov 7, 2018
f2a4d2c
added test to pass for postman
pushpaagr Nov 7, 2018
aac2af7
wave 3 for postman passed
pushpaagr Nov 7, 2018
e78f56f
Customer#index tests
BarbaraWidjono Nov 7, 2018
7ad09e6
Customer Controller Tests
BarbaraWidjono Nov 7, 2018
24f7eeb
Rentals#create tests
BarbaraWidjono Nov 7, 2018
c38f952
added test to pass after params was taken out based on the seed data
pushpaagr Nov 7, 2018
d2a4156
Merge branch 'master' of https://github.com/pushpaagr/VideoStoreAPI
BarbaraWidjono Nov 7, 2018
994fbff
Rentals#create tests
BarbaraWidjono Nov 7, 2018
97757d1
Rentals#create invalid tests
BarbaraWidjono Nov 7, 2018
829bb77
Rentals#create checkout_date and due_date tests
BarbaraWidjono Nov 7, 2018
8d5f45d
Preparing for merge
BarbaraWidjono Nov 7, 2018
cb12abc
added more rental tests for destroy controller
pushpaagr Nov 7, 2018
352ba23
added merge
pushpaagr Nov 7, 2018
5633f60
Merge Rental tests
BarbaraWidjono Nov 7, 2018
fa90026
prep for merge
BarbaraWidjono Nov 7, 2018
4fe8ec0
empty rental controller, fixed movie yml
pushpaagr Nov 7, 2018
ea32176
minor spacing changes
pushpaagr Nov 7, 2018
0512194
Merge branch 'master' of https://github.com/pushpaagr/VideoStoreAPI
BarbaraWidjono Nov 7, 2018
9dad991
Restore rental controller tests
pushpaagr 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
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) { |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'
# 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
169 changes: 169 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
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)
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)

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)
rails (~> 5.2.1)
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data

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
5 changes: 5 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
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.
33 changes: 33 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
class CustomersController < ApplicationController
def index
customers = Customer.all
render json: customerify(customers), status: :ok
end



def show
customer_id = params[:id]
customer = Customer.find_by(id: customer_id)
if customer
render json: customerify(customer), status: :ok
else
render_error(:not_found, {customer_id: ["No such Customer"]})
end
end

def zomg
render json: { message: "it works!" }
end
private

def customerify(customer_data)
return customer_data.as_json(only: [:id, :name, :registered_at, :postal_code, :phone, :movies_checked_out_count])
end


# def customerify_show(customer_data)
# return customer_data.as_json(only: [:title, :overview, :release_date, :inventory])
# end

end
50 changes: 50 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
require 'date'
class MoviesController < ApplicationController
def index
movies = Movie.all
render json: movify_index(movies), status: :ok
end

def show
movie_id = params[:id]
movie = Movie.find_by(id: movie_id)
if movie
render json: movify_show(movie), status: :ok
else
render_error(:not_found, {movie_id: ["No such movie"]})
end
end

def create
movie = Movie.new(movie_params)
movie.available_inventory = movie.inventory

if movie.save
render json: { id: movie.id }
else
render_error(:bad_request, movie.errors.messages)
end
end

private

def movie_params
# This version will allow form data to be received (no hashes, just keys and values)
params.permit(:title, :overview, :release_date, :inventory)

# This version expects incoming data to be in the form of a hash within a hash (exterior hash who has a key of 'rental' => {title: x, overview: x, release: x, inventory: x})
# params.require(:rental).permit(:title, :overview, :release_date, :inventory)
end

def movify_index(movie_data)
return movie_data.as_json(only: [:id, :title, :release_date])
end

def movify_show(movie_data)
return movie_data.as_json(only: [:title, :overview, :release_date, :inventory, :available_inventory])
end




end
Loading