Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
7ffa78d
model generated
sarashahbaig Nov 5, 2019
46c3ec1
controller generated
sarashahbaig Nov 6, 2019
812b471
Added routes and index action for Movie. /movies works on localhost b…
Nov 6, 2019
de2fe40
edited
sarashahbaig Nov 6, 2019
0598a55
Merge branch 'master' of https://github.com/Kalakalot/video-store-api
sarashahbaig Nov 6, 2019
c89a5aa
code refactored for customer and movies
sarashahbaig Nov 6, 2019
ea7d31b
customer model edited
sarashahbaig Nov 6, 2019
c803eea
route added for customer
sarashahbaig Nov 6, 2019
9b821eb
Created test fixtures for customers.
Nov 6, 2019
7665f98
Corrected typo in customers controller keys, index action now working.
Nov 6, 2019
6b8c729
code added
sarashahbaig Nov 6, 2019
d47fe48
code added
sarashahbaig Nov 6, 2019
17da81a
Saving changes so I can pull in Sara's changes from master.
Nov 6, 2019
ea366a9
Updated Gemfile to accept Ruby 2.5.5 and higher.
Nov 6, 2019
d43da24
Pulled in Sara's most recent changes and fixed merge conflicts.
Nov 6, 2019
534fd60
Merge pull request #2 from Kalakalot/customers
Kalakalot Nov 6, 2019
d92aa6f
Added movies_checked_out_count with a default value of 0 to customers…
Nov 6, 2019
54edeef
Merge pull request #3 from Kalakalot/customers
Kalakalot Nov 6, 2019
9f0b713
Fixed merge conflicts.
Nov 6, 2019
838553a
Updated customers controller to add new movies_checkout_out_count col…
Nov 6, 2019
f578e8d
test edited
sarashahbaig Nov 6, 2019
27dcc07
Merge branch 'customers'
Nov 6, 2019
bec3945
edited
sarashahbaig Nov 6, 2019
d31b4e2
Added available_inventory column to movies table and updated seed fil…
Nov 6, 2019
4ac5458
Merge branch 'master' of https://github.com/Kalakalot/video-store-api
Nov 6, 2019
3fa7d2f
controller and model generated for rental
sarashahbaig Nov 6, 2019
b4dd18e
Added available_inventory key to movies_controllers and updated custo…
Nov 6, 2019
9f9a910
Merge branch 'master' of https://github.com/Kalakalot/video-store-api
Nov 6, 2019
3475d40
Fixed error in movies.json
Nov 6, 2019
cc6fe08
Updated movies_controller create action to respond with success inste…
Nov 6, 2019
aa895ea
refactored code
sarashahbaig Nov 6, 2019
d78a840
Merge branch 'master' of https://github.com/Kalakalot/video-store-api
Nov 6, 2019
9e7b16b
Added available movies inventory to movie controller strong params.
Nov 7, 2019
53ef0fc
Updated movies_controller_test to include available_inventory key. Al…
Nov 7, 2019
9fa9030
Added note about required param to movies controller and started sett…
Nov 7, 2019
7a941bc
schema edited
sarashahbaig Nov 7, 2019
7aa7f50
code refactored
sarashahbaig Nov 7, 2019
ea4e4e7
checkin, checkout
sarashahbaig Nov 7, 2019
6287b1e
schema changed
sarashahbaig Nov 7, 2019
58305d5
route added
sarashahbaig Nov 7, 2019
413d1d8
Merge branch 'master' of https://github.com/Kalakalot/video-store-api
sarashahbaig Nov 7, 2019
20a35ae
code refactored
sarashahbaig Nov 7, 2019
968a652
Merge branch 'master' of https://github.com/Kalakalot/video-store-api
Nov 7, 2019
40158ef
Added fixture for rentals and relationship test for customer model.
Nov 7, 2019
d9f8085
Followed TDD for customer model testing. Tests for relationships and …
Nov 7, 2019
ef0af0f
Small tweaks to customer model tests.
Nov 7, 2019
296f83a
Fixed spacing in customer model and added assertions to rentals contr…
Nov 7, 2019
93e43d4
Added route nicknames for checkout and checkin for ease of testing, t…
Nov 8, 2019
8b33ffe
Commented out the line in rentals controller that was causing wave 3 …
Nov 8, 2019
18d6f48
Removed require movie param from movies controller per Slack homework…
Nov 8, 2019
f5e13e3
Finally figured out test problem -- syntax for getting path was incor…
Nov 8, 2019
7aa2e09
code edited to pass the test
sarashahbaig Nov 8, 2019
d9870d3
edited
sarashahbaig Nov 8, 2019
e385f81
test added
sarashahbaig Nov 8, 2019
849c0ee
fixed conflict
sarashahbaig Nov 8, 2019
1af7cb0
rentals controller test that checks movies with no available inventor…
Nov 8, 2019
2d0a715
nominal positive test for checkin method now passing.:
Nov 8, 2019
d92d0cb
Added negative tests for customer model.
Nov 9, 2019
6969edb
model test added
sarashahbaig Nov 9, 2019
ede0af8
Fixed rentals controller test merge conflicts.
Nov 10, 2019
4365c22
Added another rentals controller test. Noticed we have a due_date val…
Nov 10, 2019
647c8e5
Added postive and negative tests for rentals controller. All are pass…
Nov 10, 2019
c3ef1d3
Realized the wave 3 specs require a due date for rentals. Generated m…
Nov 10, 2019
1dcfcdb
Added logic for setting due date to rentals controller and confirmed …
Nov 10, 2019
db5623e
Moved minitest formatting to test_helper, fiddled with the way due_da…
Nov 10, 2019
8dafb9a
Added positive test for rental validations. Passing.
Nov 10, 2019
a7c83f7
Small change to customer model test for consistency, add negative ren…
Nov 10, 2019
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.5
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.5'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.3'
# 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 :development do
gem 'debase', '>= 0.2.4.1'
gem 'ruby-debug-ide', '>= 0.7.0'
end

