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
b1625f4
Did rails new . --api
Naltrexone Nov 5, 2018
62701a7
Added routes for movies and customers
Naltrexone Nov 5, 2018
792982e
create Movie model and Movies controller
tfrego Nov 5, 2018
1bafbf4
Created Customer model & controller
Naltrexone Nov 5, 2018
ce157fc
Merge branch 'master' of https://github.com/Naltrexone/VideoStoreAPI
Naltrexone Nov 5, 2018
3c388a4
Added validations for Customer model, presence:true
Naltrexone Nov 5, 2018
966f788
add Movie validations
tfrego Nov 5, 2018
3f98d39
Added Re3ntal model and added relationships
Naltrexone Nov 5, 2018
c7949a5
correct rental movie relationship add columns to rentals table
tfrego Nov 5, 2018
e6ea62e
Syntax error with "validates" fixed
Naltrexone Nov 5, 2018
3b0ebdd
create tests for Movie model testing, create fixtures
tfrego Nov 5, 2018
da1f349
merge conflicts
tfrego Nov 5, 2018
c58d7f8
A few tests for Customer model
Naltrexone Nov 5, 2018
2d6fff7
Added contoller index method for Customer
Naltrexone Nov 5, 2018
6766b27
Made model tests dry
Naltrexone Nov 5, 2018
e170cf4
create Movie index and show actions
tfrego Nov 5, 2018
dcf661c
merge conflicts
tfrego Nov 5, 2018
722962d
Updated parameters to be returned
Naltrexone Nov 5, 2018
c2a1e86
Refactor
Naltrexone Nov 5, 2018
c7bd324
complete Movie create action
tfrego Nov 5, 2018
41b9707
merge conflicts
tfrego Nov 5, 2018
ce0b78b
complete Movie controller test for index and show
tfrego Nov 6, 2018
f46cd6b
Tests for customer controller and create method in movies controller
Naltrexone Nov 6, 2018
9d81a84
Merge branch 'master' of https://github.com/Naltrexone/VideoStoreAPI
Naltrexone Nov 6, 2018
cf754e5
Made changes to make smoke tests pass, then to make our tests pass
Naltrexone Nov 6, 2018
d1827c1
pass smoke tests
tfrego Nov 6, 2018
04f6a05
merge conflicts
tfrego Nov 6, 2018
52b022e
create rental checkout action
tfrego Nov 7, 2018
7e7ed5c
begin checkin action
tfrego Nov 7, 2018
90ddd41
Tests for Edamam wrapper method
Naltrexone Nov 7, 2018
d601e80
add available_inventory to json
tfrego Nov 7, 2018
ec43f18
merge conflict
tfrego Nov 7, 2018
d7514cf
create movie_avail method
tfrego Nov 7, 2018
48c436b
Changed checkin to 'Patch' instead of post... Smoke tests passing
Naltrexone Nov 7, 2018
e4d08be
update available_inventory method and create custom method tests
tfrego Nov 7, 2018
3c7ca0d
updated routes check-out and check-in and complete movies model and c…
tfrego Nov 7, 2018
49df37d
Customer model and controller tests passing
Naltrexone Nov 7, 2018
787a653
Merge branch 'master' of https://github.com/Naltrexone/VideoStoreAPI
Naltrexone Nov 7, 2018
5c0265e
create Rentals tests on validations and relationships
tfrego Nov 7, 2018
06151f9
merge conflicts
tfrego Nov 7, 2018
a9a8f7a
Tests for rentals model.. custom methods
Naltrexone Nov 7, 2018
a966188
Merge branch 'master' of https://github.com/Naltrexone/VideoStoreAPI
Naltrexone Nov 7, 2018
2228b59
Small changes to nomenclature in model test
Naltrexone Nov 7, 2018
50c6d47
add sorting parameter to movies index and pass tests
tfrego Nov 9, 2018
60c653b
Changes to checkin method to accomodate for invalid data
Naltrexone Nov 9, 2018
bfdd37a
Tests for checkin method
Naltrexone Nov 9, 2018
9d08cc0
Refactor and all tests passing, smoke tests passing
Naltrexone Nov 9, 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
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.
19 changes: 19 additions & 0 deletions app/controllers/customers_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
class CustomersController < ApplicationController
def index
customers = Customer.all
array = []
customers.each do |customer|
hash = {}
hash = {id: customer.id,
name: customer.name,
registered_at: customer.registered_at,
postal_code: customer.postal_code,
phone: customer.phone,
movies_checked_out_count: customer.movies_checked_out_count
}
array << hash
#render json: customers.as_json(only: [:id, :name, :registered_at, :postal_code, :phone])
end
render json: array.as_json
end
end
49 changes: 49 additions & 0 deletions app/controllers/movies_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
class MoviesController < ApplicationController
def index
movies = Movie.all

if params[:sort]
movies = Movie.order(params[:sort])
end

render json: movies.as_json(only: [:id, :title, :release_date]), status: :ok
end

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

if movie.nil?
render json: {
errors: "not found"
}, status: :not_found
else
render json: {
title: movie.title,
overview: movie.overview,
release_date: movie.release_date,
inventory: movie.inventory,
available_inventory: movie.available_inventory
}, status: :ok
# render json: movie.as_json(only: [:title, :overview, :release_date, :inventory], method: :available_inventory), status: :ok
end

end

def create
movie = Movie.new(movie_params)

if movie.save
render json: movie.as_json(only: [:id]), status: :ok
else
render json: {
errors: movie.errors.messages
}, status: :bad_request
end
end

private

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