mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-01-17 06:52:27 +01:00
update rails to 5.1.7
This commit is contained in:
parent
9ca9425ef4
commit
b3313d3e75
4
Gemfile
4
Gemfile
@ -4,7 +4,7 @@ source 'https://rubygems.org'
|
||||
|
||||
gem 'compass-rails', '3.0.2'
|
||||
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
||||
gem 'rails', '~> 5.0.7.2'
|
||||
gem 'rails', '~> 5.1.7'
|
||||
# Use Puma as web server
|
||||
gem 'puma', '3.12.4'
|
||||
# Use SCSS for stylesheets
|
||||
@ -30,6 +30,7 @@ group :development, :test do
|
||||
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
||||
# comment over to use visual debugger (eg. RubyMine), uncomment to use manual debugging
|
||||
# gem 'byebug'
|
||||
gem 'dotenv-rails'
|
||||
end
|
||||
|
||||
group :development do
|
||||
@ -54,7 +55,6 @@ end
|
||||
|
||||
group :test do
|
||||
gem 'database_cleaner'
|
||||
gem 'dotenv-rails'
|
||||
gem 'faker'
|
||||
gem 'minitest-reporters'
|
||||
gem 'pdf-reader'
|
||||
|
82
Gemfile.lock
82
Gemfile.lock
@ -4,42 +4,42 @@ GEM
|
||||
Ascii85 (1.0.3)
|
||||
aasm (5.0.8)
|
||||
concurrent-ruby (~> 1.0)
|
||||
actioncable (5.0.7.2)
|
||||
actionpack (= 5.0.7.2)
|
||||
nio4r (>= 1.2, < 3.0)
|
||||
actioncable (5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (~> 0.6.1)
|
||||
actionmailer (5.0.7.2)
|
||||
actionpack (= 5.0.7.2)
|
||||
actionview (= 5.0.7.2)
|
||||
activejob (= 5.0.7.2)
|
||||
actionmailer (5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
actionview (= 5.1.7)
|
||||
activejob (= 5.1.7)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (5.0.7.2)
|
||||
actionview (= 5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
actionpack (5.1.7)
|
||||
actionview (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
rack (~> 2.0)
|
||||
rack-test (~> 0.6.3)
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||
actionpack-page_caching (1.1.0)
|
||||
actionpack (>= 4.0.0, < 6)
|
||||
actionview (5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
actionview (5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
builder (~> 3.1)
|
||||
erubis (~> 2.7.0)
|
||||
erubi (~> 1.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
||||
active_record_query_trace (1.7)
|
||||
activejob (5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
activejob (5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
activerecord (5.0.7.2)
|
||||
activemodel (= 5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
arel (~> 7.0)
|
||||
activesupport (5.0.7.2)
|
||||
activemodel (5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
activerecord (5.1.7)
|
||||
activemodel (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
arel (~> 8.0)
|
||||
activesupport (5.1.7)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
@ -51,7 +51,7 @@ GEM
|
||||
api-pagination (4.8.2)
|
||||
apipie-rails (0.5.17)
|
||||
rails (>= 4.1)
|
||||
arel (7.1.4)
|
||||
arel (8.0.0)
|
||||
ast (2.4.0)
|
||||
autoprefixer-rails (9.7.4)
|
||||
execjs
|
||||
@ -147,7 +147,7 @@ GEM
|
||||
faraday
|
||||
multi_json
|
||||
equalizer (0.0.11)
|
||||
erubis (2.7.0)
|
||||
erubi (1.9.0)
|
||||
et-orbi (1.2.1)
|
||||
tzinfo
|
||||
execjs (2.7.0)
|
||||
@ -286,20 +286,20 @@ GEM
|
||||
rack (2.2.2)
|
||||
rack-protection (2.0.8.1)
|
||||
rack
|
||||
rack-test (0.6.3)
|
||||
rack (>= 1.0)
|
||||
rack-test (1.1.0)
|
||||
rack (>= 1.0, < 3)
|
||||
railroady (1.5.3)
|
||||
rails (5.0.7.2)
|
||||
actioncable (= 5.0.7.2)
|
||||
actionmailer (= 5.0.7.2)
|
||||
actionpack (= 5.0.7.2)
|
||||
actionview (= 5.0.7.2)
|
||||
activejob (= 5.0.7.2)
|
||||
activemodel (= 5.0.7.2)
|
||||
activerecord (= 5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
rails (5.1.7)
|
||||
actioncable (= 5.1.7)
|
||||
actionmailer (= 5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
actionview (= 5.1.7)
|
||||
activejob (= 5.1.7)
|
||||
activemodel (= 5.1.7)
|
||||
activerecord (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
bundler (>= 1.3.0)
|
||||
railties (= 5.0.7.2)
|
||||
railties (= 5.1.7)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
rails-dom-testing (2.0.3)
|
||||
activesupport (>= 4.2.0)
|
||||
@ -313,9 +313,9 @@ GEM
|
||||
rails_stdout_logging
|
||||
rails_serve_static_assets (0.0.5)
|
||||
rails_stdout_logging (0.0.5)
|
||||
railties (5.0.7.2)
|
||||
actionpack (= 5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
railties (5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
method_source
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
@ -493,7 +493,7 @@ DEPENDENCIES
|
||||
puma (= 3.12.4)
|
||||
pundit
|
||||
railroady
|
||||
rails (~> 5.0.7.2)
|
||||
rails (~> 5.1.7)
|
||||
rails-observers
|
||||
rails_12factor
|
||||
rb-readline
|
||||
|
2
Procfile
2
Procfile
@ -1,3 +1,3 @@
|
||||
web: bundle exec rails server puma -p $PORT -b0.0.0.0
|
||||
web: bundle exec rails server puma -p $PORT
|
||||
worker: bundle exec sidekiq -C ./config/sidekiq.yml
|
||||
mail: mailcatcher --foreground --http-ip=0.0.0.0
|
||||
|
@ -11,7 +11,7 @@ class EventService
|
||||
start_at: range[:start_at],
|
||||
end_at: range[:end_at],
|
||||
available_type: 'event' })
|
||||
.except!(:start_date, :end_date, :start_time, :end_time, :all_day)
|
||||
.extract!(:start_date, :end_date, :start_time, :end_time, :all_day)
|
||||
# convert main price to centimes
|
||||
params[:amount] = (params[:amount].to_f * 100 if params[:amount].present?)
|
||||
# delete non-complete "other" prices and convert them to centimes
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
# Provides helper methods for User actions
|
||||
class Members::MembersService
|
||||
|
||||
attr_accessor :member
|
||||
|
||||
def initialize(member)
|
||||
@ -10,10 +9,9 @@ class Members::MembersService
|
||||
end
|
||||
|
||||
def update(params)
|
||||
|
||||
if params[:group_id] && @member.group_id != params[:group_id].to_i && !@member.subscribed_plan.nil?
|
||||
# here a group change is requested but unprocessable, handle the exception
|
||||
@member.errors[:group_id] = I18n.t('members.unable_to_change_the_group_while_a_subscription_is_running')
|
||||
@member.errors.add(:group_id, I18n.t('members.unable_to_change_the_group_while_a_subscription_is_running'))
|
||||
return false
|
||||
end
|
||||
|
||||
@ -80,5 +78,4 @@ class Members::MembersService
|
||||
params[:password]
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -18,6 +18,10 @@ chdir APP_ROOT do
|
||||
system! 'gem install bundler --conservative'
|
||||
system('bundle check') || system!('bundle install')
|
||||
|
||||
# Install JavaScript dependencies if using Yarn
|
||||
# system('bin/yarn')
|
||||
|
||||
|
||||
# puts "\n== Copying sample files =="
|
||||
# unless File.exist?('config/database.yml')
|
||||
# cp 'config/database.yml.sample', 'config/database.yml'
|
||||
|
11
bin/yarn
Executable file
11
bin/yarn
Executable file
@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env ruby
|
||||
VENDOR_PATH = File.expand_path('..', __dir__)
|
||||
Dir.chdir(VENDOR_PATH) do
|
||||
begin
|
||||
exec "yarnpkg #{ARGV.join(" ")}"
|
||||
rescue Errno::ENOENT
|
||||
$stderr.puts "Yarn executable was not detected in the system."
|
||||
$stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
|
||||
exit 1
|
||||
end
|
||||
end
|
@ -14,6 +14,10 @@ Bundler.require(*Rails.groups)
|
||||
module Fablab
|
||||
class Application < Rails::Application
|
||||
require 'fab_manager'
|
||||
|
||||
# Initialize configuration defaults for originally generated Rails version.
|
||||
# config.load_defaults 5.1
|
||||
|
||||
# Settings in config/environments/* take precedence over those specified here.
|
||||
# Application configuration should go into files in config/initializers
|
||||
# -- all .rb files in that directory are automatically loaded.
|
||||
@ -30,20 +34,10 @@ module Fablab
|
||||
config.i18n.default_locale = Rails.application.secrets.rails_locale
|
||||
config.i18n.fallbacks = [Rails.application.secrets.app_locale, :en]
|
||||
|
||||
config.assets.paths << Rails.root.join('node_modules').to_s
|
||||
|
||||
config.to_prepare do
|
||||
Devise::Mailer.layout 'notifications_mailer'
|
||||
end
|
||||
|
||||
# allow use rails helpers in angular templates
|
||||
Rails.application.config.assets.configure do |env|
|
||||
env.context_class.class_eval do
|
||||
include ActionView::Helpers
|
||||
include Rails.application.routes.url_helpers
|
||||
end
|
||||
end
|
||||
|
||||
config.active_job.queue_adapter = :sidekiq
|
||||
|
||||
config.generators do |g|
|
||||
|
@ -7,3 +7,4 @@ test:
|
||||
production:
|
||||
adapter: redis
|
||||
url: redis://localhost:6379/1
|
||||
channel_prefix: fablab_production
|
||||
|
@ -20,7 +20,7 @@ Rails.application.configure do
|
||||
|
||||
config.cache_store = :memory_store
|
||||
config.public_file_server.headers = {
|
||||
'Cache-Control' => 'public, max-age=172800'
|
||||
'Cache-Control' => "public, max-age=#{2.days.seconds.to_i}"
|
||||
}
|
||||
else
|
||||
config.action_controller.perform_caching = false
|
||||
@ -74,7 +74,7 @@ Rails.application.configure do
|
||||
|
||||
# Use an evented file watcher to asynchronously detect changes in source code,
|
||||
# routes, locales, etc. This feature depends on the listen gem.
|
||||
# config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
||||
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
||||
|
||||
config.log_level = Rails.application.secrets.log_level || :debug
|
||||
end
|
||||
|
@ -17,7 +17,7 @@ Rails.application.configure do
|
||||
# Configure public file server for tests with Cache-Control for performance.
|
||||
config.public_file_server.enabled = true
|
||||
config.public_file_server.headers = {
|
||||
'Cache-Control' => 'public, max-age=3600'
|
||||
'Cache-Control' => "public, max-age=#{1.hour.seconds.to_i}"
|
||||
}
|
||||
|
||||
# Show full error reports and disable caching.
|
||||
|
@ -1,14 +1,27 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
# Version of your assets, change this if you want to expire all your assets.
|
||||
Rails.application.config.assets.version = '1.0'
|
||||
|
||||
# Add additional assets to the asset load path
|
||||
# allow use rails helpers in angular templates
|
||||
Rails.application.config.assets.configure do |env|
|
||||
env.context_class.class_eval do
|
||||
include ActionView::Helpers
|
||||
include Rails.application.routes.url_helpers
|
||||
end
|
||||
end
|
||||
|
||||
# Add additional assets to the asset load path.
|
||||
# Rails.application.config.assets.paths << Emoji.images_path
|
||||
# Add Yarn node_modules folder to the asset load path.
|
||||
Rails.application.config.assets.paths << Rails.root.join('node_modules')
|
||||
|
||||
# Precompile additional assets.
|
||||
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
||||
# Rails.application.config.assets.precompile += %w( search.js )
|
||||
# application.js, application.css, and all non-JS/CSS in the app/assets
|
||||
# folder are already added.
|
||||
# Rails.application.config.assets.precompile += %w( admin.js admin.css )
|
||||
|
||||
Rails.application.config.assets.precompile += %w[
|
||||
fontawesome-webfont.eot
|
||||
|
@ -1,3 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Be sure to restart your server when you modify this file.
|
||||
#
|
||||
# This file contains migration options to ease your Rails 5.0 upgrade.
|
||||
@ -6,6 +8,7 @@
|
||||
#
|
||||
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
||||
|
||||
# DEPRECATION WARNING: raise_on_unfiltered_parameters is deprecated and has no effect in Rails 5.1.
|
||||
Rails.application.config.action_controller.raise_on_unfiltered_parameters = true
|
||||
|
||||
# Enable per-form CSRF tokens. Previous versions had false.
|
||||
@ -21,5 +24,6 @@ ActiveSupport.to_time_preserves_timezone = false
|
||||
# Require `belongs_to` associations by default. Previous versions had false.
|
||||
Rails.application.config.active_record.belongs_to_required_by_default = false
|
||||
|
||||
# DEPRECATION WARNING: ActiveSupport.halt_callback_chains_on_return_false= is deprecated and will be removed in Rails 5.2.
|
||||
# Do not halt callback chains when a callback returns false. Previous versions had true.
|
||||
ActiveSupport.halt_callback_chains_on_return_false = true
|
||||
|
18
config/initializers/new_framework_defaults_5_1.rb
Normal file
18
config/initializers/new_framework_defaults_5_1.rb
Normal file
@ -0,0 +1,18 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Be sure to restart your server when you modify this file.
|
||||
#
|
||||
# This file contains migration options to ease your Rails 5.1 upgrade.
|
||||
#
|
||||
# Once upgraded flip defaults one by one to migrate to the new default.
|
||||
#
|
||||
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
||||
|
||||
# Make `form_with` generate non-remote forms.
|
||||
Rails.application.config.action_view.form_with_generates_remote_forms = false
|
||||
|
||||
# Unknown asset fallback will return the path passed in when the given
|
||||
# asset is not present in the asset pipeline.
|
||||
# Rails.application.config.assets.unknown_asset_fallback = false
|
||||
|
||||
# ActiveSupport::Deprecation.silenced = true
|
@ -1,13 +1,13 @@
|
||||
# Puma can serve each request in a thread from an internal thread pool.
|
||||
# The `threads` method setting takes two numbers a minimum and maximum.
|
||||
# The `threads` method setting takes two numbers: a minimum and maximum.
|
||||
# Any libraries that use thread pools should be configured to match
|
||||
# the maximum value specified for Puma. Default is set to 5 threads for minimum
|
||||
# and maximum, this matches the default thread size of Active Record.
|
||||
# and maximum; this matches the default thread size of Active Record.
|
||||
#
|
||||
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i
|
||||
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
|
||||
threads threads_count, threads_count
|
||||
|
||||
# Specifies the `port` that Puma will listen on to receive requests, default is 3000.
|
||||
# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
|
||||
#
|
||||
port ENV.fetch("PORT") { 3000 }
|
||||
|
||||
@ -32,16 +32,25 @@ environment ENV.fetch("RAILS_ENV") { "development" }
|
||||
#
|
||||
# preload_app!
|
||||
|
||||
# If you are preloading your application and using Active Record, it's
|
||||
# recommended that you close any connections to the database before workers
|
||||
# are forked to prevent connection leakage.
|
||||
#
|
||||
# before_fork do
|
||||
# ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord)
|
||||
# end
|
||||
|
||||
# The code in the `on_worker_boot` will be called if you are using
|
||||
# clustered mode by specifying a number of `workers`. After each worker
|
||||
# process is booted this block will be run, if you are using `preload_app!`
|
||||
# option you will want to use this block to reconnect to any threads
|
||||
# or connections that may have been created at application boot, Ruby
|
||||
# process is booted, this block will be run. If you are using the `preload_app!`
|
||||
# option, you will want to use this block to reconnect to any threads
|
||||
# or connections that may have been created at application boot, as Ruby
|
||||
# cannot share connections between processes.
|
||||
#
|
||||
# on_worker_boot do
|
||||
# ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
|
||||
# end
|
||||
#
|
||||
|
||||
# Allow puma to be restarted by `rails restart` command.
|
||||
plugin :tmp_restart
|
||||
|
@ -1,5 +1,6 @@
|
||||
class AbusesTest < ActionDispatch::IntegrationTest
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AbusesTest < ActionDispatch::IntegrationTest
|
||||
# Called before every test method runs. Can be used
|
||||
# to set up fixture information.
|
||||
def setup
|
||||
@ -18,21 +19,21 @@ class AbusesTest < ActionDispatch::IntegrationTest
|
||||
project = Project.take
|
||||
|
||||
post '/api/abuses',
|
||||
{
|
||||
abuse: {
|
||||
signaled_type: 'Project',
|
||||
signaled_id: project.id,
|
||||
first_name: 'William',
|
||||
last_name: 'Prindle',
|
||||
email: 'wprindle@iastate.edu',
|
||||
message: 'This project is in infringement with the patent US5014921 A.'
|
||||
}
|
||||
params: {
|
||||
abuse: {
|
||||
signaled_type: 'Project',
|
||||
signaled_id: project.id,
|
||||
first_name: 'William',
|
||||
last_name: 'Prindle',
|
||||
email: 'wprindle@iastate.edu',
|
||||
message: 'This project is in infringement with the patent US5014921 A.'
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct object was signaled
|
||||
abuse = json_response(response.body)
|
||||
@ -42,7 +43,7 @@ class AbusesTest < ActionDispatch::IntegrationTest
|
||||
# Check notifications were sent for every admins
|
||||
notifications = Notification.where(notification_type_id: NotificationType.find_by_name('notify_admin_abuse_reported'), attached_object_type: 'Abuse', attached_object_id: abuse[:reporting][:id])
|
||||
assert_not_empty notifications, 'no notifications were created'
|
||||
notified_users_ids = notifications.map {|n| n.receiver_id }
|
||||
notified_users_ids = notifications.map(&:receiver_id)
|
||||
User.admins.each do |adm|
|
||||
assert_includes notified_users_ids, adm.id, "Admin #{adm.id} was not notified"
|
||||
end
|
||||
@ -53,20 +54,19 @@ class AbusesTest < ActionDispatch::IntegrationTest
|
||||
project = Project.first
|
||||
|
||||
post '/api/abuses',
|
||||
{
|
||||
abuse: {
|
||||
signaled_type: 'Project',
|
||||
signaled_id: project.id,
|
||||
first_name: 'John',
|
||||
last_name: 'Wrong',
|
||||
email: '',
|
||||
message: ''
|
||||
}
|
||||
params: {
|
||||
abuse: {
|
||||
signaled_type: 'Project',
|
||||
signaled_id: project.id,
|
||||
first_name: 'John',
|
||||
last_name: 'Wrong',
|
||||
email: '',
|
||||
message: ''
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
assert_equal 422, response.status, response.body
|
||||
assert_match /can't be blank/, response.body
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -1,7 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AccountingPeriodTest < ActionDispatch::IntegrationTest
|
||||
|
||||
def setup
|
||||
@admin = User.find_by(username: 'admin')
|
||||
login_as(@admin, scope: :user)
|
||||
@ -12,16 +11,16 @@ class AccountingPeriodTest < ActionDispatch::IntegrationTest
|
||||
end_at = '2012-12-31T00:00:00.000Z'
|
||||
|
||||
post '/api/accounting_periods',
|
||||
{
|
||||
params: {
|
||||
accounting_period: {
|
||||
start_at: start_at,
|
||||
end_at: end_at
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct period was closed successfully
|
||||
period = json_response(response.body)
|
||||
@ -39,16 +38,16 @@ class AccountingPeriodTest < ActionDispatch::IntegrationTest
|
||||
diff = (end_at.to_date - start_at.to_date).to_i
|
||||
|
||||
post '/api/accounting_periods',
|
||||
{
|
||||
params: {
|
||||
accounting_period: {
|
||||
start_at: start_at,
|
||||
end_at: end_at
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 422, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# check the error
|
||||
assert_match(/#{I18n.t('errors.messages.invalid_duration', DAYS: diff)}/, response.body)
|
||||
@ -59,16 +58,16 @@ class AccountingPeriodTest < ActionDispatch::IntegrationTest
|
||||
end_at = '2015-02-27T00:00:00.000Z'
|
||||
|
||||
post '/api/accounting_periods',
|
||||
{
|
||||
params: {
|
||||
accounting_period: {
|
||||
start_at: start_at,
|
||||
end_at: end_at
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 422, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# check the error
|
||||
assert_match(/#{I18n.t('errors.messages.cannot_overlap')}/, response.body)
|
||||
@ -79,16 +78,16 @@ class AccountingPeriodTest < ActionDispatch::IntegrationTest
|
||||
end_at = Date.today.end_of_day.iso8601
|
||||
|
||||
post '/api/accounting_periods',
|
||||
{
|
||||
params: {
|
||||
accounting_period: {
|
||||
start_at: start_at,
|
||||
end_at: end_at
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 422, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# check the error
|
||||
assert_match(/#{I18n.t('errors.messages.must_be_in_the_past')}/, response.body)
|
||||
|
@ -1,5 +1,6 @@
|
||||
class AdminsTest < ActionDispatch::IntegrationTest
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AdminsTest < ActionDispatch::IntegrationTest
|
||||
# Called before every test method runs. Can be used
|
||||
# to set up fixture information.
|
||||
def setup
|
||||
@ -16,7 +17,7 @@ class AdminsTest < ActionDispatch::IntegrationTest
|
||||
|
||||
test 'create an admin' do
|
||||
post '/api/admins',
|
||||
{
|
||||
params: {
|
||||
admin: {
|
||||
username: 'glepower',
|
||||
email: 'gerard.lepower@admins.net',
|
||||
@ -36,11 +37,11 @@ class AdminsTest < ActionDispatch::IntegrationTest
|
||||
}
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct admin was created
|
||||
admin = json_response(response.body)
|
||||
@ -54,10 +55,9 @@ class AdminsTest < ActionDispatch::IntegrationTest
|
||||
test 'list all admins' do
|
||||
get '/api/admins'
|
||||
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the list items are ok
|
||||
admins = json_response(response.body)
|
||||
|
@ -1,3 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Availabilities
|
||||
class AsAdminTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@ -12,7 +14,7 @@ module Availabilities
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct availability was returned
|
||||
availability = json_response(response.body)
|
||||
@ -26,7 +28,7 @@ module Availabilities
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct availabilities was returned
|
||||
availabilities = json_response(response.body)
|
||||
@ -50,7 +52,7 @@ module Availabilities
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct availabilities was returned
|
||||
availabilities = json_response(response.body)
|
||||
@ -72,15 +74,14 @@ module Availabilities
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct availabilities was returned
|
||||
availabilities = json_response(response.body)
|
||||
assert_not_empty availabilities, 'no availabilities were found'
|
||||
assert_not_nil availabilities[0], 'first availability was unexpectedly nil'
|
||||
|
||||
assert availabilities.map {|a| a[:available_type] }.include?('space'), 'space availability not found instead that it was enabled'
|
||||
assert availabilities.map { |a| a[:available_type] }.include?('space'), 'space availability not found instead that it was enabled'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Availabilities::AsUserTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
user = User.find_by(username: 'kdumas')
|
||||
@ -11,7 +13,7 @@ class Availabilities::AsUserTest < ActionDispatch::IntegrationTest
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct availabilities was returned
|
||||
availabilities = json_response(response.body)
|
||||
@ -27,8 +29,7 @@ class Availabilities::AsUserTest < ActionDispatch::IntegrationTest
|
||||
|
||||
# Check that we don't get availabilities in more than a month
|
||||
availabilities.each do |a|
|
||||
assert_not a[:start] > 1.month.from_now , 'retrieved a slot in more than 1 month for user who has no yearly subscription'
|
||||
assert_not a[:start] > 1.month.from_now, 'retrieved a slot in more than 1 month for user who has no yearly subscription'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
module Credits
|
||||
class TrainingTest < ActionDispatch::IntegrationTest
|
||||
|
||||
# Called before every test method runs. Can be used
|
||||
# to set up fixture information.
|
||||
def setup
|
||||
@ -11,10 +10,9 @@ module Credits
|
||||
end
|
||||
|
||||
test 'create machine credit' do
|
||||
|
||||
# First, we create a new credit
|
||||
post '/api/credits',
|
||||
{
|
||||
params: {
|
||||
credit: {
|
||||
creditable_id: 5,
|
||||
creditable_type: 'Machine',
|
||||
@ -22,11 +20,11 @@ module Credits
|
||||
plan_id: 1
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the credit was created correctly
|
||||
credit = json_response(response.body)
|
||||
@ -39,7 +37,7 @@ module Credits
|
||||
|
||||
test 'update a credit' do
|
||||
put '/api/credits/13',
|
||||
{
|
||||
params: {
|
||||
credit: {
|
||||
creditable_id: 4,
|
||||
creditable_type: 'Machine',
|
||||
@ -47,11 +45,11 @@ module Credits
|
||||
plan_id: 3
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the credit was correctly updated
|
||||
credit = json_response(response.body)
|
||||
@ -62,4 +60,4 @@ module Credits
|
||||
assert_equal 5, c.hours
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,6 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Credits
|
||||
class TrainingTest < ActionDispatch::IntegrationTest
|
||||
|
||||
# Called before every test method runs. Can be used
|
||||
# to set up fixture information.
|
||||
def setup
|
||||
@ -9,21 +10,20 @@ module Credits
|
||||
end
|
||||
|
||||
test 'create training credit' do
|
||||
|
||||
# First, we create a new credit
|
||||
post '/api/credits',
|
||||
{
|
||||
params: {
|
||||
credit: {
|
||||
creditable_id: 4,
|
||||
creditable_type: 'Training',
|
||||
plan_id: '1',
|
||||
plan_id: '1'
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the credit was created correctly
|
||||
credit = json_response(response.body)
|
||||
@ -36,18 +36,18 @@ module Credits
|
||||
|
||||
test 'create a existing credit' do
|
||||
post '/api/credits',
|
||||
{
|
||||
params: {
|
||||
credit: {
|
||||
creditable_id: 4,
|
||||
creditable_type: 'Training',
|
||||
plan_id: '2'
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 422, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,17 +1,16 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Events
|
||||
class AsAdminTest < ActionDispatch::IntegrationTest
|
||||
|
||||
setup do
|
||||
admin = User.with_role(:admin).first
|
||||
login_as(admin, scope: :user)
|
||||
end
|
||||
|
||||
test 'creation modification reservation and re-modification scenario' do
|
||||
|
||||
# First, we create a new event
|
||||
post '/api/events',
|
||||
{
|
||||
params: {
|
||||
event: {
|
||||
title: 'OpenLab discovery day',
|
||||
description: 'A day to discover the Fablab and try its machines and possibilities.',
|
||||
@ -23,11 +22,11 @@ module Events
|
||||
amount: 0
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the event was created correctly
|
||||
event = json_response(response.body)
|
||||
@ -39,21 +38,23 @@ module Events
|
||||
|
||||
# Then, modify the event to set a nb of places
|
||||
put "/api/events/#{e.id}",
|
||||
event: {
|
||||
title: 'OpenLab discovery day',
|
||||
description: 'A day to discover the Fablab and try its machines and possibilities.',
|
||||
start_date: 1.week.from_now.utc,
|
||||
start_time: 1.week.from_now.utc.change(hour: 16),
|
||||
end_date: 1.week.from_now.utc,
|
||||
end_time: 1.week.from_now.utc.change(hour: 20),
|
||||
category_id: Category.first.id,
|
||||
amount: 0,
|
||||
nb_total_places: 10
|
||||
params: {
|
||||
event: {
|
||||
title: 'OpenLab discovery day',
|
||||
description: 'A day to discover the Fablab and try its machines and possibilities.',
|
||||
start_date: 1.week.from_now.utc,
|
||||
start_time: 1.week.from_now.utc.change(hour: 16),
|
||||
end_date: 1.week.from_now.utc,
|
||||
end_time: 1.week.from_now.utc.change(hour: 20),
|
||||
category_id: Category.first.id,
|
||||
amount: 0,
|
||||
nb_total_places: 10
|
||||
}
|
||||
}
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the places numbers were updated successfully
|
||||
e = Event.where(id: event[:id]).first
|
||||
@ -62,7 +63,7 @@ module Events
|
||||
|
||||
# Now, let's make a reservation on this event
|
||||
post '/api/reservations',
|
||||
{
|
||||
params: {
|
||||
reservation: {
|
||||
user_id: User.find_by(username: 'pdurand').id,
|
||||
reservable_id: e.id,
|
||||
@ -78,11 +79,11 @@ module Events
|
||||
]
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the remaining places were updated successfully
|
||||
e = Event.where(id: event[:id]).first
|
||||
@ -90,21 +91,23 @@ module Events
|
||||
|
||||
# Finally, modify the event to add some places
|
||||
put "/api/events/#{e.id}",
|
||||
event: {
|
||||
title: 'OpenLab discovery day',
|
||||
description: 'A day to discover the Fablab and try its machines and possibilities.',
|
||||
start_date: 1.week.from_now.utc,
|
||||
start_time: 1.week.from_now.utc.change(hour: 16),
|
||||
end_date: 1.week.from_now.utc,
|
||||
end_time: 1.week.from_now.utc.change(hour: 20),
|
||||
category_id: Category.first.id,
|
||||
amount: 0,
|
||||
nb_total_places: 20
|
||||
params: {
|
||||
event: {
|
||||
title: 'OpenLab discovery day',
|
||||
description: 'A day to discover the Fablab and try its machines and possibilities.',
|
||||
start_date: 1.week.from_now.utc,
|
||||
start_time: 1.week.from_now.utc.change(hour: 16),
|
||||
end_date: 1.week.from_now.utc,
|
||||
end_time: 1.week.from_now.utc.change(hour: 20),
|
||||
category_id: Category.first.id,
|
||||
amount: 0,
|
||||
nb_total_places: 20
|
||||
}
|
||||
}
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the places numbers were updated successfully
|
||||
e = Event.where(id: event[:id]).first
|
||||
@ -113,12 +116,11 @@ module Events
|
||||
end
|
||||
|
||||
test 'create event with custom price and reserve it with success' do
|
||||
|
||||
price_category = PriceCategory.first
|
||||
|
||||
# First, we create a new event
|
||||
post '/api/events',
|
||||
{
|
||||
params: {
|
||||
event: {
|
||||
title: 'Electronics initiation',
|
||||
description: 'A workshop about electronics and the abilities to create robots.',
|
||||
@ -137,11 +139,11 @@ module Events
|
||||
]
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the event was created correctly
|
||||
event = json_response(response.body)
|
||||
@ -155,7 +157,7 @@ module Events
|
||||
|
||||
# Now, let's make a reservation on this event
|
||||
post '/api/reservations',
|
||||
{
|
||||
params: {
|
||||
reservation: {
|
||||
user_id: User.find_by(username: 'lseguin').id,
|
||||
reservable_id: e.id,
|
||||
@ -177,11 +179,11 @@ module Events
|
||||
]
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the reservation match the required event
|
||||
reservation = json_response(response.body)
|
||||
@ -197,7 +199,6 @@ module Events
|
||||
# Check the resulting invoice generation and it has right price
|
||||
assert_invoice_pdf r.invoice
|
||||
assert_equal (4 * 20) + (4 * 16), r.invoice.total / 100.0
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,8 +1,8 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Events
|
||||
class AsUserTest < ActionDispatch::IntegrationTest
|
||||
|
||||
test 'reserve event with many prices and payment means and VAT' do
|
||||
|
||||
vlonchamp = User.find_by(username: 'vlonchamp')
|
||||
login_as(vlonchamp, scope: :user)
|
||||
|
||||
@ -27,7 +27,7 @@ module Events
|
||||
# Reserve the 'radio' event
|
||||
VCR.use_cassette('reserve_event_with_many_prices_and_payment_means') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
reservation: {
|
||||
@ -56,7 +56,7 @@ module Events
|
||||
},
|
||||
coupon_code: 'SUNNYFABLAB'
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
vlonchamp.wallet.reload
|
||||
@ -80,14 +80,14 @@ module Events
|
||||
|
||||
refute invoice.stp_payment_intent_id.blank?
|
||||
refute invoice.total.blank?
|
||||
assert_equal 43350, invoice.total # total minus coupon
|
||||
assert_equal 43_350, invoice.total # total minus coupon
|
||||
|
||||
# invoice_items assertions
|
||||
## reservation
|
||||
reservation_item = invoice.invoice_items.first
|
||||
|
||||
assert_not_nil reservation_item
|
||||
assert_equal 51000, reservation_item.amount # full total
|
||||
assert_equal 51_000, reservation_item.amount # full total
|
||||
|
||||
# invoice assertions
|
||||
invoice = Invoice.find_by(invoiced: reservation)
|
||||
@ -109,7 +109,6 @@ module Events
|
||||
# notifications
|
||||
assert_not_empty Notification.where(attached_object: reservation)
|
||||
assert_not_empty Notification.where(attached_object: invoice)
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -3,17 +3,15 @@
|
||||
module Exports; end
|
||||
|
||||
class Exports::AccountingExportTest < ActionDispatch::IntegrationTest
|
||||
|
||||
setup do
|
||||
admin = User.with_role(:admin).first
|
||||
login_as(admin, scope: :user)
|
||||
end
|
||||
|
||||
test 'creation modification reservation and re-modification scenario' do
|
||||
|
||||
# First, we create a new export
|
||||
post '/api/accounting/export',
|
||||
{
|
||||
params: {
|
||||
query: {
|
||||
columns: %w[journal_code date account_code account_label piece line_label debit_origin credit_origin debit_euro credit_euro lettering],
|
||||
encoding: 'ISO-8859-1',
|
||||
@ -28,11 +26,11 @@ class Exports::AccountingExportTest < ActionDispatch::IntegrationTest
|
||||
type: 'acd',
|
||||
key: ';'
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the export was created correctly
|
||||
res = json_response(response.body)
|
||||
@ -134,10 +132,8 @@ class Exports::AccountingExportTest < ActionDispatch::IntegrationTest
|
||||
STDERR.puts "WARNING: unable to test accurately accounting export: invoice #{last_invoice.id} is not a Machine reservation"
|
||||
end
|
||||
|
||||
|
||||
# Clean CSV file
|
||||
require 'fileutils'
|
||||
FileUtils.rm(e.file)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class InvoicesTest < ActionDispatch::IntegrationTest
|
||||
|
||||
# Called before every test method runs. Can be used
|
||||
# to set up fixture information.
|
||||
def setup
|
||||
@ -10,18 +9,18 @@ class InvoicesTest < ActionDispatch::IntegrationTest
|
||||
end
|
||||
|
||||
test 'admin list invoices' do
|
||||
post '/api/invoices/list', { query: {
|
||||
post '/api/invoices/list', params: { query: {
|
||||
number: '',
|
||||
customer: '',
|
||||
date: nil,
|
||||
order_by: '-reference',
|
||||
page: 1,
|
||||
size: 20 # test db may have < 20 invoices
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check that we have all invoices
|
||||
invoices = json_response(response.body)
|
||||
@ -35,18 +34,18 @@ class InvoicesTest < ActionDispatch::IntegrationTest
|
||||
test 'admin generates a refund' do
|
||||
date = DateTime.current.iso8601
|
||||
|
||||
post '/api/invoices', { avoir: {
|
||||
post '/api/invoices', params: { avoir: {
|
||||
avoir_date: date,
|
||||
payment_method: 'cash',
|
||||
description: 'Lorem ipsum',
|
||||
invoice_id: 4,
|
||||
invoice_items_ids: [4],
|
||||
subscription_to_expire: false
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check that the refund match
|
||||
refund = json_response(response.body)
|
||||
@ -68,22 +67,20 @@ class InvoicesTest < ActionDispatch::IntegrationTest
|
||||
test 'admin fails generates a refund in closed period' do
|
||||
date = '2015-10-01T13:09:55+01:00'.to_datetime
|
||||
|
||||
post '/api/invoices', { avoir: {
|
||||
post '/api/invoices', params: { avoir: {
|
||||
avoir_date: date,
|
||||
payment_method: 'cash',
|
||||
description: 'Unable to refund',
|
||||
invoice_id: 5,
|
||||
invoice_items_ids: [5],
|
||||
subscription_to_expire: false
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 422, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the error was handled
|
||||
assert_match(/#{I18n.t('errors.messages.in_closed_period')}/, response.body)
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -13,7 +13,7 @@ class MembersTest < ActionDispatch::IntegrationTest
|
||||
email = 'robert.dubois@gmail.com'
|
||||
|
||||
VCR.use_cassette('members_admin_create_success') do
|
||||
post members_path, { user: {
|
||||
post members_path, params: { user: {
|
||||
username: 'bob',
|
||||
email: email,
|
||||
group_id: group_id,
|
||||
@ -31,12 +31,12 @@ class MembersTest < ActionDispatch::IntegrationTest
|
||||
gender: true,
|
||||
birthday: '2018-02-08'
|
||||
}
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check that the user's match
|
||||
user = json_response(response.body)
|
||||
@ -48,13 +48,13 @@ class MembersTest < ActionDispatch::IntegrationTest
|
||||
user = User.friendly.find('kdumas')
|
||||
|
||||
# we cannot update an kevin's group because he's got a running subscription
|
||||
put "/api/members/#{user.id}", { user: {
|
||||
put "/api/members/#{user.id}", params: { user: {
|
||||
group_id: 1
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 422, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check error message
|
||||
res = json_response(response.body)
|
||||
@ -70,18 +70,18 @@ class MembersTest < ActionDispatch::IntegrationTest
|
||||
}
|
||||
instagram = 'https://www.instagram.com/vanessa/'
|
||||
|
||||
put "/api/members/#{user.id}", user_hash.deep_merge(
|
||||
put "/api/members/#{user.id}", params: user_hash.deep_merge(
|
||||
user: {
|
||||
group_id: 2,
|
||||
profile_attributes: {
|
||||
instagram: instagram
|
||||
}
|
||||
}
|
||||
).to_json, default_headers
|
||||
).to_json, headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check update result
|
||||
res = json_response(response.body)
|
||||
@ -94,7 +94,7 @@ class MembersTest < ActionDispatch::IntegrationTest
|
||||
|
||||
## Check response format & status
|
||||
# assert_equal 200, response.status, response.body
|
||||
# assert_equal Mime::JSON, response.content_type
|
||||
# assert_equal Mime[:json], response.content_type
|
||||
|
||||
## Check search result
|
||||
# res = json_response(response.body)
|
||||
|
@ -9,16 +9,15 @@ class ImportTest < ActionDispatch::IntegrationTest
|
||||
end
|
||||
|
||||
test 'bulk import members through CSV' do
|
||||
|
||||
bulk_csv = fixture_file_upload('files/members.csv', 'text/csv')
|
||||
post '/api/imports/members',
|
||||
{
|
||||
params: {
|
||||
import_members: bulk_csv,
|
||||
update_field: 'id'
|
||||
}, default_headers
|
||||
}, headers: default_headers
|
||||
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check that the returned import was created
|
||||
import = json_response(response.body)
|
||||
@ -66,6 +65,5 @@ class ImportTest < ActionDispatch::IntegrationTest
|
||||
assert_equal 'update', res[10][:status], 'wrong operation: jean dupont should have been updated'
|
||||
assert res[10][:result], 'wrong result: operation should have succeeded'
|
||||
assert_equal res[9][:row]['email'], User.find(res[10][:user]).email, 'jean dupont email was not updated'
|
||||
|
||||
end
|
||||
end
|
||||
|
@ -1,6 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Prices
|
||||
class AsAdminTest < ActionDispatch::IntegrationTest
|
||||
|
||||
setup do
|
||||
admin = User.with_role(:admin).first
|
||||
login_as(admin, scope: :user)
|
||||
@ -12,7 +13,7 @@ module Prices
|
||||
printer_training = availability.trainings.first
|
||||
|
||||
post '/api/prices/compute',
|
||||
{
|
||||
params: {
|
||||
reservation: {
|
||||
user_id: user.id,
|
||||
reservable_id: printer_training.id,
|
||||
@ -27,11 +28,11 @@ module Prices
|
||||
]
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the price was computed correctly
|
||||
price = json_response(response.body)
|
||||
@ -40,7 +41,6 @@ module Prices
|
||||
'Computed price did not match training price'
|
||||
end
|
||||
|
||||
|
||||
test 'compute price for a machine reservation with an offered slot and a subscription' do
|
||||
user = User.find_by(username: 'jdupond')
|
||||
availability = Availability.find(3)
|
||||
@ -48,7 +48,7 @@ module Prices
|
||||
plan = Plan.where(group_id: user.group_id, interval: 'month').first
|
||||
|
||||
post '/api/prices/compute',
|
||||
{
|
||||
params: {
|
||||
reservation: {
|
||||
user_id: user.id,
|
||||
reservable_id: laser.id,
|
||||
@ -70,11 +70,11 @@ module Prices
|
||||
]
|
||||
}
|
||||
}.to_json,
|
||||
default_headers
|
||||
headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the event was created correctly
|
||||
price = json_response(response.body)
|
||||
|
@ -1,3 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Reservations
|
||||
class CreateAsAdminTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@ -16,7 +18,7 @@ module Reservations
|
||||
invoice_items_count = InvoiceItem.count
|
||||
users_credit_count = UsersCredit.count
|
||||
|
||||
post reservations_path, { reservation: {
|
||||
post reservations_path, params: { reservation: {
|
||||
user_id: @user_without_subscription.id,
|
||||
reservable_id: machine.id,
|
||||
reservable_type: machine.class.name,
|
||||
@ -27,7 +29,7 @@ module Reservations
|
||||
availability_id: availability.id
|
||||
}
|
||||
]
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# general assertions
|
||||
assert_equal 201, response.status
|
||||
@ -73,7 +75,7 @@ module Reservations
|
||||
invoice_count = Invoice.count
|
||||
invoice_items_count = InvoiceItem.count
|
||||
|
||||
post reservations_path, { reservation: {
|
||||
post reservations_path, params: { reservation: {
|
||||
user_id: @user_without_subscription.id,
|
||||
reservable_id: training.id,
|
||||
reservable_type: training.class.name,
|
||||
@ -84,7 +86,7 @@ module Reservations
|
||||
availability_id: availability.id
|
||||
}
|
||||
]
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# general assertions
|
||||
assert_equal 201, response.status
|
||||
@ -130,7 +132,7 @@ module Reservations
|
||||
invoice_items_count = InvoiceItem.count
|
||||
users_credit_count = UsersCredit.count
|
||||
|
||||
post reservations_path, { reservation: {
|
||||
post reservations_path, params: { reservation: {
|
||||
user_id: @user_with_subscription.id,
|
||||
reservable_id: machine.id,
|
||||
reservable_type: machine.class.name,
|
||||
@ -146,7 +148,7 @@ module Reservations
|
||||
availability_id: availability.id
|
||||
}
|
||||
]
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# general assertions
|
||||
assert_equal 201, response.status
|
||||
@ -203,7 +205,7 @@ module Reservations
|
||||
invoice_items_count = InvoiceItem.count
|
||||
users_credit_count = UsersCredit.count
|
||||
|
||||
post reservations_path, { reservation: {
|
||||
post reservations_path, params: { reservation: {
|
||||
user_id: @vlonchamp.id,
|
||||
reservable_id: machine.id,
|
||||
reservable_type: machine.class.name,
|
||||
@ -214,7 +216,7 @@ module Reservations
|
||||
availability_id: availability.id
|
||||
}
|
||||
]
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# general assertions
|
||||
assert_equal 201, response.status
|
||||
@ -273,7 +275,7 @@ module Reservations
|
||||
users_credit_count = UsersCredit.count
|
||||
wallet_transactions_count = WalletTransaction.count
|
||||
|
||||
post reservations_path, { reservation: {
|
||||
post reservations_path, params: { reservation: {
|
||||
user_id: @vlonchamp.id,
|
||||
reservable_id: machine.id,
|
||||
reservable_type: machine.class.name,
|
||||
@ -285,7 +287,7 @@ module Reservations
|
||||
availability_id: availability.id
|
||||
}
|
||||
]
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# general assertions
|
||||
assert_equal 201, response.status
|
||||
@ -340,7 +342,7 @@ module Reservations
|
||||
invoice_items_count = InvoiceItem.count
|
||||
users_credit_count = UsersCredit.count
|
||||
|
||||
post reservations_path, { reservation: {
|
||||
post reservations_path, params: { reservation: {
|
||||
user_id: @vlonchamp.id,
|
||||
reservable_id: machine.id,
|
||||
reservable_type: machine.class.name,
|
||||
@ -351,7 +353,7 @@ module Reservations
|
||||
availability_id: availability.id
|
||||
}
|
||||
]
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# general assertions
|
||||
assert_equal 201, response.status
|
||||
@ -383,7 +385,7 @@ module Reservations
|
||||
invoice_items_count = InvoiceItem.count
|
||||
users_credit_count = UsersCredit.count
|
||||
|
||||
post reservations_path, { reservation: {
|
||||
post reservations_path, params: { reservation: {
|
||||
user_id: @user_without_subscription.id,
|
||||
plan_id: plan.id,
|
||||
reservable_id: training.id,
|
||||
@ -396,11 +398,11 @@ module Reservations
|
||||
availability_id: availability.id
|
||||
}
|
||||
]
|
||||
} }.to_json, default_headers
|
||||
} }.to_json, headers: default_headers
|
||||
|
||||
# general assertions
|
||||
assert_equal 201, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
result = json_response(response.body)
|
||||
|
||||
# Check the DB objects have been created as they should
|
||||
|
@ -1,3 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Reservations
|
||||
class CreateTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@ -19,7 +21,7 @@ module Reservations
|
||||
|
||||
VCR.use_cassette('reservations_create_for_machine_without_subscription_success') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
reservation: {
|
||||
@ -34,7 +36,7 @@ module Reservations
|
||||
]
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# general assertions
|
||||
@ -89,7 +91,7 @@ module Reservations
|
||||
|
||||
VCR.use_cassette('reservations_create_for_machine_without_subscription_error') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method(error: :card_declined),
|
||||
cart_items: {
|
||||
reservation: {
|
||||
@ -104,12 +106,12 @@ module Reservations
|
||||
]
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, "API does not return the expected status. #{response.body}"
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the error was handled
|
||||
assert_match /Your card was declined/, response.body
|
||||
@ -137,7 +139,7 @@ module Reservations
|
||||
|
||||
VCR.use_cassette('reservations_create_for_training_without_subscription_success') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
reservation: {
|
||||
@ -152,7 +154,7 @@ module Reservations
|
||||
]
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# general assertions
|
||||
@ -206,7 +208,7 @@ module Reservations
|
||||
|
||||
VCR.use_cassette('reservations_create_for_machine_with_subscription_success') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
reservation: {
|
||||
@ -226,7 +228,7 @@ module Reservations
|
||||
]
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# general assertions
|
||||
@ -290,7 +292,7 @@ module Reservations
|
||||
|
||||
VCR.use_cassette('reservations_create_for_training_with_subscription_success') do
|
||||
post '/api/reservations',
|
||||
{
|
||||
params: {
|
||||
reservation: {
|
||||
reservable_id: training.id,
|
||||
reservable_type: training.class.name,
|
||||
@ -302,7 +304,7 @@ module Reservations
|
||||
}
|
||||
]
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# general assertions
|
||||
@ -361,7 +363,7 @@ module Reservations
|
||||
|
||||
VCR.use_cassette('reservations_create_for_machine_and_pay_wallet_success') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
reservation: {
|
||||
@ -378,7 +380,7 @@ module Reservations
|
||||
]
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
@vlonchamp.wallet.reload
|
||||
@ -445,7 +447,7 @@ module Reservations
|
||||
|
||||
VCR.use_cassette('reservations_create_for_training_and_plan_by_pay_wallet_success') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
reservation: {
|
||||
@ -461,7 +463,7 @@ module Reservations
|
||||
]
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
@vlonchamp.wallet.reload
|
||||
@ -523,7 +525,7 @@ module Reservations
|
||||
|
||||
VCR.use_cassette('reservations_machine_and_plan_using_coupon_success') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
reservation: {
|
||||
@ -540,7 +542,7 @@ module Reservations
|
||||
},
|
||||
coupon_code: 'SUNNYFABLAB'
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# general assertions
|
||||
@ -614,7 +616,7 @@ module Reservations
|
||||
|
||||
VCR.use_cassette('reservations_training_with_expired_coupon_error') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
reservation: {
|
||||
@ -624,15 +626,15 @@ module Reservations
|
||||
card_token: stripe_payment_method,
|
||||
slots_attributes: [
|
||||
{
|
||||
start_at: availability.start_at.to_s(:iso8601),
|
||||
end_at: (availability.start_at + 1.hour).to_s(:iso8601),
|
||||
availability_id: availability.id
|
||||
}
|
||||
start_at: availability.start_at.to_s(:iso8601),
|
||||
end_at: (availability.start_at + 1.hour).to_s(:iso8601),
|
||||
availability_id: availability.id
|
||||
}
|
||||
]
|
||||
},
|
||||
coupon_code: 'XMAS10'
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# general assertions
|
||||
|
@ -1,5 +1,6 @@
|
||||
class SettingsTest < ActionDispatch::IntegrationTest
|
||||
# frozen_string_literal: true
|
||||
|
||||
class SettingsTest < ActionDispatch::IntegrationTest
|
||||
# Called before every test method runs. Can be used
|
||||
# to set up fixture information.
|
||||
def setup
|
||||
@ -9,11 +10,13 @@ class SettingsTest < ActionDispatch::IntegrationTest
|
||||
|
||||
test 'update setting value' do
|
||||
put '/api/settings/fablab_name',
|
||||
setting: {
|
||||
value: 'Test Fablab'
|
||||
params: {
|
||||
setting: {
|
||||
value: 'Test Fablab'
|
||||
}
|
||||
}
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
resp = json_response(response.body)
|
||||
assert_equal 'fablab_name', resp[:setting][:name]
|
||||
assert_equal 'Test Fablab', resp[:setting][:value]
|
||||
@ -26,11 +29,12 @@ class SettingsTest < ActionDispatch::IntegrationTest
|
||||
assert_includes setting.history_values.map(&:value), 'Test Fablab', 'current parameter was not saved'
|
||||
end
|
||||
|
||||
|
||||
test 'update setting with wrong name' do
|
||||
put '/api/settings/does_not_exists',
|
||||
setting: {
|
||||
value: 'ERROR EXPECTED'
|
||||
params: {
|
||||
setting: {
|
||||
value: 'ERROR EXPECTED'
|
||||
}
|
||||
}
|
||||
assert_equal 422, response.status
|
||||
assert_match /Name is not included in the list/, response.body
|
||||
@ -40,10 +44,9 @@ class SettingsTest < ActionDispatch::IntegrationTest
|
||||
get '/api/settings/fablab_name'
|
||||
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
resp = json_response(response.body)
|
||||
assert_equal 'fablab_name', resp[:setting][:name], 'wrong parameter name'
|
||||
assert_equal 'Fab Lab de La Casemate', resp[:setting][:value], 'wrong parameter value'
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
module Subscriptions
|
||||
class CreateAsAdminTest < ActionDispatch::IntegrationTest
|
||||
|
||||
|
||||
setup do
|
||||
@admin = User.find_by(username: 'admin')
|
||||
login_as(@admin, scope: :user)
|
||||
@ -15,18 +13,17 @@ module Subscriptions
|
||||
|
||||
VCR.use_cassette('subscriptions_admin_create_success') do
|
||||
post '/api/subscriptions',
|
||||
{
|
||||
params: {
|
||||
subscription: {
|
||||
plan_id: plan.id,
|
||||
user_id: user.id
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct plan was subscribed
|
||||
subscription = json_response(response.body)
|
||||
@ -58,6 +55,5 @@ module Subscriptions
|
||||
assert_invoice_pdf invoice
|
||||
assert_equal plan.amount, invoice.total, 'Invoice total price does not match the bought subscription'
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Subscriptions::CreateAsUserTest < ActionDispatch::IntegrationTest
|
||||
|
||||
|
||||
setup do
|
||||
@user = User.find_by(username: 'jdupond')
|
||||
login_as(@user, scope: :user)
|
||||
@ -11,19 +11,19 @@ class Subscriptions::CreateAsUserTest < ActionDispatch::IntegrationTest
|
||||
|
||||
VCR.use_cassette('subscriptions_user_create_success') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
subscription: {
|
||||
plan_id: plan.id
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct plan was subscribed
|
||||
subscription = json_response(response.body)
|
||||
@ -65,27 +65,25 @@ class Subscriptions::CreateAsUserTest < ActionDispatch::IntegrationTest
|
||||
assert_equal plan.amount, invoice.total, 'Invoice total price does not match the bought subscription'
|
||||
end
|
||||
|
||||
|
||||
|
||||
test 'user fails to take a subscription' do
|
||||
# get plan for wrong group
|
||||
plan = Plan.where.not(group_id: @user.group.id).first
|
||||
|
||||
VCR.use_cassette('subscriptions_user_create_failed') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
subscription: {
|
||||
plan_id: plan.id
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 422, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the error was handled
|
||||
assert_match /plan is not compatible/, response.body
|
||||
@ -94,7 +92,6 @@ class Subscriptions::CreateAsUserTest < ActionDispatch::IntegrationTest
|
||||
assert_nil @user.subscription, "user's subscription was found"
|
||||
end
|
||||
|
||||
|
||||
test 'user successfully takes a subscription with wallet' do
|
||||
@vlonchamp = User.find_by(username: 'vlonchamp')
|
||||
login_as(@vlonchamp, scope: :user)
|
||||
@ -102,21 +99,21 @@ class Subscriptions::CreateAsUserTest < ActionDispatch::IntegrationTest
|
||||
|
||||
VCR.use_cassette('subscriptions_user_create_success_with_wallet') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
subscription: {
|
||||
plan_id: plan.id
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
@vlonchamp.wallet.reload
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct plan was subscribed
|
||||
subscription = json_response(response.body)
|
||||
@ -138,7 +135,8 @@ class Subscriptions::CreateAsUserTest < ActionDispatch::IntegrationTest
|
||||
assert_equal 10,
|
||||
(printer.prices.find_by(
|
||||
group_id: @vlonchamp.group_id,
|
||||
plan_id: @vlonchamp.subscription.plan_id).amount / 100.00
|
||||
plan_id: @vlonchamp.subscription.plan_id
|
||||
).amount / 100.00
|
||||
),
|
||||
'machine hourly price does not match'
|
||||
|
||||
|
@ -1,28 +1,28 @@
|
||||
class Subscriptions::RenewAsAdminTest < ActionDispatch::IntegrationTest
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Subscriptions::RenewAsAdminTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@admin = User.find_by(username: 'admin')
|
||||
login_as(@admin, scope: :user)
|
||||
end
|
||||
|
||||
test 'admin successfully renew a subscription before it has ended' do
|
||||
|
||||
user = User.find_by(username: 'kdumas')
|
||||
plan = Plan.find_by(base_name: 'Mensuel tarif réduit')
|
||||
|
||||
VCR.use_cassette('subscriptions_admin_renew_success') do
|
||||
post '/api/subscriptions',
|
||||
{
|
||||
params: {
|
||||
subscription: {
|
||||
plan_id: plan.id,
|
||||
user_id: user.id
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct plan was subscribed
|
||||
subscription = json_response(response.body)
|
||||
@ -74,17 +74,17 @@ class Subscriptions::RenewAsAdminTest < ActionDispatch::IntegrationTest
|
||||
|
||||
VCR.use_cassette('subscriptions_admin_offer_free_days') do
|
||||
put "/api/subscriptions/#{subscription.id}",
|
||||
{
|
||||
params: {
|
||||
subscription: {
|
||||
expired_at: new_date.strftime('%Y-%m-%d %H:%M:%S.%9N Z'),
|
||||
free: true
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check that the subscribed plan was not altered
|
||||
res_subscription = json_response(response.body)
|
||||
@ -114,16 +114,16 @@ class Subscriptions::RenewAsAdminTest < ActionDispatch::IntegrationTest
|
||||
|
||||
VCR.use_cassette('subscriptions_admin_extends_subscription') do
|
||||
put "/api/subscriptions/#{subscription.id}",
|
||||
{
|
||||
params: {
|
||||
subscription: {
|
||||
expired_at: new_date.strftime('%Y-%m-%d %H:%M:%S.%9N Z')
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check that the subscribed plan is still the same
|
||||
res_subscription = json_response(response.body)
|
||||
@ -145,5 +145,4 @@ class Subscriptions::RenewAsAdminTest < ActionDispatch::IntegrationTest
|
||||
assert_not_nil notification, 'user notification was not created'
|
||||
assert_equal user.id, notification.receiver_id, 'wrong user notified'
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Subscriptions::RenewAsUserTest < ActionDispatch::IntegrationTest
|
||||
|
||||
|
||||
setup do
|
||||
@user = User.find_by(username: 'lseguin')
|
||||
login_as(@user, scope: :user)
|
||||
@ -12,19 +12,19 @@ class Subscriptions::RenewAsUserTest < ActionDispatch::IntegrationTest
|
||||
|
||||
VCR.use_cassette('subscriptions_user_renew_success', erb: true) do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method,
|
||||
cart_items: {
|
||||
subscription: {
|
||||
plan_id: plan.id
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, "API does not return the expected status. #{response.body}"
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the correct plan was subscribed
|
||||
subscription = json_response(response.body)
|
||||
@ -69,8 +69,6 @@ class Subscriptions::RenewAsUserTest < ActionDispatch::IntegrationTest
|
||||
assert_equal plan.amount, invoice.total, 'Invoice total price does not match the bought subscription'
|
||||
end
|
||||
|
||||
|
||||
|
||||
test 'user fails to renew a subscription' do
|
||||
plan = Plan.find_by(group_id: @user.group.id, type: 'Plan', base_name: 'Mensuel')
|
||||
|
||||
@ -78,19 +76,19 @@ class Subscriptions::RenewAsUserTest < ActionDispatch::IntegrationTest
|
||||
|
||||
VCR.use_cassette('subscriptions_user_renew_failed') do
|
||||
post '/api/payments/confirm_payment',
|
||||
{
|
||||
params: {
|
||||
payment_method_id: stripe_payment_method(error: :card_declined),
|
||||
cart_items: {
|
||||
subscription: {
|
||||
plan_id: plan.id
|
||||
}
|
||||
}
|
||||
}.to_json, default_headers
|
||||
}.to_json, headers: default_headers
|
||||
end
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 200, response.status, "API does not return the expected status. #{response.body}"
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the error was handled
|
||||
assert_match /Your card was declined/, response.body
|
||||
@ -100,7 +98,5 @@ class Subscriptions::RenewAsUserTest < ActionDispatch::IntegrationTest
|
||||
|
||||
# Check the subscription was not saved
|
||||
assert_equal 1, @user.subscriptions.count
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -1,5 +1,6 @@
|
||||
class WalletsTest < ActionDispatch::IntegrationTest
|
||||
# frozen_string_literal: true
|
||||
|
||||
class WalletsTest < ActionDispatch::IntegrationTest
|
||||
# Called before every test method runs. Can be used
|
||||
# to set up fixture information.
|
||||
def setup
|
||||
@ -17,7 +18,7 @@ class WalletsTest < ActionDispatch::IntegrationTest
|
||||
test 'get my wallet' do
|
||||
get "/api/wallet/by_user/#{@vlonchamp.id}"
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
wallet = json_response(response.body)
|
||||
assert_equal @vlonchamp.wallet.invoicing_profile_id, wallet[:invoicing_profile_id]
|
||||
assert_equal @vlonchamp.wallet.amount, wallet[:amount]
|
||||
@ -29,7 +30,7 @@ class WalletsTest < ActionDispatch::IntegrationTest
|
||||
@user1 = User.first
|
||||
get "/api/wallet/by_user/#{@user1.id}"
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
wallet = json_response(response.body)
|
||||
assert_equal @user1.wallet.invoicing_profile_id, wallet[:invoicing_profile_id]
|
||||
assert_equal @user1.wallet.amount, wallet[:amount]
|
||||
@ -45,7 +46,7 @@ class WalletsTest < ActionDispatch::IntegrationTest
|
||||
w = @vlonchamp.wallet
|
||||
get "/api/wallet/#{w.id}/transactions"
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
transactions = json_response(response.body)
|
||||
assert_equal w.wallet_transactions.count, transactions.size
|
||||
assert_equal wallet_transactions(:transaction1).id, transactions.first[:id]
|
||||
@ -64,10 +65,10 @@ class WalletsTest < ActionDispatch::IntegrationTest
|
||||
amount = 10.5
|
||||
expected_amount = w.amount + amount
|
||||
put "/api/wallet/#{w.id}/credit",
|
||||
amount: amount
|
||||
params: { amount: amount }
|
||||
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
wallet = json_response(response.body)
|
||||
w.reload
|
||||
assert_equal w.amount, expected_amount
|
||||
@ -77,7 +78,6 @@ class WalletsTest < ActionDispatch::IntegrationTest
|
||||
assert_empty Invoice.where(invoiced: w.wallet_transactions.last)
|
||||
end
|
||||
|
||||
|
||||
test 'admin credit wallet with refund invoice generation' do
|
||||
admin = users(:user_1)
|
||||
login_as(admin, scope: :user)
|
||||
@ -86,13 +86,15 @@ class WalletsTest < ActionDispatch::IntegrationTest
|
||||
avoir_date = DateTime.current.end_of_day
|
||||
expected_amount = w.amount + amount
|
||||
put "/api/wallet/#{w.id}/credit",
|
||||
amount: amount,
|
||||
avoir: true,
|
||||
avoir_date: avoir_date,
|
||||
avoir_description: 'Some text'
|
||||
params: {
|
||||
amount: amount,
|
||||
avoir: true,
|
||||
avoir_date: avoir_date,
|
||||
avoir_description: 'Some text'
|
||||
}
|
||||
|
||||
assert_equal 200, response.status
|
||||
assert_equal Mime::JSON, response.content_type
|
||||
assert_equal Mime[:json], response.content_type
|
||||
wallet = json_response(response.body)
|
||||
w.reload
|
||||
assert_equal w.amount, expected_amount
|
||||
|
Loading…
x
Reference in New Issue
Block a user