group :test do
gem 'minitest-rails'
gem 'minitest-reporters'
end
175 changes: 175 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (5.2.3)
actionpack (= 5.2.3)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailer (5.2.3)
actionpack (= 5.2.3)
actionview (= 5.2.3)
activejob (= 5.2.3)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.2.3)
actionview (= 5.2.3)
activesupport (= 5.2.3)
rack (~> 2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.2.3)
activesupport (= 5.2.3)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
activejob (5.2.3)
activesupport (= 5.2.3)
globalid (>= 0.3.6)
activemodel (5.2.3)
activesupport (= 5.2.3)
activerecord (5.2.3)
activemodel (= 5.2.3)
activesupport (= 5.2.3)
arel (>= 9.0)
activestorage (5.2.3)
actionpack (= 5.2.3)
activerecord (= 5.2.3)
marcel (~> 0.3.1)
activesupport (5.2.3)
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.4.5)
msgpack (~> 1.0)
builder (3.2.3)
byebug (11.0.1)
coderay (1.1.2)
concurrent-ruby (1.1.5)
crass (1.0.5)
debase (0.2.4.1)
debase-ruby_core_source (>= 0.10.2)
debase-ruby_core_source (0.10.6)
erubi (1.9.0)
ffi (1.11.1)
globalid (0.4.2)
activesupport (>= 4.2.0)
i18n (1.7.0)
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.3.1)
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.2)
mimemagic (0.3.3)
mini_mime (1.0.2)
mini_portile2 (2.4.0)
minitest (5.13.0)
minitest-rails (5.2.0)
minitest (~> 5.10)
railties (~> 5.2.0)
minitest-reporters (1.4.2)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
msgpack (1.3.1)
nio4r (2.5.2)
nokogiri (1.10.5)
mini_portile2 (~> 2.4.0)
pg (1.1.4)
pry (0.12.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
pry-rails (0.3.9)
pry (>= 0.10.4)
puma (3.12.1)
rack (2.0.7)
rack-test (1.1.0)
rack (>= 1.0, < 3)
rails (5.2.3)
actioncable (= 5.2.3)
actionmailer (= 5.2.3)
actionpack (= 5.2.3)
actionview (= 5.2.3)
activejob (= 5.2.3)
activemodel (= 5.2.3)
activerecord (= 5.2.3)
activestorage (= 5.2.3)
activesupport (= 5.2.3)
bundler (>= 1.3.0)
railties (= 5.2.3)
sprockets-rails (>= 2.0.0)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.3.0)
loofah (~> 2.3)
railties (5.2.3)
actionpack (= 5.2.3)
activesupport (= 5.2.3)
method_source
rake (>= 0.8.7)
thor (>= 0.19.0, < 2.0)
rake (13.0.0)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
ffi (~> 1.0)
ruby-debug-ide (0.7.0)
rake (>= 0.8.1)
ruby-progressbar (1.10.1)
ruby_dep (1.5.0)
spring (2.1.0)
spring-watcher-listen (2.0.1)
listen (>= 2.7, < 4.0)
spring (>= 1.2, < 3.0)
sprockets (4.0.0)
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.3)
thread_safe (0.3.6)
tzinfo (1.2.5)
thread_safe (~> 0.1)
websocket-driver (0.7.1)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.4)

PLATFORMS
ruby

DEPENDENCIES
bootsnap (>= 1.1.0)
byebug
debase (>= 0.2.4.1)
listen (>= 3.0.5, < 3.2)
minitest-rails
minitest-reporters
pg (>= 0.18, < 2.0)
pry-rails
puma (~> 3.11)
rails (~> 5.2.3)
ruby-debug-ide (>= 0.7.0)
spring
spring-watcher-listen (~> 2.0.0)
tzinfo-data

RUBY VERSION
ruby 2.6.3p62

BUNDLED WITH
1.17.3
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
3 changes: 3 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class ApplicationController < ActionController::API

end
Empty file added app/controllers/concerns/.keep
Empty file.
15 changes: 15 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class CustomersController < ApplicationController
KEYS = [:id, :name, :registered_at, :address, :city, :movies_checked_out_count, :state, :postal_code, :phone]
def index
customers = Customer.all.as_json(only: KEYS)
render json: customers, status: :ok
end


private

def customer_params
params.permit(:id, :name, :registered_at, :address, :city, :state, :movies_checked_out_count, :postal_code, :phone)
end

end
42 changes: 42 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
class MoviesController < ApplicationController
KEYS = [:id, :title, :overview, :release_date, :inventory, :available_inventory]

def index
movies = Movie.all.as_json(only: KEYS)
render json: movies, status: :ok
end

def show
movie = Movie.find_by(id: params[:id])
if movie
render json: movie.as_json(only: KEYS), status: :ok
return
else
render json: {
errors: {
id: ["No movie with the id of '#{params[:id]}' found"]}
}, status: :not_found
return
end
end

def create
movie = Movie.new(movie_params)
if movie.save
render json: movie.as_json(only: KEYS), status: :created
return
else
render json: {
ok: false,
errors: movie.errors.messages
}, status: :bad_request

return
end
end

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