Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
95fa492
controllers set up, zomg works
janicewhuang Nov 5, 2019
e0c1069
established relationships and validations and created models for cust…
janicewhuang Nov 5, 2019
8b1b9b4
added again rental relationships. Started on customer relationships t…
janicewhuang Nov 5, 2019
60e5173
add relations tests to movie model test file
janicewhuang Nov 6, 2019
106e13d
add validation tests to movie model test
janicewhuang Nov 6, 2019
140230c
fixed syntax of tests
janicewhuang Nov 6, 2019
4bf26c5
rental model relationships tests
dora1405 Nov 6, 2019
1cef1e8
add GET customers controller test
janicewhuang Nov 6, 2019
db1399d
add edge case (no customers) test for customer controller, add index …
janicewhuang Nov 6, 2019
6a24fff
completed movies controller index action and tests
dora1405 Nov 6, 2019
c9df207
add helper method in test helper, DRY up some test code, start show a…
janicewhuang Nov 6, 2019
248da73
correct customer to movie
janicewhuang Nov 6, 2019
ccd8fea
add movie show controller tests and method
janicewhuang Nov 6, 2019
fcd036f
movies controller create action and tests
janicewhuang Nov 6, 2019
7c34e6b
changed keys in customers controller to fix weird bug, changed fixtur…
janicewhuang Nov 6, 2019
db59970
completed customers controller index testing for the weird one
dora1405 Nov 6, 2019
5b9ea29
global constants (keys) fixed--left in controllers, took out of contr…
janicewhuang Nov 6, 2019
8091e01
merge conflicts resolved
janicewhuang Nov 6, 2019
bcf2cf0
error handling test for movies controller show action
dora1405 Nov 6, 2019
584615e
updated strong params for movies controller
dora1405 Nov 7, 2019
2d74101
passing all but one of the smoke tests
dora1405 Nov 7, 2019
fbc7838
Wave 2 smoke tests - all passed. Migration added in previous commit
dora1405 Nov 7, 2019
457f366
minor cleaning up of spaces, zomg
janicewhuang Nov 7, 2019
3d390a1
add column to rental for due date, start writing rentals functionality
janicewhuang Nov 7, 2019
fdfb648
added checkout and checkin routes to routes file, wrote some rentals …
janicewhuang Nov 7, 2019
b4ba1b7
try to get checkout working by changing params
janicewhuang Nov 7, 2019
3b95ecf
set default values for registered_at and available_inventory in migra…
dora1405 Nov 7, 2019
30ef43e
tweaks in rental controller
janicewhuang Nov 7, 2019
c4f3e1a
3 tests passing for rentals controller. Creating a new rental and err…
dora1405 Nov 7, 2019
46d711b
tweak in rental controller
janicewhuang Nov 7, 2019
fb98eba
Merge branch 'master' of github.com:jaitch/video-store-api
janicewhuang Nov 7, 2019
231510d
take out debugging stuff, write more passing tests
janicewhuang Nov 7, 2019
7967a5e
add more passing rental controller tests and two not yet passing
janicewhuang Nov 8, 2019
8a1928e
passing tests for rentals controller checkout action
dora1405 Nov 8, 2019
79e2405
codes for checkin action and tests. 3 tests errors and need to find e…
dora1405 Nov 8, 2019
a8752c4
add before_initialize method set_available_inventory to movies model
janicewhuang Nov 8, 2019
b00b968
Merge branch 'master' of github.com:jaitch/video-store-api
janicewhuang Nov 8, 2019
1044dec
copied let blocks into checkin describe block
janicewhuang Nov 8, 2019
90e5597
fixed movie model method so won't throw error on invalid creations
janicewhuang Nov 8, 2019
e93e072
add model test for available_inventory method in movie model
janicewhuang Nov 8, 2019
0062903
some change I have forgotten...
janicewhuang Nov 8, 2019
5cc06b0
completed checkin action for rentals. Tests are WIP
dora1405 Nov 8, 2019
d7be616
Merge branch 'master' of https://github.com/jaitch/video-store-api
dora1405 Nov 8, 2019
a6797e1
3 tests passing for checkin
dora1405 Nov 8, 2019
2637eee
final draft for rental controller checkin tests
dora1405 Nov 8, 2019
03295e0
clean up files--dele whitespace
janicewhuang Nov 8, 2019
c3476fd
Merge branch 'master' of github.com:jaitch/video-store-api
janicewhuang Nov 8, 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
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 @@
2.5.5
60 changes: 60 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
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

gem 'pry-byebug'
# 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
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.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-byebug (3.7.0)
byebug (~> 11.0)
pry (~> 0.10)
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-byebug
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.5.5p157

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


end
Empty file added app/controllers/concerns/.keep
Empty file.
9 changes: 9 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CUSTOMER_KEYS = ["id", "name", "address", "city", "state", "postal_code", "phone", "movies_checked_out_count", "registered_at"]

class CustomersController < ApplicationController

def index
customers = Customer.all.as_json(only: CUSTOMER_KEYS)
render json: customers, status: :ok
end
end
40 changes: 40 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
MOVIE_KEYS = ["id", "title", "release_date"]
MOVIE_KEYS2 = ["id", "title", "overview", "release_date", "inventory", "available_inventory"]

class MoviesController < ApplicationController

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

def show
movie_id = params[:id]
movie = Movie.find_by(id: movie_id)
if movie
render json: movie.as_json(only: MOVIE_KEYS2)
return
else
render json: {"errors"=>["not found"]}, status: :not_found
return
end
end

def create
new_movie = Movie.new(movie_params)
if new_movie.save
# if new_movie.release_date.class == String
# new_movie.release_date = Date.parse(new_movie.release_date)
# end
render json: new_movie.as_json(only: [:id]), status: :ok
else
render json: { errors: new_movie.errors.messages }, status: :bad_request
end
end

private

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