diff --git a/Gemfile b/Gemfile
index 17c5f9d6e2..59b5dcf62a 100644
--- a/Gemfile
+++ b/Gemfile
@@ -2,13 +2,14 @@ source 'https://rubygems.org'
ruby "2.3.7"
git_source(:github) { |repo_name| "https://github.com/#{repo_name}.git" }
-gem 'i18n', '~> 0.6.11'
+gem 'i18n'
gem 'i18n-js', '~> 3.8.0'
-gem 'rails', '~> 4.1.16'
-gem 'rails-i18n', '~> 4.0'
+gem 'rails', '~> 4.2'
+gem 'rails-i18n'
gem 'rails_safe_tasks', '~> 1.0'
gem "activerecord-import"
+gem 'responders', '~> 2.0'
gem "catalog", path: "./engines/catalog"
gem 'dfc_provider', path: './engines/dfc_provider'
@@ -23,11 +24,11 @@ gem 'awesome_nested_set', '~> 3.2.1'
gem 'cancan', '~> 1.6.10'
gem 'ffaker', '~> 1.16'
gem 'highline', '2.0.3' # Necessary for the install generator
-gem 'json', '>= 1.7.7'
-gem 'money', '5.1.1'
+gem 'json'
+gem 'money', '< 6.1.0'
gem 'paranoia', '~> 2.0'
gem 'ransack', '~> 1.8.10'
-gem 'state_machine', '1.2.0'
+gem 'state_machines-activerecord'
gem 'stringex', '~> 1.5.1'
gem 'spree_i18n', github: 'openfoodfoundation/spree_i18n', branch: '1-3-stable'
@@ -90,7 +91,6 @@ gem 'combine_pdf'
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
-gem 'foreigner'
gem 'immigrant'
gem 'roo', '~> 2.8.3'
diff --git a/Gemfile.lock b/Gemfile.lock
index baca3a8878..05ead18e7f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -55,35 +55,44 @@ GEM
remote: https://rubygems.org/
specs:
CFPropertyList (2.3.6)
- actionmailer (4.1.16)
- actionpack (= 4.1.16)
- actionview (= 4.1.16)
+ actionmailer (4.2.11.3)
+ actionpack (= 4.2.11.3)
+ actionview (= 4.2.11.3)
+ activejob (= 4.2.11.3)
mail (~> 2.5, >= 2.5.4)
- actionpack (4.1.16)
- actionview (= 4.1.16)
- activesupport (= 4.1.16)
- rack (~> 1.5.2)
+ rails-dom-testing (~> 1.0, >= 1.0.5)
+ actionpack (4.2.11.3)
+ actionview (= 4.2.11.3)
+ activesupport (= 4.2.11.3)
+ rack (~> 1.6)
rack-test (~> 0.6.2)
+ rails-dom-testing (~> 1.0, >= 1.0.5)
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionpack-action_caching (1.2.1)
actionpack (>= 4.0.0)
- actionview (4.1.16)
- activesupport (= 4.1.16)
+ actionview (4.2.11.3)
+ activesupport (= 4.2.11.3)
builder (~> 3.1)
erubis (~> 2.7.0)
+ rails-dom-testing (~> 1.0, >= 1.0.5)
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_model_serializers (0.8.4)
activemodel (>= 3.0)
+ activejob (4.2.11.3)
+ activesupport (= 4.2.11.3)
+ globalid (>= 0.3.0)
activemerchant (1.78.0)
activesupport (>= 3.2.14, < 6.x)
builder (>= 2.1.2, < 4.0.0)
i18n (>= 0.6.9)
nokogiri (~> 1.4)
- activemodel (4.1.16)
- activesupport (= 4.1.16)
+ activemodel (4.2.11.3)
+ activesupport (= 4.2.11.3)
builder (~> 3.1)
- activerecord (4.1.16)
- activemodel (= 4.1.16)
- activesupport (= 4.1.16)
- arel (~> 5.0.0)
+ activerecord (4.2.11.3)
+ activemodel (= 4.2.11.3)
+ activesupport (= 4.2.11.3)
+ arel (~> 6.0)
activerecord-import (1.0.7)
activerecord (>= 3.2)
activerecord-postgresql-adapter (0.0.1)
@@ -94,11 +103,10 @@ GEM
multi_json (~> 1.11, >= 1.11.2)
rack (>= 1.5.2, < 3)
railties (>= 4.0)
- activesupport (4.1.16)
- i18n (~> 0.6, >= 0.6.9)
- json (~> 1.7, >= 1.7.7)
+ activesupport (4.2.11.3)
+ i18n (~> 0.7)
minitest (~> 5.1)
- thread_safe (~> 0.1)
+ thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
acts-as-taggable-on (4.0.0)
activerecord (>= 4.0)
@@ -106,6 +114,9 @@ GEM
activerecord (>= 3.0)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
+ aliyun-sdk (0.8.0)
+ nokogiri (~> 1.6)
+ rest-client (~> 2.0)
andand (1.3.3)
angular-rails-templates (0.3.0)
railties (>= 3.1)
@@ -113,7 +124,7 @@ GEM
tilt
angularjs-file-upload-rails (2.4.1)
angularjs-rails (1.5.5)
- arel (5.0.1.20140414130214)
+ arel (6.0.4)
ast (2.4.0)
atomic (1.1.101)
awesome_nested_set (3.2.1)
@@ -124,7 +135,7 @@ GEM
aws-sdk-v1 (1.67.0)
json (~> 1.4)
nokogiri (~> 1)
- bcrypt (3.1.13)
+ bcrypt (3.1.16)
bugsnag (6.18.0)
concurrent-ruby (~> 1.0)
builder (3.2.4)
@@ -139,7 +150,7 @@ GEM
xpath (>= 2.0, < 4.0)
childprocess (3.0.0)
chronic (0.10.2)
- chunky_png (1.3.11)
+ chunky_png (1.3.14)
climate_control (0.2.0)
cocaine (0.5.8)
climate_control (>= 0.0.3, < 1.0)
@@ -171,6 +182,7 @@ GEM
sprockets (< 4.0)
concurrent-ruby (1.1.7)
crack (0.4.4)
+ crass (1.0.6)
css_parser (1.7.1)
addressable
daemons (1.3.1)
@@ -204,24 +216,26 @@ GEM
devise (>= 2.1.0)
devise-token_authenticatable (0.4.10)
devise (>= 3.5.2, < 4.0.0)
- diff-lcs (1.3)
+ diff-lcs (1.4.4)
docile (1.3.2)
+ domain_name (0.5.20190701)
+ unf (>= 0.0.5, < 1.0.0)
dry-inflector (0.1.2)
erubis (2.7.0)
eventmachine (1.2.7)
- excon (0.71.1)
+ excon (0.78.0)
execjs (2.7.0)
factory_bot (4.10.0)
activesupport (>= 3.0.0)
factory_bot_rails (4.10.0)
factory_bot (~> 4.10.0)
railties (>= 3.0.0)
- faraday (1.0.0)
+ faraday (1.0.1)
multipart-post (>= 1.2, < 3)
ffaker (1.32.1)
- ffi (1.12.2)
- figaro (1.1.1)
- thor (~> 0.14)
+ ffi (1.13.1)
+ figaro (1.2.0)
+ thor (>= 0.14.0, < 2)
fission (0.5.0)
CFPropertyList (~> 2.2)
fog (1.41.0)
@@ -258,7 +272,8 @@ GEM
fog-xml (~> 0.1.1)
ipaddress (~> 0.5)
json (>= 1.8, < 2.0)
- fog-aliyun (0.3.5)
+ fog-aliyun (0.3.19)
+ aliyun-sdk (~> 0.8.0)
fog-core
fog-json
ipaddress (~> 0.8)
@@ -304,7 +319,7 @@ GEM
fog-core
fog-json
fog-xml
- fog-internet-archive (0.0.1)
+ fog-internet-archive (0.0.2)
fog-core
fog-json
fog-xml
@@ -361,7 +376,7 @@ GEM
fog-voxel (0.1.0)
fog-core
fog-xml
- fog-vsphere (3.2.1)
+ fog-vsphere (3.4.0)
fog-core
rbvmomi (>= 1.9, < 3)
fog-xenserver (1.0.0)
@@ -371,8 +386,6 @@ GEM
fog-xml (0.1.3)
fog-core
nokogiri (>= 1.5.11, < 2.0.0)
- foreigner (1.7.4)
- activerecord (>= 3.0.0)
formatador (0.2.5)
foundation-icons-sass-rails (3.0.0)
railties (>= 3.1.1)
@@ -384,8 +397,10 @@ GEM
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
geocoder (1.6.4)
- get_process_mem (0.2.5)
+ get_process_mem (0.2.7)
ffi (~> 1.0)
+ globalid (0.4.2)
+ activesupport (>= 4.2.0)
gmaps4rails (2.1.2)
haml (5.2.0)
temple (>= 0.8.0)
@@ -393,7 +408,11 @@ GEM
hashdiff (1.0.1)
highline (2.0.3)
hike (1.2.3)
- i18n (0.6.11)
+ http-accept (1.7.0)
+ http-cookie (1.0.3)
+ domain_name (~> 0.5)
+ i18n (0.9.5)
+ concurrent-ruby (~> 1.0)
i18n-js (3.8.0)
i18n (>= 0.6.6)
immigrant (0.3.6)
@@ -424,6 +443,9 @@ GEM
letter_opener (1.7.0)
launchy (~> 2.2)
libv8 (7.3.492.27.1)
+ loofah (2.7.0)
+ crass (~> 1.0.2)
+ nokogiri (>= 1.5.9)
mail (2.7.1)
mini_mime (>= 0.1.1)
method_source (0.9.2)
@@ -435,14 +457,16 @@ GEM
mini_racer (0.2.15)
libv8 (> 7.3)
minitest (5.14.2)
- money (5.1.1)
- i18n (~> 0.6.0)
+ money (5.0.0)
+ i18n (~> 0.4)
+ json
msgpack (1.3.3)
multi_json (1.15.0)
multi_xml (0.6.0)
multipart-post (2.1.1)
+ netrc (0.11.0)
newrelic_rpm (3.18.1.330)
- nokogiri (1.10.9)
+ nokogiri (1.10.10)
mini_portile2 (~> 2.4.0)
oauth2 (1.4.4)
faraday (>= 0.8, < 2.0)
@@ -451,7 +475,7 @@ GEM
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
oj (3.10.8)
- optimist (3.0.0)
+ optimist (3.0.1)
orm_adapter (0.5.0)
paper_trail (7.1.3)
activerecord (>= 4.0, < 5.2)
@@ -481,7 +505,7 @@ GEM
byebug (~> 11.0)
pry (~> 0.10)
public_suffix (4.0.6)
- rack (1.5.5)
+ rack (1.6.13)
rack-mini-profiler (2.0.2)
rack (>= 1.2.0)
rack-protection (1.5.5)
@@ -491,23 +515,32 @@ GEM
rack
rack-test (0.6.3)
rack (>= 1.0)
- rails (4.1.16)
- actionmailer (= 4.1.16)
- actionpack (= 4.1.16)
- actionview (= 4.1.16)
- activemodel (= 4.1.16)
- activerecord (= 4.1.16)
- activesupport (= 4.1.16)
+ rails (4.2.11.3)
+ actionmailer (= 4.2.11.3)
+ actionpack (= 4.2.11.3)
+ actionview (= 4.2.11.3)
+ activejob (= 4.2.11.3)
+ activemodel (= 4.2.11.3)
+ activerecord (= 4.2.11.3)
+ activesupport (= 4.2.11.3)
bundler (>= 1.3.0, < 2.0)
- railties (= 4.1.16)
- sprockets-rails (~> 2.0)
- rails-i18n (4.0.5)
- i18n (~> 0.6)
+ railties (= 4.2.11.3)
+ sprockets-rails
+ rails-deprecated_sanitizer (1.0.3)
+ activesupport (>= 4.2.0.alpha)
+ rails-dom-testing (1.0.9)
+ activesupport (>= 4.2.0, < 5.0)
+ nokogiri (~> 1.6)
+ rails-deprecated_sanitizer (>= 1.0.1)
+ rails-html-sanitizer (1.3.0)
+ loofah (~> 2.3)
+ rails-i18n (4.0.9)
+ i18n (~> 0.7)
railties (~> 4.0)
rails_safe_tasks (1.0.0)
- railties (4.1.16)
- actionpack (= 4.1.16)
- activesupport (= 4.1.16)
+ railties (4.2.11.3)
+ actionpack (= 4.2.11.3)
+ activesupport (= 4.2.11.3)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rainbow (3.0.0)
@@ -518,10 +551,10 @@ GEM
activerecord (>= 3.0, < 5.2)
activesupport (>= 3.0, < 5.2)
i18n
- rb-fsevent (0.10.3)
+ rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
- rbvmomi (2.2.0)
+ rbvmomi (2.4.1)
builder (~> 3.0)
json (>= 1.8)
nokogiri (~> 1.5)
@@ -529,41 +562,47 @@ GEM
redcarpet (3.5.0)
request_store (1.5.0)
rack (>= 1.4)
- responders (1.1.2)
- railties (>= 3.2, < 4.2)
+ responders (2.4.1)
+ actionpack (>= 4.2.0, < 6.0)
+ railties (>= 4.2.0, < 6.0)
+ rest-client (2.1.0)
+ http-accept (>= 1.7.0, < 2.0)
+ http-cookie (>= 1.0.2, < 2.0)
+ mime-types (>= 1.16, < 4.0)
+ netrc (~> 0.8)
rexml (3.2.4)
- roadie (3.4.0)
+ roadie (3.5.1)
css_parser (~> 1.4)
- nokogiri (~> 1.5)
+ nokogiri (~> 1.8)
roadie-rails (1.3.0)
railties (>= 3.0, < 5.3)
roadie (~> 3.1)
roo (2.8.3)
nokogiri (~> 1)
rubyzip (>= 1.3.0, < 3.0.0)
- rspec (3.9.0)
- rspec-core (~> 3.9.0)
- rspec-expectations (~> 3.9.0)
- rspec-mocks (~> 3.9.0)
- rspec-core (3.9.1)
- rspec-support (~> 3.9.1)
- rspec-expectations (3.9.0)
+ rspec (3.10.0)
+ rspec-core (~> 3.10.0)
+ rspec-expectations (~> 3.10.0)
+ rspec-mocks (~> 3.10.0)
+ rspec-core (3.10.0)
+ rspec-support (~> 3.10.0)
+ rspec-expectations (3.10.0)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.9.0)
- rspec-mocks (3.9.1)
+ rspec-support (~> 3.10.0)
+ rspec-mocks (3.10.0)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.9.0)
- rspec-rails (3.9.1)
- actionpack (>= 3.0)
- activesupport (>= 3.0)
- railties (>= 3.0)
- rspec-core (~> 3.9.0)
- rspec-expectations (~> 3.9.0)
- rspec-mocks (~> 3.9.0)
- rspec-support (~> 3.9.0)
+ rspec-support (~> 3.10.0)
+ rspec-rails (4.0.1)
+ actionpack (>= 4.2)
+ activesupport (>= 4.2)
+ railties (>= 4.2)
+ rspec-core (~> 3.9)
+ rspec-expectations (~> 3.9)
+ rspec-mocks (~> 3.9)
+ rspec-support (~> 3.9)
rspec-retry (0.6.2)
rspec-core (> 3.3)
- rspec-support (3.9.2)
+ rspec-support (3.10.0)
rswag (2.3.1)
rswag-api (= 2.3.1)
rswag-specs (= 2.3.1)
@@ -605,8 +644,8 @@ GEM
selenium-webdriver (3.142.7)
childprocess (>= 0.5, < 4.0)
rubyzip (>= 1.2.2)
- shoulda-matchers (3.1.3)
- activesupport (>= 4.0.0)
+ shoulda-matchers (4.0.1)
+ activesupport (>= 4.2.0)
simplecov (0.17.1)
docile (~> 1.1)
json (>= 1.8, < 3)
@@ -628,9 +667,15 @@ GEM
actionpack (>= 3.0)
activesupport (>= 3.0)
sprockets (>= 2.8, < 4.0)
- state_machine (1.2.0)
+ state_machines (0.5.0)
+ state_machines-activemodel (0.7.1)
+ activemodel (>= 4.1)
+ state_machines (>= 0.5.0)
+ state_machines-activerecord (0.6.0)
+ activerecord (>= 4.1)
+ state_machines-activemodel (>= 0.5.0)
stringex (1.5.1)
- stripe (5.25.0)
+ stripe (5.28.0)
temple (0.8.2)
test-prof (0.7.5)
test-unit (3.3.6)
@@ -643,6 +688,9 @@ GEM
thread_safe (~> 0.1)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
unicorn (5.7.0)
kgio (~> 2.6)
@@ -670,8 +718,8 @@ GEM
wkhtmltopdf-binary (0.12.5)
xml-simple (1.1.5)
xmlrpc (0.3.0)
- xpath (2.1.0)
- nokogiri (~> 1.3)
+ xpath (3.2.0)
+ nokogiri (~> 1.8)
PLATFORMS
ruby
@@ -718,7 +766,6 @@ DEPENDENCIES
factory_bot_rails (= 4.10.0)
ffaker (~> 1.16)
figaro
- foreigner
foundation-icons-sass-rails
foundation-rails (= 5.5.2.1)
fuubar (~> 2.5.0)
@@ -726,20 +773,20 @@ DEPENDENCIES
gmaps4rails
haml
highline (= 2.0.3)
- i18n (~> 0.6.11)
+ i18n
i18n-js (~> 3.8.0)
immigrant
jquery-migrate-rails
jquery-rails (= 3.1.5)
jquery-ui-rails (~> 4.2)
- json (>= 1.7.7)
+ json
json_spec (~> 1.1.4)
jwt (~> 2.2)
kaminari (~> 0.17.0)
knapsack
letter_opener (>= 1.4.1)
mini_racer (= 0.2.15)
- money (= 5.1.1)
+ money (< 6.1.0)
newrelic_rpm (~> 3.0)
oauth2 (~> 1.4.4)
ofn-qz!
@@ -754,11 +801,12 @@ DEPENDENCIES
rack-mini-profiler (< 3.0.0)
rack-rewrite
rack-ssl
- rails (~> 4.1.16)
- rails-i18n (~> 4.0)
+ rails (~> 4.2)
+ rails-i18n
rails_safe_tasks (~> 1.0)
ransack (~> 1.8.10)
redcarpet
+ responders (~> 2.0)
roadie-rails (~> 1.3.0)
roo (~> 2.8.3)
rspec-rails (>= 3.5.2)
@@ -776,7 +824,7 @@ DEPENDENCIES
spree_paypal_express!
spring
spring-commands-rspec
- state_machine (= 1.2.0)
+ state_machines-activerecord
stringex (~> 1.5.1)
stripe
test-prof
diff --git a/app/controllers/admin/enterprises_controller.rb b/app/controllers/admin/enterprises_controller.rb
index 93e893b6e3..dc741f1a8e 100644
--- a/app/controllers/admin/enterprises_controller.rb
+++ b/app/controllers/admin/enterprises_controller.rb
@@ -81,7 +81,7 @@ module Admin
end
def bulk_update
- @enterprise_set = EnterpriseSet.new(collection, params[:enterprise_set])
+ @enterprise_set = EnterpriseSet.new(collection, bulk_params)
if @enterprise_set.save
flash[:success] = I18n.t(:enterprise_bulk_update_success_notice)
@@ -214,7 +214,8 @@ module Admin
rule = @object.tag_rules.find_by(id: attrs.delete(:id)) ||
attrs[:type].constantize.new(enterprise: @object)
create_calculator_for(rule, attrs) if rule.type == "TagRule::DiscountOrder" && rule.calculator.nil?
- rule.update(attrs)
+
+ rule.update(attrs.permit(PermittedAttributes::TagRules.attributes))
end
end
end
@@ -319,6 +320,12 @@ module Admin
PermittedAttributes::Enterprise.new(params).call
end
+ def bulk_params
+ params.require(:enterprise_set).permit(
+ collection_attributes: PermittedAttributes::Enterprise.attributes
+ )
+ end
+
# Used in ResourceController#create
def permitted_resource_params
enterprise_params
diff --git a/app/controllers/admin/order_cycles_controller.rb b/app/controllers/admin/order_cycles_controller.rb
index a28060ea5b..3900ee0d7c 100644
--- a/app/controllers/admin/order_cycles_controller.rb
+++ b/app/controllers/admin/order_cycles_controller.rb
@@ -91,7 +91,7 @@ module Admin
# Send notifications to all producers who are part of the order cycle
def notify_producers
- Delayed::Job.enqueue OrderCycleNotificationJob.new(params[:id].to_i)
+ OrderCycleNotificationJob.perform_later params[:id].to_i
redirect_to main_app.admin_order_cycles_path,
notice: I18n.t(:order_cycles_email_to_producers_notice)
diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb
index 2641cdaf44..493b13665e 100644
--- a/app/controllers/api/base_controller.rb
+++ b/app/controllers/api/base_controller.rb
@@ -5,11 +5,11 @@ require "spree/core/controller_helpers/ssl"
module Api
class BaseController < ActionController::Metal
include ActionController::StrongParameters
+ include ActionController::RespondWith
include Spree::Api::ControllerSetup
include Spree::Core::ControllerHelpers::SSL
include ::ActionController::Head
-
- respond_to :json
+ include ::ActionController::ConditionalGet
attr_accessor :current_api_user
diff --git a/app/controllers/api/products_controller.rb b/app/controllers/api/products_controller.rb
index f070bba15e..e59b64aba1 100644
--- a/app/controllers/api/products_controller.rb
+++ b/app/controllers/api/products_controller.rb
@@ -145,7 +145,7 @@ module Api
end
def query_params_with_defaults
- params[:q].to_h.reverse_merge(s: 'created_at desc')
+ (params[:q] || {}).reverse_merge(s: 'created_at desc')
end
def pagination_data(results)
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index f3ddff301c..c4ab6b9bed 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,7 +1,13 @@
+# frozen_string_literal: true
+
+require "application_responder"
require 'open_food_network/referer_parser'
require_dependency 'spree/authentication_helpers'
class ApplicationController < ActionController::Base
+ self.responder = ApplicationResponder
+ respond_to :html
+
protect_from_forgery
prepend_before_action :restrict_iframes
@@ -10,6 +16,12 @@ class ApplicationController < ActionController::Base
include EnterprisesHelper
include Spree::AuthenticationHelpers
+ # Helper for debugging strong_parameters
+ rescue_from ActiveModel::ForbiddenAttributesError, with: :print_params
+ def print_params
+ raise ActiveModel::ForbiddenAttributesError, params.to_s
+ end
+
def redirect_to(options = {}, response_status = {})
::Rails.logger.error("Redirected by #{begin
caller(1).first
diff --git a/app/controllers/spree/admin/products_controller.rb b/app/controllers/spree/admin/products_controller.rb
index 42d4006680..a0c8452aac 100644
--- a/app/controllers/spree/admin/products_controller.rb
+++ b/app/controllers/spree/admin/products_controller.rb
@@ -179,7 +179,7 @@ module Spree
end
def bulk_index_query(params)
- params[:filters].to_h.merge(page: params[:page], per_page: params[:per_page])
+ (params[:filters] || {}).merge(page: params[:page], per_page: params[:per_page])
end
def load_form_data
diff --git a/app/helpers/checkout_helper.rb b/app/helpers/checkout_helper.rb
index 72779dd4ec..4ae026bef7 100644
--- a/app/helpers/checkout_helper.rb
+++ b/app/helpers/checkout_helper.rb
@@ -18,7 +18,9 @@ module CheckoutHelper
enterprise_fee_adjustments = adjustments.select { |a| a.originator_type == 'EnterpriseFee' && a.source_type != 'Spree::LineItem' }
adjustments.reject! { |a| a.originator_type == 'EnterpriseFee' && a.source_type != 'Spree::LineItem' }
unless exclude.include? :admin_and_handling
- adjustments << Spree::Adjustment.new(label: I18n.t(:orders_form_admin), amount: enterprise_fee_adjustments.sum(:amount))
+ adjustments << Spree::Adjustment.new(
+ label: I18n.t(:orders_form_admin), amount: enterprise_fee_adjustments.map(&:amount).sum
+ )
end
adjustments
@@ -26,7 +28,7 @@ module CheckoutHelper
def display_checkout_admin_and_handling_adjustments_total_for(order)
adjustments = order.adjustments.eligible.where('originator_type = ? AND source_type != ? ', 'EnterpriseFee', 'Spree::LineItem')
- Spree::Money.new adjustments.sum(:amount), currency: order.currency
+ Spree::Money.new adjustments.map(&:amount).sum, currency: order.currency
end
def checkout_line_item_adjustments(order)
@@ -34,7 +36,7 @@ module CheckoutHelper
end
def checkout_subtotal(order)
- order.item_total + checkout_line_item_adjustments(order).sum(:amount)
+ order.item_total + checkout_line_item_adjustments(order).map(&:amount).sum
end
def display_checkout_subtotal(order)
diff --git a/app/helpers/html_helper.rb b/app/helpers/html_helper.rb
deleted file mode 100644
index 3342a8901a..0000000000
--- a/app/helpers/html_helper.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-module HtmlHelper
- def strip_html(html)
- strip_surrounding_whitespace substitute_entities strip_tags add_linebreaks html
- end
-
- def substitute_entities(html)
- html.andand.gsub(/ /i, ' ').andand.gsub(/&/i, '&')
- end
-
- def add_linebreaks(html)
- # I know Cthulu is coming for me. Forgive me.
- # http://stackoverflow.com/a/1732454/2720566
- html.
- andand.gsub(%r{]>|
|}, "\\1\n\n").
- andand.gsub(/
]*>/, "\\1\n")
- end
-
- def strip_surrounding_whitespace(html)
- html.andand.strip
- end
-end
diff --git a/app/jobs/bulk_invoice_job.rb b/app/jobs/bulk_invoice_job.rb
new file mode 100644
index 0000000000..7335c552d6
--- /dev/null
+++ b/app/jobs/bulk_invoice_job.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class BulkInvoiceJob < ActiveJob::Base
+ def perform(order_ids, filepath)
+ pdf = CombinePDF.new
+
+ orders_from(order_ids).each do |order|
+ invoice = renderer.render_to_string(order)
+
+ pdf << CombinePDF.parse(invoice)
+ end
+
+ pdf.save filepath
+ end
+
+ private
+
+ def orders_from(order_ids)
+ Spree::Order.where(id: order_ids).order("completed_at DESC")
+ end
+
+ def renderer
+ @renderer ||= InvoiceRenderer.new
+ end
+end
diff --git a/app/jobs/confirm_order_job.rb b/app/jobs/confirm_order_job.rb
index e16df2d99a..1a42b3041b 100644
--- a/app/jobs/confirm_order_job.rb
+++ b/app/jobs/confirm_order_job.rb
@@ -1,5 +1,7 @@
-ConfirmOrderJob = Struct.new(:order_id) do
- def perform
+# frozen_string_literal: true
+
+class ConfirmOrderJob < ActiveJob::Base
+ def perform(order_id)
Spree::OrderMailer.confirm_email_for_customer(order_id).deliver
Spree::OrderMailer.confirm_email_for_shop(order_id).deliver
end
diff --git a/app/jobs/confirm_signup_job.rb b/app/jobs/confirm_signup_job.rb
index d16aee714c..bcb70c1f8c 100644
--- a/app/jobs/confirm_signup_job.rb
+++ b/app/jobs/confirm_signup_job.rb
@@ -1,5 +1,7 @@
-ConfirmSignupJob = Struct.new(:user_id) do
- def perform
+# frozen_string_literal: true
+
+class ConfirmSignupJob < ActiveJob::Base
+ def perform(user_id)
user = Spree::User.find user_id
Spree::UserMailer.signup_confirmation(user).deliver
end
diff --git a/app/jobs/order_cycle_notification_job.rb b/app/jobs/order_cycle_notification_job.rb
index d4efa6de13..e3a2f4d8ac 100644
--- a/app/jobs/order_cycle_notification_job.rb
+++ b/app/jobs/order_cycle_notification_job.rb
@@ -1,6 +1,8 @@
+# frozen_string_literal: true
+
# Delivers an email with a report of the order cycle to each of its suppliers
-OrderCycleNotificationJob = Struct.new(:order_cycle_id) do
- def perform
+class OrderCycleNotificationJob < ActiveJob::Base
+ def perform(order_cycle_id)
order_cycle = OrderCycle.find(order_cycle_id)
order_cycle.suppliers.each do |supplier|
ProducerMailer.order_cycle_report(supplier, order_cycle).deliver
diff --git a/app/jobs/welcome_enterprise_job.rb b/app/jobs/welcome_enterprise_job.rb
index 6665af9d5a..26bd581b88 100644
--- a/app/jobs/welcome_enterprise_job.rb
+++ b/app/jobs/welcome_enterprise_job.rb
@@ -1,5 +1,7 @@
-WelcomeEnterpriseJob = Struct.new(:enterprise_id) do
- def perform
+# frozen_string_literal: true
+
+class WelcomeEnterpriseJob < ActiveJob::Base
+ def perform(enterprise_id)
enterprise = Enterprise.find enterprise_id
EnterpriseMailer.welcome(enterprise).deliver
end
diff --git a/app/mailers/spree/order_mailer.rb b/app/mailers/spree/order_mailer.rb
index 844a3fac41..953a092bc0 100644
--- a/app/mailers/spree/order_mailer.rb
+++ b/app/mailers/spree/order_mailer.rb
@@ -2,7 +2,6 @@
module Spree
class OrderMailer < BaseMailer
- helper HtmlHelper
helper ::CheckoutHelper
helper SpreeCurrencyHelper
helper Spree::Admin::PaymentsHelper
diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb
index 5e55dd0f9a..4c7aa40bd8 100644
--- a/app/models/enterprise.rb
+++ b/app/models/enterprise.rb
@@ -132,7 +132,7 @@ class Enterprise < ActiveRecord::Base
where(nil)
end
}
- scope :is_primary_producer, -> { where(is_primary_producer: true) }
+ scope :is_primary_producer, -> { where("enterprises.is_primary_producer IS TRUE") }
scope :is_distributor, -> { where('sells != ?', 'none') }
scope :is_hub, -> { where(sells: 'any') }
scope :supplying_variant_in, lambda { |variants|
@@ -400,7 +400,7 @@ class Enterprise < ActiveRecord::Base
end
def send_welcome_email
- Delayed::Job.enqueue WelcomeEnterpriseJob.new(id)
+ WelcomeEnterpriseJob.perform_later(id)
end
def strip_url(url)
diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb
index 3d844aa8e7..029f5bb602 100644
--- a/app/models/spree/order.rb
+++ b/app/models/spree/order.rb
@@ -466,7 +466,7 @@ module Spree
def deliver_order_confirmation_email
return if subscription.present?
- Delayed::Job.enqueue ConfirmOrderJob.new(id)
+ ConfirmOrderJob.perform_later(id)
end
# Helper methods for checkout steps
diff --git a/app/models/spree/order/checkout.rb b/app/models/spree/order/checkout.rb
index 82efef81e7..39992a5701 100644
--- a/app/models/spree/order/checkout.rb
+++ b/app/models/spree/order/checkout.rb
@@ -34,7 +34,7 @@ module Spree
klass = self
# To avoid a ton of warnings when the state machine is re-defined
- StateMachine::Machine.ignore_method_conflicts = true
+ StateMachines::Machine.ignore_method_conflicts = true
# To avoid multiple occurrences of the same transition being defined
# On first definition, state_machines will not be defined
state_machines.clear if respond_to?(:state_machines)
diff --git a/app/models/spree/preferences/store.rb b/app/models/spree/preferences/store.rb
index cb30d31eaa..5940fdf4a3 100644
--- a/app/models/spree/preferences/store.rb
+++ b/app/models/spree/preferences/store.rb
@@ -61,6 +61,8 @@ module Spree
end
def delete(key)
+ return if key.nil?
+
@cache.delete(key)
destroy(key)
end
diff --git a/app/models/spree/user.rb b/app/models/spree/user.rb
index 717698e7b8..c07e3559cd 100644
--- a/app/models/spree/user.rb
+++ b/app/models/spree/user.rb
@@ -58,9 +58,11 @@ module Spree
has_spree_role?('admin')
end
- # handle_asynchronously will define send_reset_password_instructions_with_delay.
- # If handle_asynchronously is called twice, we get an infinite job loop.
- handle_asynchronously :send_reset_password_instructions unless method_defined? :send_reset_password_instructions_with_delay
+ # Send devise-based user emails asyncronously via ActiveJob
+ # See: https://github.com/heartcombo/devise/tree/v3.5.10#activejob-integration
+ def send_devise_notification(notification, *args)
+ devise_mailer.public_send(notification, self, *args).deliver_later
+ end
def regenerate_reset_password_token
set_reset_password_token
@@ -101,7 +103,7 @@ module Spree
end
def send_signup_confirmation
- Delayed::Job.enqueue ConfirmSignupJob.new(id)
+ ConfirmSignupJob.perform_later(id)
end
def associate_customers
diff --git a/app/services/bulk_invoice_service.rb b/app/services/bulk_invoice_service.rb
index ab69df03ca..6776ad448a 100644
--- a/app/services/bulk_invoice_service.rb
+++ b/app/services/bulk_invoice_service.rb
@@ -6,17 +6,8 @@ class BulkInvoiceService
end
def start_pdf_job(order_ids)
- pdf = CombinePDF.new
-
- orders_from(order_ids).each do |order|
- invoice = renderer.render_to_string(order)
-
- pdf << CombinePDF.parse(invoice)
- end
-
- pdf.save "#{file_directory}/#{@id}.pdf"
+ BulkInvoiceJob.perform_later order_ids, "#{file_directory}/#{@id}.pdf"
end
- handle_asynchronously :start_pdf_job
def invoice_created?(invoice_id)
File.exist? filepath(invoice_id)
@@ -28,10 +19,6 @@ class BulkInvoiceService
private
- def orders_from(order_ids)
- Spree::Order.where(id: order_ids).order("completed_at DESC")
- end
-
def new_invoice_id
Time.zone.now.to_i.to_s
end
@@ -40,10 +27,6 @@ class BulkInvoiceService
'tmp/invoices'
end
- def renderer
- @renderer ||= InvoiceRenderer.new
- end
-
def file_directory
Dir.mkdir(directory) unless File.exist?(directory)
directory
diff --git a/app/services/invoice_renderer.rb b/app/services/invoice_renderer.rb
index e3613dccbe..2f8663d24c 100644
--- a/app/services/invoice_renderer.rb
+++ b/app/services/invoice_renderer.rb
@@ -1,5 +1,6 @@
class InvoiceRenderer
def render_to_string(order)
+ renderer.instance_variable_set(:@order, order)
renderer.render_to_string(args(order))
end
@@ -8,15 +9,14 @@ class InvoiceRenderer
pdf: "invoice-#{order.number}.pdf",
template: invoice_template,
formats: [:html],
- encoding: "UTF-8",
- locals: { :@order => order }
+ encoding: "UTF-8"
}
end
private
def renderer
- ApplicationController.new
+ @renderer ||= ApplicationController.new
end
def invoice_template
diff --git a/app/services/permitted_attributes/enterprise.rb b/app/services/permitted_attributes/enterprise.rb
index 0516c9fe3e..1f20a62b13 100644
--- a/app/services/permitted_attributes/enterprise.rb
+++ b/app/services/permitted_attributes/enterprise.rb
@@ -9,19 +9,19 @@ module PermittedAttributes
def call
return @params[:enterprise] if @params[:enterprise].blank?
- @params.require(:enterprise).permit(
- basic_permitted_attributes + [
- group_ids: [], user_ids: [],
- shipping_method_ids: [], payment_method_ids: [],
- address_attributes: PermittedAttributes::Address.attributes,
- producer_properties_attributes: [:id, :property_name, :value, :_destroy]
- ]
- )
+ @params.require(:enterprise).permit(self.class.attributes)
end
- private
+ def self.attributes
+ basic_permitted_attributes + [
+ group_ids: [], user_ids: [],
+ shipping_method_ids: [], payment_method_ids: [],
+ address_attributes: PermittedAttributes::Address.attributes,
+ producer_properties_attributes: [:id, :property_name, :value, :_destroy]
+ ]
+ end
- def basic_permitted_attributes
+ def self.basic_permitted_attributes
[
:id, :name, :visible, :permalink, :owner_id, :contact_name, :email_address, :phone,
:is_primary_producer, :sells, :website, :facebook, :instagram, :linkedin, :twitter,
diff --git a/app/services/permitted_attributes/tag_rules.rb b/app/services/permitted_attributes/tag_rules.rb
new file mode 100644
index 0000000000..6f150c7b34
--- /dev/null
+++ b/app/services/permitted_attributes/tag_rules.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+module PermittedAttributes
+ class TagRules
+ def self.attributes
+ [
+ :id, :type, :priority, :is_default, :preferred_customer_tags, :preferred_exchange_tags,
+ :preferred_matched_order_cycles_visibility, :preferred_shipping_method_tags,
+ :preferred_matched_shipping_methods_visibility, :preferred_payment_method_tags,
+ :preferred_matched_payment_methods_visibility, :preferred_variant_tags,
+ :preferred_matched_variants_visibility, :calculator_type,
+ { calculator_attributes: [:id, :preferred_flat_percent] }
+ ]
+ end
+ end
+end
diff --git a/app/views/spree/admin/adjustments/_edit_form.html.haml b/app/views/spree/admin/adjustments/_edit_form.html.haml
index 5ca71ff9f7..918a9b5b6f 100644
--- a/app/views/spree/admin/adjustments/_edit_form.html.haml
+++ b/app/views/spree/admin/adjustments/_edit_form.html.haml
@@ -8,7 +8,8 @@
.four.columns
= f.field_container :included_tax do
= f.label :included_tax, t(:included_tax)
- = text_field :adjustment, :included_tax, disabled: true, class: 'fullwidth'
+ = f.text_field :included_tax, disabled: true, class: 'fullwidth',
+ value: number_with_precision(f.object.included_tax, precision: 2)
= f.error_message_on :included_tax
.omega.four.columns
diff --git a/config/application.rb b/config/application.rb
index 9377984296..d69b4cdf34 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -199,5 +199,9 @@ module Openfoodnetwork
config.assets.precompile += ['*.jpg', '*.jpeg', '*.png', '*.gif' '*.svg']
config.active_support.escape_html_entities_in_json = true
+
+ config.active_job.queue_adapter = :delayed_job
+
+ config.active_record.raise_in_transactional_callbacks = true
end
end
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 9c61ebaab0..7541e78ae1 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -44,7 +44,7 @@ Openfoodnetwork::Application.configure do
# Use a different cache store in production
memcached_value_max_megabytes = ENV.fetch("MEMCACHED_VALUE_MAX_MEGABYTES", 1).to_i
memcached_value_max_bytes = memcached_value_max_megabytes * 1024 * 1024
- config.cache_store = :dalli_store, { value_max_bytes: memcached_value_max_bytes }
+ config.cache_store = :mem_cache_store, { value_max_bytes: memcached_value_max_bytes }
# Enable serving of images, stylesheets, and JavaScripts from an asset server
# config.action_controller.asset_host = "http://assets.example.com"
diff --git a/config/environments/staging.rb b/config/environments/staging.rb
index 9c61ebaab0..7541e78ae1 100644
--- a/config/environments/staging.rb
+++ b/config/environments/staging.rb
@@ -44,7 +44,7 @@ Openfoodnetwork::Application.configure do
# Use a different cache store in production
memcached_value_max_megabytes = ENV.fetch("MEMCACHED_VALUE_MAX_MEGABYTES", 1).to_i
memcached_value_max_bytes = memcached_value_max_megabytes * 1024 * 1024
- config.cache_store = :dalli_store, { value_max_bytes: memcached_value_max_bytes }
+ config.cache_store = :mem_cache_store, { value_max_bytes: memcached_value_max_bytes }
# Enable serving of images, stylesheets, and JavaScripts from an asset server
# config.action_controller.asset_host = "http://assets.example.com"
diff --git a/config/environments/test.rb b/config/environments/test.rb
index d6ea342589..f84b7f5f7f 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -51,6 +51,8 @@ Openfoodnetwork::Application.configure do
require 'open_food_network/rack_request_blocker'
# Make sure the middleware is inserted first in middleware chain
config.middleware.insert_before('ActionDispatch::Static', 'RackRequestBlocker')
+
+ config.active_job.queue_adapter = :test
end
# Allows us to use _url helpers in Rspec
diff --git a/config/initializers/paranoia.rb b/config/initializers/paranoia.rb
new file mode 100644
index 0000000000..0789eb4e95
--- /dev/null
+++ b/config/initializers/paranoia.rb
@@ -0,0 +1,15 @@
+module Paranoia
+ def paranoia_delete
+ raise ActiveRecord::ReadOnlyRecord, "#{self.class} is marked as readonly" if readonly?
+ if persisted?
+ # if a transaction exists, add the record so that after_commit
+ # callbacks can be run
+ add_to_transaction unless self.class.connection.current_transaction.closed?
+ update_columns(paranoia_destroy_attributes)
+ elsif !frozen?
+ assign_attributes(paranoia_destroy_attributes)
+ end
+ self
+ end
+ alias_method :delete, :paranoia_delete
+end
diff --git a/config/initializers/state_machine_patch.rb b/config/initializers/state_machine_patch.rb
deleted file mode 100644
index 76e984526a..0000000000
--- a/config/initializers/state_machine_patch.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-module StateMachine
- module Integrations
- module ActiveModel
- public :around_validation
- end
-
- module ActiveRecord
- public :around_save
- end
- end
-end
diff --git a/db/schema.rb b/db/schema.rb
index 50d6f271f4..e71191e567 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -16,29 +16,29 @@ ActiveRecord::Schema.define(version: 20201113163227) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
- create_table "adjustment_metadata", force: true do |t|
+ create_table "adjustment_metadata", force: :cascade do |t|
t.integer "adjustment_id"
t.integer "enterprise_id"
- t.string "fee_name"
- t.string "fee_type"
- t.string "enterprise_role"
+ t.string "fee_name", limit: 255
+ t.string "fee_type", limit: 255
+ t.string "enterprise_role", limit: 255
end
add_index "adjustment_metadata", ["adjustment_id"], name: "index_adjustment_metadata_on_adjustment_id", using: :btree
add_index "adjustment_metadata", ["enterprise_id"], name: "index_adjustment_metadata_on_enterprise_id", using: :btree
- create_table "column_preferences", force: true do |t|
- t.integer "user_id", null: false
- t.string "action_name", null: false
- t.string "column_name", null: false
- t.boolean "visible", null: false
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ create_table "column_preferences", force: :cascade do |t|
+ t.integer "user_id", null: false
+ t.string "action_name", limit: 255, null: false
+ t.string "column_name", limit: 255, null: false
+ t.boolean "visible", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
add_index "column_preferences", ["user_id", "action_name", "column_name"], name: "index_column_prefs_on_user_id_and_action_name_and_column_name", unique: true, using: :btree
- create_table "coordinator_fees", force: true do |t|
+ create_table "coordinator_fees", force: :cascade do |t|
t.integer "order_cycle_id"
t.integer "enterprise_fee_id"
end
@@ -46,17 +46,17 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "coordinator_fees", ["enterprise_fee_id"], name: "index_coordinator_fees_on_enterprise_fee_id", using: :btree
add_index "coordinator_fees", ["order_cycle_id"], name: "index_coordinator_fees_on_order_cycle_id", using: :btree
- create_table "customers", force: true do |t|
- t.string "email", null: false
- t.integer "enterprise_id", null: false
- t.string "code"
+ create_table "customers", force: :cascade do |t|
+ t.string "email", limit: 255, null: false
+ t.integer "enterprise_id", null: false
+ t.string "code", limit: 255
t.integer "user_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.integer "bill_address_id"
t.integer "ship_address_id"
- t.string "name"
- t.boolean "allow_charges", default: false, null: false
+ t.string "name", limit: 255
+ t.boolean "allow_charges", default: false, null: false
t.datetime "terms_and_conditions_accepted_at"
end
@@ -66,23 +66,23 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "customers", ["ship_address_id"], name: "index_customers_on_ship_address_id", using: :btree
add_index "customers", ["user_id"], name: "index_customers_on_user_id", using: :btree
- create_table "delayed_jobs", force: true do |t|
- t.integer "priority", default: 0, null: false
- t.integer "attempts", default: 0, null: false
- t.text "handler", null: false
+ create_table "delayed_jobs", force: :cascade do |t|
+ t.integer "priority", default: 0, null: false
+ t.integer "attempts", default: 0, null: false
+ t.text "handler", null: false
t.text "last_error"
t.datetime "run_at"
t.datetime "locked_at"
t.datetime "failed_at"
- t.string "locked_by"
- t.string "queue"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.string "locked_by", limit: 255
+ t.string "queue", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree
- create_table "distributors_payment_methods", id: false, force: true do |t|
+ create_table "distributors_payment_methods", id: false, force: :cascade do |t|
t.integer "distributor_id"
t.integer "payment_method_id"
end
@@ -90,7 +90,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "distributors_payment_methods", ["distributor_id"], name: "index_distributors_payment_methods_on_distributor_id", using: :btree
add_index "distributors_payment_methods", ["payment_method_id"], name: "index_distributors_payment_methods_on_payment_method_id", using: :btree
- create_table "distributors_shipping_methods", force: true do |t|
+ create_table "distributors_shipping_methods", force: :cascade do |t|
t.integer "distributor_id"
t.integer "shipping_method_id"
t.datetime "created_at", null: false
@@ -100,49 +100,49 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "distributors_shipping_methods", ["distributor_id"], name: "index_distributors_shipping_methods_on_distributor_id", using: :btree
add_index "distributors_shipping_methods", ["shipping_method_id"], name: "index_distributors_shipping_methods_on_shipping_method_id", using: :btree
- create_table "enterprise_fees", force: true do |t|
+ create_table "enterprise_fees", force: :cascade do |t|
t.integer "enterprise_id"
- t.string "fee_type"
- t.string "name"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.string "fee_type", limit: 255
+ t.string "name", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.integer "tax_category_id"
- t.boolean "inherits_tax_category", default: false, null: false
+ t.boolean "inherits_tax_category", default: false, null: false
end
add_index "enterprise_fees", ["enterprise_id"], name: "index_enterprise_fees_on_enterprise_id", using: :btree
add_index "enterprise_fees", ["tax_category_id"], name: "index_enterprise_fees_on_tax_category_id", using: :btree
- create_table "enterprise_groups", force: true do |t|
- t.string "name"
+ create_table "enterprise_groups", force: :cascade do |t|
+ t.string "name", limit: 255
t.boolean "on_front_page"
t.integer "position"
- t.string "promo_image_file_name"
- t.string "promo_image_content_type"
+ t.string "promo_image_file_name", limit: 255
+ t.string "promo_image_content_type", limit: 255
t.integer "promo_image_file_size"
t.datetime "promo_image_updated_at"
t.text "description"
t.text "long_description"
- t.string "logo_file_name"
- t.string "logo_content_type"
+ t.string "logo_file_name", limit: 255
+ t.string "logo_content_type", limit: 255
t.integer "logo_file_size"
t.datetime "logo_updated_at"
t.integer "address_id"
- t.string "email", default: "", null: false
- t.string "website", default: "", null: false
- t.string "facebook", default: "", null: false
- t.string "instagram", default: "", null: false
- t.string "linkedin", default: "", null: false
- t.string "twitter", default: "", null: false
+ t.string "email", limit: 255, default: "", null: false
+ t.string "website", limit: 255, default: "", null: false
+ t.string "facebook", limit: 255, default: "", null: false
+ t.string "instagram", limit: 255, default: "", null: false
+ t.string "linkedin", limit: 255, default: "", null: false
+ t.string "twitter", limit: 255, default: "", null: false
t.integer "owner_id"
- t.string "permalink", null: false
+ t.string "permalink", limit: 255, null: false
end
add_index "enterprise_groups", ["address_id"], name: "index_enterprise_groups_on_address_id", using: :btree
add_index "enterprise_groups", ["owner_id"], name: "index_enterprise_groups_on_owner_id", using: :btree
add_index "enterprise_groups", ["permalink"], name: "index_enterprise_groups_on_permalink", unique: true, using: :btree
- create_table "enterprise_groups_enterprises", id: false, force: true do |t|
+ create_table "enterprise_groups_enterprises", id: false, force: :cascade do |t|
t.integer "enterprise_group_id"
t.integer "enterprise_id"
end
@@ -150,14 +150,14 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "enterprise_groups_enterprises", ["enterprise_group_id"], name: "index_enterprise_groups_enterprises_on_enterprise_group_id", using: :btree
add_index "enterprise_groups_enterprises", ["enterprise_id"], name: "index_enterprise_groups_enterprises_on_enterprise_id", using: :btree
- create_table "enterprise_relationship_permissions", force: true do |t|
+ create_table "enterprise_relationship_permissions", force: :cascade do |t|
t.integer "enterprise_relationship_id"
- t.string "name", null: false
+ t.string "name", limit: 255, null: false
end
add_index "enterprise_relationship_permissions", ["enterprise_relationship_id"], name: "index_erp_on_erid", using: :btree
- create_table "enterprise_relationships", force: true do |t|
+ create_table "enterprise_relationships", force: :cascade do |t|
t.integer "parent_id"
t.integer "child_id"
end
@@ -166,7 +166,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "enterprise_relationships", ["parent_id", "child_id"], name: "index_enterprise_relationships_on_parent_id_and_child_id", unique: true, using: :btree
add_index "enterprise_relationships", ["parent_id"], name: "index_enterprise_relationships_on_parent_id", using: :btree
- create_table "enterprise_roles", force: true do |t|
+ create_table "enterprise_roles", force: :cascade do |t|
t.integer "user_id"
t.integer "enterprise_id"
t.boolean "receives_notifications", default: false
@@ -177,49 +177,49 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "enterprise_roles", ["user_id", "enterprise_id"], name: "index_enterprise_roles_on_user_id_and_enterprise_id", unique: true, using: :btree
add_index "enterprise_roles", ["user_id"], name: "index_enterprise_roles_on_user_id", using: :btree
- create_table "enterprises", force: true do |t|
- t.string "name"
+ create_table "enterprises", force: :cascade do |t|
+ t.string "name", limit: 255
t.text "description"
t.text "long_description"
t.boolean "is_primary_producer"
- t.string "contact_name"
- t.string "phone"
- t.string "website"
- t.string "twitter"
- t.string "abn"
- t.string "acn"
+ t.string "contact_name", limit: 255
+ t.string "phone", limit: 255
+ t.string "website", limit: 255
+ t.string "twitter", limit: 255
+ t.string "abn", limit: 255
+ t.string "acn", limit: 255
t.integer "address_id"
t.text "pickup_times"
- t.string "next_collection_at"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.string "next_collection_at", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.text "distributor_info"
- t.string "logo_file_name"
- t.string "logo_content_type"
+ t.string "logo_file_name", limit: 255
+ t.string "logo_content_type", limit: 255
t.integer "logo_file_size"
t.datetime "logo_updated_at"
- t.string "promo_image_file_name"
- t.string "promo_image_content_type"
+ t.string "promo_image_file_name", limit: 255
+ t.string "promo_image_content_type", limit: 255
t.integer "promo_image_file_size"
t.datetime "promo_image_updated_at"
- t.boolean "visible", default: true
- t.string "facebook"
- t.string "instagram"
- t.string "linkedin"
- t.integer "owner_id", null: false
- t.string "sells", default: "none", null: false
- t.boolean "producer_profile_only", default: false
- t.string "permalink", null: false
- t.boolean "charges_sales_tax", default: false, null: false
- t.string "email_address"
- t.boolean "require_login", default: false, null: false
- t.boolean "allow_guest_orders", default: true, null: false
+ t.boolean "visible", default: true
+ t.string "facebook", limit: 255
+ t.string "instagram", limit: 255
+ t.string "linkedin", limit: 255
+ t.integer "owner_id", null: false
+ t.string "sells", limit: 255, default: "none", null: false
+ t.boolean "producer_profile_only", default: false
+ t.string "permalink", limit: 255, null: false
+ t.boolean "charges_sales_tax", default: false, null: false
+ t.string "email_address", limit: 255
+ t.boolean "require_login", default: false, null: false
+ t.boolean "allow_guest_orders", default: true, null: false
t.text "invoice_text"
- t.boolean "display_invoice_logo", default: false
- t.boolean "allow_order_changes", default: false, null: false
- t.boolean "enable_subscriptions", default: false, null: false
- t.string "terms_and_conditions_file_name"
- t.string "terms_and_conditions_content_type"
+ t.boolean "display_invoice_logo", default: false
+ t.boolean "allow_order_changes", default: false, null: false
+ t.boolean "enable_subscriptions", default: false, null: false
+ t.string "terms_and_conditions_file_name", limit: 255
+ t.string "terms_and_conditions_content_type", limit: 255
t.integer "terms_and_conditions_file_size"
t.datetime "terms_and_conditions_updated_at"
end
@@ -231,7 +231,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "enterprises", ["permalink"], name: "index_enterprises_on_permalink", unique: true, using: :btree
add_index "enterprises", ["sells"], name: "index_enterprises_on_sells", using: :btree
- create_table "exchange_fees", force: true do |t|
+ create_table "exchange_fees", force: :cascade do |t|
t.integer "exchange_id"
t.integer "enterprise_fee_id"
t.datetime "created_at", null: false
@@ -241,7 +241,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "exchange_fees", ["enterprise_fee_id"], name: "index_exchange_fees_on_enterprise_fee_id", using: :btree
add_index "exchange_fees", ["exchange_id"], name: "index_exchange_fees_on_exchange_id", using: :btree
- create_table "exchange_variants", force: true do |t|
+ create_table "exchange_variants", force: :cascade do |t|
t.integer "exchange_id"
t.integer "variant_id"
t.datetime "created_at", null: false
@@ -251,7 +251,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "exchange_variants", ["exchange_id"], name: "index_exchange_variants_on_exchange_id", using: :btree
add_index "exchange_variants", ["variant_id"], name: "index_exchange_variants_on_variant_id", using: :btree
- create_table "exchanges", force: true do |t|
+ create_table "exchanges", force: :cascade do |t|
t.integer "order_cycle_id"
t.integer "sender_id"
t.integer "receiver_id"
@@ -267,7 +267,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "exchanges", ["receiver_id"], name: "index_exchanges_on_receiver_id", using: :btree
add_index "exchanges", ["sender_id"], name: "index_exchanges_on_sender_id", using: :btree
- create_table "inventory_items", force: true do |t|
+ create_table "inventory_items", force: :cascade do |t|
t.integer "enterprise_id", null: false
t.integer "variant_id", null: false
t.boolean "visible", default: true, null: false
@@ -277,7 +277,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "inventory_items", ["enterprise_id", "variant_id"], name: "index_inventory_items_on_enterprise_id_and_variant_id", unique: true, using: :btree
- create_table "order_cycle_schedules", force: true do |t|
+ create_table "order_cycle_schedules", force: :cascade do |t|
t.integer "order_cycle_id", null: false
t.integer "schedule_id", null: false
t.datetime "created_at", null: false
@@ -287,29 +287,29 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "order_cycle_schedules", ["order_cycle_id"], name: "index_order_cycle_schedules_on_order_cycle_id", using: :btree
add_index "order_cycle_schedules", ["schedule_id"], name: "index_order_cycle_schedules_on_schedule_id", using: :btree
- create_table "order_cycles", force: true do |t|
- t.string "name"
+ create_table "order_cycles", force: :cascade do |t|
+ t.string "name", limit: 255
t.datetime "orders_open_at"
t.datetime "orders_close_at"
t.integer "coordinator_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
- create_table "producer_properties", force: true do |t|
- t.string "value"
+ create_table "producer_properties", force: :cascade do |t|
+ t.string "value", limit: 255
t.integer "producer_id"
t.integer "property_id"
- t.integer "position", default: 0, null: false
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.integer "position", default: 0, null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
add_index "producer_properties", ["position"], name: "index_producer_properties_on_position", using: :btree
add_index "producer_properties", ["producer_id"], name: "index_producer_properties_on_producer_id", using: :btree
add_index "producer_properties", ["property_id"], name: "index_producer_properties_on_property_id", using: :btree
- create_table "proxy_orders", force: true do |t|
+ create_table "proxy_orders", force: :cascade do |t|
t.integer "subscription_id", null: false
t.integer "order_id"
t.datetime "canceled_at"
@@ -324,53 +324,53 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "proxy_orders", ["order_id"], name: "index_proxy_orders_on_order_id", unique: true, using: :btree
add_index "proxy_orders", ["subscription_id"], name: "index_proxy_orders_on_subscription_id", using: :btree
- create_table "schedules", force: true do |t|
- t.string "name", null: false
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ create_table "schedules", force: :cascade do |t|
+ t.string "name", limit: 255, null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
- create_table "sessions", force: true do |t|
- t.string "session_id", null: false
+ create_table "sessions", force: :cascade do |t|
+ t.string "session_id", limit: 255, null: false
t.text "data"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", using: :btree
add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree
- create_table "spree_activators", force: true do |t|
- t.string "description"
+ create_table "spree_activators", force: :cascade do |t|
+ t.string "description", limit: 255
t.datetime "expires_at"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.datetime "starts_at"
- t.string "name"
- t.string "event_name"
- t.string "type"
+ t.string "name", limit: 255
+ t.string "event_name", limit: 255
+ t.string "type", limit: 255
t.integer "usage_limit"
- t.string "match_policy", default: "all"
- t.string "code"
- t.boolean "advertise", default: false
- t.string "path"
+ t.string "match_policy", limit: 255, default: "all"
+ t.string "code", limit: 255
+ t.boolean "advertise", default: false
+ t.string "path", limit: 255
end
- create_table "spree_addresses", force: true do |t|
- t.string "firstname"
- t.string "lastname"
- t.string "address1"
- t.string "address2"
- t.string "city"
- t.string "zipcode"
- t.string "phone"
- t.string "state_name"
- t.string "alternative_phone"
+ create_table "spree_addresses", force: :cascade do |t|
+ t.string "firstname", limit: 255
+ t.string "lastname", limit: 255
+ t.string "address1", limit: 255
+ t.string "address2", limit: 255
+ t.string "city", limit: 255
+ t.string "zipcode", limit: 255
+ t.string "phone", limit: 255
+ t.string "state_name", limit: 255
+ t.string "alternative_phone", limit: 255
t.integer "state_id"
t.integer "country_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "company"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.string "company", limit: 255
t.float "latitude"
t.float "longitude"
end
@@ -378,34 +378,34 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_addresses", ["firstname"], name: "index_addresses_on_firstname", using: :btree
add_index "spree_addresses", ["lastname"], name: "index_addresses_on_lastname", using: :btree
- create_table "spree_adjustments", force: true do |t|
+ create_table "spree_adjustments", force: :cascade do |t|
t.integer "source_id"
- t.decimal "amount", precision: 10, scale: 2
- t.string "label"
- t.string "source_type"
+ t.decimal "amount", precision: 10, scale: 2
+ t.string "label", limit: 255
+ t.string "source_type", limit: 255
t.integer "adjustable_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.boolean "mandatory"
t.integer "originator_id"
- t.string "originator_type"
- t.boolean "eligible", default: true
- t.string "adjustable_type"
- t.decimal "included_tax", precision: 10, scale: 2, default: 0.0, null: false
- t.string "state"
+ t.string "originator_type", limit: 255
+ t.boolean "eligible", default: true
+ t.string "adjustable_type", limit: 255
+ t.decimal "included_tax", precision: 10, scale: 2, default: 0.0, null: false
+ t.string "state", limit: 255
end
add_index "spree_adjustments", ["adjustable_id"], name: "index_adjustments_on_order_id", using: :btree
- create_table "spree_assets", force: true do |t|
+ create_table "spree_assets", force: :cascade do |t|
t.integer "viewable_id"
t.integer "attachment_width"
t.integer "attachment_height"
t.integer "attachment_file_size"
t.integer "position"
t.string "viewable_type", limit: 50
- t.string "attachment_content_type"
- t.string "attachment_file_name"
+ t.string "attachment_content_type", limit: 255
+ t.string "attachment_file_name", limit: 255
t.string "type", limit: 75
t.datetime "attachment_updated_at"
t.text "alt"
@@ -414,109 +414,109 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_assets", ["viewable_id"], name: "index_assets_on_viewable_id", using: :btree
add_index "spree_assets", ["viewable_type", "type"], name: "index_assets_on_viewable_type_and_type", using: :btree
- create_table "spree_calculators", force: true do |t|
- t.string "type"
- t.integer "calculable_id", null: false
- t.string "calculable_type", null: false
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ create_table "spree_calculators", force: :cascade do |t|
+ t.string "type", limit: 255
+ t.integer "calculable_id", null: false
+ t.string "calculable_type", limit: 255, null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
- create_table "spree_configurations", force: true do |t|
- t.string "name"
+ create_table "spree_configurations", force: :cascade do |t|
+ t.string "name", limit: 255
t.string "type", limit: 50
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
add_index "spree_configurations", ["name", "type"], name: "index_configurations_on_name_and_type", using: :btree
- create_table "spree_countries", force: true do |t|
- t.string "iso_name"
- t.string "iso"
- t.string "iso3"
- t.string "name"
+ create_table "spree_countries", force: :cascade do |t|
+ t.string "iso_name", limit: 255
+ t.string "iso", limit: 255
+ t.string "iso3", limit: 255
+ t.string "name", limit: 255
t.integer "numcode"
- t.boolean "states_required", default: true
+ t.boolean "states_required", default: true
end
- create_table "spree_credit_cards", force: true do |t|
- t.string "month"
- t.string "year"
- t.string "cc_type"
- t.string "last_digits"
- t.string "first_name"
- t.string "last_name"
- t.string "start_month"
- t.string "start_year"
- t.string "issue_number"
+ create_table "spree_credit_cards", force: :cascade do |t|
+ t.string "month", limit: 255
+ t.string "year", limit: 255
+ t.string "cc_type", limit: 255
+ t.string "last_digits", limit: 255
+ t.string "first_name", limit: 255
+ t.string "last_name", limit: 255
+ t.string "start_month", limit: 255
+ t.string "start_year", limit: 255
+ t.string "issue_number", limit: 255
t.integer "address_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "gateway_customer_profile_id"
- t.string "gateway_payment_profile_id"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.string "gateway_customer_profile_id", limit: 255
+ t.string "gateway_payment_profile_id", limit: 255
t.integer "user_id"
t.integer "payment_method_id"
- t.boolean "is_default", default: false
+ t.boolean "is_default", default: false
end
add_index "spree_credit_cards", ["payment_method_id"], name: "index_spree_credit_cards_on_payment_method_id", using: :btree
add_index "spree_credit_cards", ["user_id"], name: "index_spree_credit_cards_on_user_id", using: :btree
- create_table "spree_gateways", force: true do |t|
- t.string "type"
- t.string "name"
+ create_table "spree_gateways", force: :cascade do |t|
+ t.string "type", limit: 255
+ t.string "name", limit: 255
t.text "description"
- t.boolean "active", default: true
- t.string "environment", default: "development"
- t.string "server", default: "test"
- t.boolean "test_mode", default: true
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.boolean "active", default: true
+ t.string "environment", limit: 255, default: "development"
+ t.string "server", limit: 255, default: "test"
+ t.boolean "test_mode", default: true
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
- create_table "spree_inventory_units", force: true do |t|
- t.string "state"
+ create_table "spree_inventory_units", force: :cascade do |t|
+ t.string "state", limit: 255
t.integer "variant_id"
t.integer "order_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.integer "shipment_id"
t.integer "return_authorization_id"
- t.boolean "pending", default: true
+ t.boolean "pending", default: true
end
add_index "spree_inventory_units", ["order_id"], name: "index_inventory_units_on_order_id", using: :btree
add_index "spree_inventory_units", ["shipment_id"], name: "index_inventory_units_on_shipment_id", using: :btree
add_index "spree_inventory_units", ["variant_id"], name: "index_inventory_units_on_variant_id", using: :btree
- create_table "spree_line_items", force: true do |t|
+ create_table "spree_line_items", force: :cascade do |t|
t.integer "order_id"
t.integer "variant_id"
- t.integer "quantity", null: false
- t.decimal "price", precision: 8, scale: 2, null: false
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.integer "quantity", null: false
+ t.decimal "price", precision: 8, scale: 2, null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.integer "max_quantity"
- t.string "currency"
- t.decimal "distribution_fee", precision: 10, scale: 2
- t.decimal "final_weight_volume", precision: 10, scale: 2
- t.decimal "cost_price", precision: 8, scale: 2
+ t.string "currency", limit: 255
+ t.decimal "distribution_fee", precision: 10, scale: 2
+ t.decimal "final_weight_volume", precision: 10, scale: 2
+ t.decimal "cost_price", precision: 8, scale: 2
t.integer "tax_category_id"
end
add_index "spree_line_items", ["order_id"], name: "index_line_items_on_order_id", using: :btree
add_index "spree_line_items", ["variant_id"], name: "index_line_items_on_variant_id", using: :btree
- create_table "spree_log_entries", force: true do |t|
+ create_table "spree_log_entries", force: :cascade do |t|
t.integer "source_id"
- t.string "source_type"
+ t.string "source_type", limit: 255
t.text "details"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
- create_table "spree_option_types", force: true do |t|
+ create_table "spree_option_types", force: :cascade do |t|
t.string "name", limit: 100
t.string "presentation", limit: 100
t.datetime "created_at", null: false
@@ -524,23 +524,23 @@ ActiveRecord::Schema.define(version: 20201113163227) do
t.integer "position", default: 0, null: false
end
- create_table "spree_option_values", force: true do |t|
+ create_table "spree_option_values", force: :cascade do |t|
t.integer "position"
- t.string "name"
- t.string "presentation"
+ t.string "name", limit: 255
+ t.string "presentation", limit: 255
t.integer "option_type_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
- create_table "spree_option_values_line_items", id: false, force: true do |t|
+ create_table "spree_option_values_line_items", id: false, force: :cascade do |t|
t.integer "line_item_id"
t.integer "option_value_id"
end
add_index "spree_option_values_line_items", ["line_item_id"], name: "index_option_values_line_items_on_line_item_id", using: :btree
- create_table "spree_option_values_variants", id: false, force: true do |t|
+ create_table "spree_option_values_variants", id: false, force: :cascade do |t|
t.integer "variant_id"
t.integer "option_value_id"
end
@@ -548,27 +548,27 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_option_values_variants", ["variant_id", "option_value_id"], name: "index_option_values_variants_on_variant_id_and_option_value_id", using: :btree
add_index "spree_option_values_variants", ["variant_id"], name: "index_option_values_variants_on_variant_id", using: :btree
- create_table "spree_orders", force: true do |t|
+ create_table "spree_orders", force: :cascade do |t|
t.string "number", limit: 15
- t.decimal "item_total", precision: 10, scale: 2, default: 0.0, null: false
- t.decimal "total", precision: 10, scale: 2, default: 0.0, null: false
- t.string "state"
- t.decimal "adjustment_total", precision: 10, scale: 2, default: 0.0, null: false
+ t.decimal "item_total", precision: 10, scale: 2, default: 0.0, null: false
+ t.decimal "total", precision: 10, scale: 2, default: 0.0, null: false
+ t.string "state", limit: 255
+ t.decimal "adjustment_total", precision: 10, scale: 2, default: 0.0, null: false
t.integer "user_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.datetime "completed_at"
t.integer "bill_address_id"
t.integer "ship_address_id"
- t.decimal "payment_total", precision: 10, scale: 2, default: 0.0
- t.string "shipment_state"
- t.string "payment_state"
- t.string "email"
+ t.decimal "payment_total", precision: 10, scale: 2, default: 0.0
+ t.string "shipment_state", limit: 255
+ t.string "payment_state", limit: 255
+ t.string "email", limit: 255
t.text "special_instructions"
t.integer "distributor_id"
t.integer "order_cycle_id"
- t.string "currency"
- t.string "last_ip_address"
+ t.string "currency", limit: 255
+ t.string "last_ip_address", limit: 255
t.integer "customer_id"
t.integer "created_by_id"
end
@@ -580,57 +580,57 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_orders", ["order_cycle_id"], name: "index_spree_orders_on_order_cycle_id", using: :btree
add_index "spree_orders", ["user_id"], name: "index_spree_orders_on_user_id", using: :btree
- create_table "spree_payment_methods", force: true do |t|
- t.string "type"
- t.string "name"
+ create_table "spree_payment_methods", force: :cascade do |t|
+ t.string "type", limit: 255
+ t.string "name", limit: 255
t.text "description"
- t.boolean "active", default: true
- t.string "environment", default: "development"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.boolean "active", default: true
+ t.string "environment", limit: 255, default: "development"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.datetime "deleted_at"
- t.string "display_on"
+ t.string "display_on", limit: 255
end
- create_table "spree_payments", force: true do |t|
- t.decimal "amount", precision: 10, scale: 2, default: 0.0, null: false
+ create_table "spree_payments", force: :cascade do |t|
+ t.decimal "amount", precision: 10, scale: 2, default: 0.0, null: false
t.integer "order_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.integer "source_id"
- t.string "source_type"
+ t.string "source_type", limit: 255
t.integer "payment_method_id"
- t.string "state"
- t.string "response_code"
- t.string "avs_response"
- t.string "identifier"
- t.string "cvv_response_code"
+ t.string "state", limit: 255
+ t.string "response_code", limit: 255
+ t.string "avs_response", limit: 255
+ t.string "identifier", limit: 255
+ t.string "cvv_response_code", limit: 255
t.text "cvv_response_message"
end
add_index "spree_payments", ["order_id"], name: "index_spree_payments_on_order_id", using: :btree
- create_table "spree_paypal_accounts", force: true do |t|
- t.string "email"
- t.string "payer_id"
- t.string "payer_country"
- t.string "payer_status"
+ create_table "spree_paypal_accounts", force: :cascade do |t|
+ t.string "email", limit: 255
+ t.string "payer_id", limit: 255
+ t.string "payer_country", limit: 255
+ t.string "payer_status", limit: 255
end
- create_table "spree_paypal_express_checkouts", force: true do |t|
- t.string "token"
- t.string "payer_id"
- t.string "transaction_id"
- t.string "state", default: "complete"
- t.string "refund_transaction_id"
+ create_table "spree_paypal_express_checkouts", force: :cascade do |t|
+ t.string "token", limit: 255
+ t.string "payer_id", limit: 255
+ t.string "transaction_id", limit: 255
+ t.string "state", limit: 255, default: "complete"
+ t.string "refund_transaction_id", limit: 255
t.datetime "refunded_at"
- t.string "refund_type"
+ t.string "refund_type", limit: 255
t.datetime "created_at"
end
add_index "spree_paypal_express_checkouts", ["transaction_id"], name: "index_spree_paypal_express_checkouts_on_transaction_id", using: :btree
- create_table "spree_pending_promotions", force: true do |t|
+ create_table "spree_pending_promotions", force: :cascade do |t|
t.integer "user_id"
t.integer "promotion_id"
end
@@ -638,40 +638,40 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_pending_promotions", ["promotion_id"], name: "index_spree_pending_promotions_on_promotion_id", using: :btree
add_index "spree_pending_promotions", ["user_id"], name: "index_spree_pending_promotions_on_user_id", using: :btree
- create_table "spree_preferences", force: true do |t|
+ create_table "spree_preferences", force: :cascade do |t|
t.text "value"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "key"
- t.string "value_type"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.string "key", limit: 255
+ t.string "value_type", limit: 255
end
add_index "spree_preferences", ["key"], name: "index_spree_preferences_on_key", unique: true, using: :btree
- create_table "spree_prices", force: true do |t|
- t.integer "variant_id", null: false
- t.decimal "amount", precision: 8, scale: 2
- t.string "currency"
+ create_table "spree_prices", force: :cascade do |t|
+ t.integer "variant_id", null: false
+ t.decimal "amount", precision: 8, scale: 2
+ t.string "currency", limit: 255
t.datetime "deleted_at"
end
add_index "spree_prices", ["variant_id"], name: "index_spree_prices_on_variant_id", using: :btree
- create_table "spree_product_groups", force: true do |t|
- t.string "name"
- t.string "permalink"
- t.string "order"
+ create_table "spree_product_groups", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.string "permalink", limit: 255
+ t.string "order", limit: 255
end
add_index "spree_product_groups", ["name"], name: "index_product_groups_on_name", using: :btree
add_index "spree_product_groups", ["permalink"], name: "index_product_groups_on_permalink", using: :btree
- create_table "spree_product_groups_products", id: false, force: true do |t|
+ create_table "spree_product_groups_products", id: false, force: :cascade do |t|
t.integer "product_id"
t.integer "product_group_id"
end
- create_table "spree_product_option_types", force: true do |t|
+ create_table "spree_product_option_types", force: :cascade do |t|
t.integer "position"
t.integer "product_id"
t.integer "option_type_id"
@@ -679,19 +679,19 @@ ActiveRecord::Schema.define(version: 20201113163227) do
t.datetime "updated_at", null: false
end
- create_table "spree_product_properties", force: true do |t|
- t.string "value"
+ create_table "spree_product_properties", force: :cascade do |t|
+ t.string "value", limit: 255
t.integer "product_id"
t.integer "property_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.integer "position", default: 0
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.integer "position", default: 0
end
add_index "spree_product_properties", ["product_id"], name: "index_product_properties_on_product_id", using: :btree
- create_table "spree_product_scopes", force: true do |t|
- t.string "name"
+ create_table "spree_product_scopes", force: :cascade do |t|
+ t.string "name", limit: 255
t.text "arguments"
t.integer "product_group_id"
end
@@ -699,27 +699,27 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_product_scopes", ["name"], name: "index_product_scopes_on_name", using: :btree
add_index "spree_product_scopes", ["product_group_id"], name: "index_product_scopes_on_product_group_id", using: :btree
- create_table "spree_products", force: true do |t|
- t.string "name", default: "", null: false
+ create_table "spree_products", force: :cascade do |t|
+ t.string "name", limit: 255, default: "", null: false
t.text "description"
t.datetime "available_on"
t.datetime "deleted_at"
- t.string "permalink"
+ t.string "permalink", limit: 255
t.text "meta_description"
- t.string "meta_keywords"
+ t.string "meta_keywords", limit: 255
t.integer "tax_category_id"
t.integer "shipping_category_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.integer "supplier_id"
t.boolean "group_buy"
t.float "group_buy_unit_size"
- t.string "variant_unit"
+ t.string "variant_unit", limit: 255
t.float "variant_unit_scale"
- t.string "variant_unit_name"
+ t.string "variant_unit_name", limit: 255
t.text "notes"
- t.integer "primary_taxon_id", null: false
- t.boolean "inherits_properties", default: true, null: false
+ t.integer "primary_taxon_id", null: false
+ t.boolean "inherits_properties", default: true, null: false
end
add_index "spree_products", ["available_on"], name: "index_products_on_available_on", using: :btree
@@ -730,7 +730,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_products", ["primary_taxon_id"], name: "index_spree_products_on_primary_taxon_id", using: :btree
add_index "spree_products", ["supplier_id"], name: "index_spree_products_on_supplier_id", using: :btree
- create_table "spree_products_promotion_rules", id: false, force: true do |t|
+ create_table "spree_products_promotion_rules", id: false, force: :cascade do |t|
t.integer "product_id"
t.integer "promotion_rule_id"
end
@@ -738,7 +738,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_products_promotion_rules", ["product_id"], name: "index_products_promotion_rules_on_product_id", using: :btree
add_index "spree_products_promotion_rules", ["promotion_rule_id"], name: "index_products_promotion_rules_on_promotion_rule_id", using: :btree
- create_table "spree_products_taxons", force: true do |t|
+ create_table "spree_products_taxons", force: :cascade do |t|
t.integer "product_id"
t.integer "taxon_id"
end
@@ -746,31 +746,31 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_products_taxons", ["product_id"], name: "index_products_taxons_on_product_id", using: :btree
add_index "spree_products_taxons", ["taxon_id"], name: "index_products_taxons_on_taxon_id", using: :btree
- create_table "spree_promotion_action_line_items", force: true do |t|
+ create_table "spree_promotion_action_line_items", force: :cascade do |t|
t.integer "promotion_action_id"
t.integer "variant_id"
t.integer "quantity", default: 1
end
- create_table "spree_promotion_actions", force: true do |t|
+ create_table "spree_promotion_actions", force: :cascade do |t|
t.integer "activator_id"
t.integer "position"
- t.string "type"
+ t.string "type", limit: 255
end
- create_table "spree_promotion_rules", force: true do |t|
+ create_table "spree_promotion_rules", force: :cascade do |t|
t.integer "activator_id"
t.integer "user_id"
t.integer "product_group_id"
- t.string "type"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.string "type", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
add_index "spree_promotion_rules", ["product_group_id"], name: "index_promotion_rules_on_product_group_id", using: :btree
add_index "spree_promotion_rules", ["user_id"], name: "index_promotion_rules_on_user_id", using: :btree
- create_table "spree_promotion_rules_users", id: false, force: true do |t|
+ create_table "spree_promotion_rules_users", id: false, force: :cascade do |t|
t.integer "user_id"
t.integer "promotion_rule_id"
end
@@ -778,29 +778,29 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_promotion_rules_users", ["promotion_rule_id"], name: "index_promotion_rules_users_on_promotion_rule_id", using: :btree
add_index "spree_promotion_rules_users", ["user_id"], name: "index_promotion_rules_users_on_user_id", using: :btree
- create_table "spree_properties", force: true do |t|
- t.string "name"
- t.string "presentation", null: false
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ create_table "spree_properties", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.string "presentation", limit: 255, null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
- create_table "spree_return_authorizations", force: true do |t|
- t.string "number"
- t.string "state"
- t.decimal "amount", precision: 10, scale: 2, default: 0.0, null: false
+ create_table "spree_return_authorizations", force: :cascade do |t|
+ t.string "number", limit: 255
+ t.string "state", limit: 255
+ t.decimal "amount", precision: 10, scale: 2, default: 0.0, null: false
t.integer "order_id"
t.text "reason"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.integer "stock_location_id"
end
- create_table "spree_roles", force: true do |t|
- t.string "name"
+ create_table "spree_roles", force: :cascade do |t|
+ t.string "name", limit: 255
end
- create_table "spree_roles_users", id: false, force: true do |t|
+ create_table "spree_roles_users", id: false, force: :cascade do |t|
t.integer "role_id"
t.integer "user_id"
end
@@ -808,30 +808,30 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_roles_users", ["role_id"], name: "index_roles_users_on_role_id", using: :btree
add_index "spree_roles_users", ["user_id"], name: "index_roles_users_on_user_id", using: :btree
- create_table "spree_shipments", force: true do |t|
- t.string "tracking"
- t.string "number"
- t.decimal "cost", precision: 8, scale: 2
+ create_table "spree_shipments", force: :cascade do |t|
+ t.string "tracking", limit: 255
+ t.string "number", limit: 255
+ t.decimal "cost", precision: 8, scale: 2
t.datetime "shipped_at"
t.integer "order_id"
t.integer "address_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "state"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.string "state", limit: 255
t.integer "stock_location_id"
end
add_index "spree_shipments", ["number"], name: "index_shipments_on_number", using: :btree
add_index "spree_shipments", ["order_id"], name: "index_spree_shipments_on_order_id", unique: true, using: :btree
- create_table "spree_shipping_categories", force: true do |t|
- t.string "name"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.boolean "temperature_controlled", default: false, null: false
+ create_table "spree_shipping_categories", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.boolean "temperature_controlled", default: false, null: false
end
- create_table "spree_shipping_method_categories", force: true do |t|
+ create_table "spree_shipping_method_categories", force: :cascade do |t|
t.integer "shipping_method_id", null: false
t.integer "shipping_category_id", null: false
t.datetime "created_at", null: false
@@ -841,23 +841,23 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_shipping_method_categories", ["shipping_category_id"], name: "index_spree_shipping_method_categories_on_shipping_category_id", using: :btree
add_index "spree_shipping_method_categories", ["shipping_method_id"], name: "index_spree_shipping_method_categories_on_shipping_method_id", using: :btree
- create_table "spree_shipping_methods", force: true do |t|
- t.string "name"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "display_on"
+ create_table "spree_shipping_methods", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.string "display_on", limit: 255
t.datetime "deleted_at"
- t.boolean "require_ship_address", default: true
+ t.boolean "require_ship_address", default: true
t.text "description"
- t.string "tracking_url"
+ t.string "tracking_url", limit: 255
end
- create_table "spree_shipping_methods_zones", id: false, force: true do |t|
+ create_table "spree_shipping_methods_zones", id: false, force: :cascade do |t|
t.integer "shipping_method_id"
t.integer "zone_id"
end
- create_table "spree_shipping_rates", force: true do |t|
+ create_table "spree_shipping_rates", force: :cascade do |t|
t.integer "shipment_id"
t.integer "shipping_method_id"
t.boolean "selected", default: false
@@ -868,37 +868,37 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_shipping_rates", ["shipment_id", "shipping_method_id"], name: "spree_shipping_rates_join_index", unique: true, using: :btree
- create_table "spree_skrill_transactions", force: true do |t|
- t.string "email"
+ create_table "spree_skrill_transactions", force: :cascade do |t|
+ t.string "email", limit: 255
t.float "amount"
- t.string "currency"
+ t.string "currency", limit: 255
t.integer "transaction_id"
t.integer "customer_id"
- t.string "payment_type"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.string "payment_type", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
- create_table "spree_state_changes", force: true do |t|
- t.string "name"
- t.string "previous_state"
+ create_table "spree_state_changes", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.string "previous_state", limit: 255
t.integer "stateful_id"
t.integer "user_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "stateful_type"
- t.string "next_state"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.string "stateful_type", limit: 255
+ t.string "next_state", limit: 255
end
add_index "spree_state_changes", ["stateful_id"], name: "index_spree_state_changes_on_stateful_id", using: :btree
- create_table "spree_states", force: true do |t|
- t.string "name"
- t.string "abbr"
+ create_table "spree_states", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.string "abbr", limit: 255
t.integer "country_id"
end
- create_table "spree_stock_items", force: true do |t|
+ create_table "spree_stock_items", force: :cascade do |t|
t.integer "stock_location_id"
t.integer "variant_id"
t.integer "count_on_hand", default: 0, null: false
@@ -913,200 +913,200 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "spree_stock_items", ["stock_location_id"], name: "index_spree_stock_items_on_stock_location_id", using: :btree
add_index "spree_stock_items", ["variant_id"], name: "index_spree_stock_items_on_variant_id", unique: true, using: :btree
- create_table "spree_stock_locations", force: true do |t|
- t.string "name"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "address1"
- t.string "address2"
- t.string "city"
+ create_table "spree_stock_locations", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.string "address1", limit: 255
+ t.string "address2", limit: 255
+ t.string "city", limit: 255
t.integer "state_id"
- t.string "state_name"
+ t.string "state_name", limit: 255
t.integer "country_id"
- t.string "zipcode"
- t.string "phone"
- t.boolean "active", default: true
- t.boolean "backorderable_default", default: false
- t.boolean "propagate_all_variants", default: true
+ t.string "zipcode", limit: 255
+ t.string "phone", limit: 255
+ t.boolean "active", default: true
+ t.boolean "backorderable_default", default: false
+ t.boolean "propagate_all_variants", default: true
end
- create_table "spree_stock_movements", force: true do |t|
+ create_table "spree_stock_movements", force: :cascade do |t|
t.integer "stock_item_id"
- t.integer "quantity", default: 0
- t.string "action"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.integer "quantity", default: 0
+ t.string "action", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.integer "originator_id"
- t.string "originator_type"
+ t.string "originator_type", limit: 255
end
add_index "spree_stock_movements", ["stock_item_id"], name: "index_spree_stock_movements_on_stock_item_id", using: :btree
- create_table "spree_stock_transfers", force: true do |t|
- t.string "type"
- t.string "reference"
+ create_table "spree_stock_transfers", force: :cascade do |t|
+ t.string "type", limit: 255
+ t.string "reference", limit: 255
t.integer "source_location_id"
t.integer "destination_location_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "number"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.string "number", limit: 255
end
add_index "spree_stock_transfers", ["destination_location_id"], name: "index_spree_stock_transfers_on_destination_location_id", using: :btree
add_index "spree_stock_transfers", ["number"], name: "index_spree_stock_transfers_on_number", using: :btree
add_index "spree_stock_transfers", ["source_location_id"], name: "index_spree_stock_transfers_on_source_location_id", using: :btree
- create_table "spree_tax_categories", force: true do |t|
- t.string "name"
- t.string "description"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.boolean "is_default", default: false
+ create_table "spree_tax_categories", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.string "description", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.boolean "is_default", default: false
t.datetime "deleted_at"
end
- create_table "spree_tax_rates", force: true do |t|
- t.decimal "amount", precision: 8, scale: 5
+ create_table "spree_tax_rates", force: :cascade do |t|
+ t.decimal "amount", precision: 8, scale: 5
t.integer "zone_id"
t.integer "tax_category_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.boolean "included_in_price", default: false
- t.string "name"
- t.boolean "show_rate_in_label", default: true
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.boolean "included_in_price", default: false
+ t.string "name", limit: 255
+ t.boolean "show_rate_in_label", default: true
t.datetime "deleted_at"
end
- create_table "spree_taxonomies", force: true do |t|
- t.string "name", null: false
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.integer "position", default: 0
+ create_table "spree_taxonomies", force: :cascade do |t|
+ t.string "name", limit: 255, null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.integer "position", default: 0
end
- create_table "spree_taxons", force: true do |t|
+ create_table "spree_taxons", force: :cascade do |t|
t.integer "parent_id"
- t.integer "position", default: 0
- t.string "name", null: false
- t.string "permalink"
+ t.integer "position", default: 0
+ t.string "name", limit: 255, null: false
+ t.string "permalink", limit: 255
t.integer "taxonomy_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.integer "lft"
t.integer "rgt"
- t.string "icon_file_name"
- t.string "icon_content_type"
+ t.string "icon_file_name", limit: 255
+ t.string "icon_content_type", limit: 255
t.integer "icon_file_size"
t.datetime "icon_updated_at"
t.text "description"
- t.string "meta_title"
- t.string "meta_description"
- t.string "meta_keywords"
+ t.string "meta_title", limit: 255
+ t.string "meta_description", limit: 255
+ t.string "meta_keywords", limit: 255
end
add_index "spree_taxons", ["parent_id"], name: "index_taxons_on_parent_id", using: :btree
add_index "spree_taxons", ["permalink"], name: "index_taxons_on_permalink", using: :btree
add_index "spree_taxons", ["taxonomy_id"], name: "index_taxons_on_taxonomy_id", using: :btree
- create_table "spree_tokenized_permissions", force: true do |t|
+ create_table "spree_tokenized_permissions", force: :cascade do |t|
t.integer "permissable_id"
- t.string "permissable_type"
- t.string "token"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.string "permissable_type", limit: 255
+ t.string "token", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
add_index "spree_tokenized_permissions", ["permissable_id", "permissable_type"], name: "index_tokenized_name_and_type", using: :btree
- create_table "spree_users", force: true do |t|
- t.string "encrypted_password"
- t.string "password_salt"
- t.string "email"
- t.string "remember_token"
- t.string "persistence_token"
- t.string "reset_password_token"
- t.string "perishable_token"
- t.integer "sign_in_count", default: 0, null: false
- t.integer "failed_attempts", default: 0, null: false
+ create_table "spree_users", force: :cascade do |t|
+ t.string "encrypted_password", limit: 255
+ t.string "password_salt", limit: 255
+ t.string "email", limit: 255
+ t.string "remember_token", limit: 255
+ t.string "persistence_token", limit: 255
+ t.string "reset_password_token", limit: 255
+ t.string "perishable_token", limit: 255
+ t.integer "sign_in_count", default: 0, null: false
+ t.integer "failed_attempts", default: 0, null: false
t.datetime "last_request_at"
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
- t.string "current_sign_in_ip"
- t.string "last_sign_in_ip"
- t.string "login"
+ t.string "current_sign_in_ip", limit: 255
+ t.string "last_sign_in_ip", limit: 255
+ t.string "login", limit: 255
t.integer "ship_address_id"
t.integer "bill_address_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.string "authentication_token"
- t.string "unlock_token"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.string "authentication_token", limit: 255
+ t.string "unlock_token", limit: 255
t.datetime "locked_at"
t.datetime "remember_created_at"
t.string "spree_api_key", limit: 48
t.datetime "reset_password_sent_at"
t.string "api_key", limit: 40
- t.integer "enterprise_limit", default: 5, null: false
+ t.integer "enterprise_limit", default: 5, null: false
t.string "locale", limit: 6
- t.string "confirmation_token"
+ t.string "confirmation_token", limit: 255
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
- t.string "unconfirmed_email"
+ t.string "unconfirmed_email", limit: 255
end
add_index "spree_users", ["confirmation_token"], name: "index_spree_users_on_confirmation_token", unique: true, using: :btree
add_index "spree_users", ["email"], name: "email_idx_unique", unique: true, using: :btree
add_index "spree_users", ["persistence_token"], name: "index_users_on_persistence_token", using: :btree
- create_table "spree_variants", force: true do |t|
- t.string "sku", default: "", null: false
- t.decimal "weight", precision: 8, scale: 2
- t.decimal "height", precision: 8, scale: 2
- t.decimal "width", precision: 8, scale: 2
- t.decimal "depth", precision: 8, scale: 2
+ create_table "spree_variants", force: :cascade do |t|
+ t.string "sku", limit: 255, default: "", null: false
+ t.decimal "weight", precision: 8, scale: 2
+ t.decimal "height", precision: 8, scale: 2
+ t.decimal "width", precision: 8, scale: 2
+ t.decimal "depth", precision: 8, scale: 2
t.datetime "deleted_at"
- t.boolean "is_master", default: false
+ t.boolean "is_master", default: false
t.integer "product_id"
- t.decimal "cost_price", precision: 8, scale: 2
+ t.decimal "cost_price", precision: 8, scale: 2
t.integer "position"
- t.string "cost_currency"
+ t.string "cost_currency", limit: 255
t.float "unit_value"
- t.string "unit_description", default: ""
- t.string "display_name"
- t.string "display_as"
+ t.string "unit_description", limit: 255, default: ""
+ t.string "display_name", limit: 255
+ t.string "display_as", limit: 255
t.datetime "import_date"
end
add_index "spree_variants", ["product_id"], name: "index_variants_on_product_id", using: :btree
add_index "spree_variants", ["sku"], name: "index_spree_variants_on_sku", using: :btree
- create_table "spree_zone_members", force: true do |t|
+ create_table "spree_zone_members", force: :cascade do |t|
t.integer "zoneable_id"
- t.string "zoneable_type"
+ t.string "zoneable_type", limit: 255
t.integer "zone_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
- create_table "spree_zones", force: true do |t|
- t.string "name"
- t.string "description"
+ create_table "spree_zones", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.string "description", limit: 255
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.boolean "default_tax", default: false
+ t.integer "zone_members_count", default: 0
+ end
+
+ create_table "stripe_accounts", force: :cascade do |t|
+ t.string "stripe_user_id", limit: 255
+ t.string "stripe_publishable_key", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
- t.boolean "default_tax", default: false
- t.integer "zone_members_count", default: 0
- end
-
- create_table "stripe_accounts", force: true do |t|
- t.string "stripe_user_id"
- t.string "stripe_publishable_key"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
t.integer "enterprise_id"
end
add_index "stripe_accounts", ["enterprise_id"], name: "index_stripe_accounts_on_enterprise_id", unique: true, using: :btree
- create_table "subscription_line_items", force: true do |t|
+ create_table "subscription_line_items", force: :cascade do |t|
t.integer "subscription_id", null: false
t.integer "variant_id", null: false
t.integer "quantity", null: false
@@ -1118,7 +1118,7 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "subscription_line_items", ["subscription_id"], name: "index_subscription_line_items_on_subscription_id", using: :btree
add_index "subscription_line_items", ["variant_id"], name: "index_subscription_line_items_on_variant_id", using: :btree
- create_table "subscriptions", force: true do |t|
+ create_table "subscriptions", force: :cascade do |t|
t.integer "shop_id", null: false
t.integer "customer_id", null: false
t.integer "schedule_id", null: false
@@ -1144,29 +1144,29 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "subscriptions", ["shipping_method_id"], name: "index_subscriptions_on_shipping_method_id", using: :btree
add_index "subscriptions", ["shop_id"], name: "index_subscriptions_on_shop_id", using: :btree
- create_table "suburbs", force: true do |t|
- t.string "name"
- t.string "postcode"
+ create_table "suburbs", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.string "postcode", limit: 255
t.float "latitude"
t.float "longitude"
t.integer "state_id"
end
- create_table "tag_rules", force: true do |t|
- t.integer "enterprise_id", null: false
- t.string "type", null: false
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.boolean "is_default", default: false, null: false
- t.integer "priority", default: 99, null: false
+ create_table "tag_rules", force: :cascade do |t|
+ t.integer "enterprise_id", null: false
+ t.string "type", limit: 255, null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.boolean "is_default", default: false, null: false
+ t.integer "priority", default: 99, null: false
end
- create_table "taggings", force: true do |t|
+ create_table "taggings", force: :cascade do |t|
t.integer "tag_id"
t.integer "taggable_id"
- t.string "taggable_type"
+ t.string "taggable_type", limit: 255
t.integer "tagger_id"
- t.string "tagger_type"
+ t.string "tagger_type", limit: 255
t.string "context", limit: 128
t.datetime "created_at"
end
@@ -1174,21 +1174,21 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true, using: :btree
add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree
- create_table "tags", force: true do |t|
- t.string "name"
- t.integer "taggings_count", default: 0
+ create_table "tags", force: :cascade do |t|
+ t.string "name", limit: 255
+ t.integer "taggings_count", default: 0
end
add_index "tags", ["name"], name: "index_tags_on_name", unique: true, using: :btree
- create_table "variant_overrides", force: true do |t|
- t.integer "variant_id", null: false
- t.integer "hub_id", null: false
- t.decimal "price", precision: 8, scale: 2
+ create_table "variant_overrides", force: :cascade do |t|
+ t.integer "variant_id", null: false
+ t.integer "hub_id", null: false
+ t.decimal "price", precision: 8, scale: 2
t.integer "count_on_hand"
t.integer "default_stock"
t.boolean "resettable"
- t.string "sku"
+ t.string "sku", limit: 255
t.boolean "on_demand"
t.datetime "permission_revoked_at"
t.datetime "import_date"
@@ -1196,11 +1196,11 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "variant_overrides", ["variant_id", "hub_id"], name: "index_variant_overrides_on_variant_id_and_hub_id", using: :btree
- create_table "versions", force: true do |t|
- t.string "item_type", null: false
- t.integer "item_id", null: false
- t.string "event", null: false
- t.string "whodunnit"
+ create_table "versions", force: :cascade do |t|
+ t.string "item_type", limit: 255, null: false
+ t.integer "item_id", null: false
+ t.string "event", limit: 255, null: false
+ t.string "whodunnit", limit: 255
t.text "object"
t.datetime "created_at"
t.text "custom_data"
@@ -1209,155 +1209,106 @@ ActiveRecord::Schema.define(version: 20201113163227) do
add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id", using: :btree
add_foreign_key "adjustment_metadata", "enterprises", name: "adjustment_metadata_enterprise_id_fk"
- add_foreign_key "adjustment_metadata", "spree_adjustments", name: "adjustment_metadata_adjustment_id_fk", column: "adjustment_id", dependent: :delete
-
+ add_foreign_key "adjustment_metadata", "spree_adjustments", column: "adjustment_id", name: "adjustment_metadata_adjustment_id_fk", on_delete: :cascade
add_foreign_key "coordinator_fees", "enterprise_fees", name: "coordinator_fees_enterprise_fee_id_fk"
add_foreign_key "coordinator_fees", "order_cycles", name: "coordinator_fees_order_cycle_id_fk"
-
add_foreign_key "customers", "enterprises", name: "customers_enterprise_id_fk"
- add_foreign_key "customers", "spree_addresses", name: "customers_bill_address_id_fk", column: "bill_address_id"
- add_foreign_key "customers", "spree_addresses", name: "customers_ship_address_id_fk", column: "ship_address_id"
- add_foreign_key "customers", "spree_users", name: "customers_user_id_fk", column: "user_id"
-
- add_foreign_key "distributors_payment_methods", "enterprises", name: "distributors_payment_methods_distributor_id_fk", column: "distributor_id"
- add_foreign_key "distributors_payment_methods", "spree_payment_methods", name: "distributors_payment_methods_payment_method_id_fk", column: "payment_method_id"
-
- add_foreign_key "distributors_shipping_methods", "enterprises", name: "distributors_shipping_methods_distributor_id_fk", column: "distributor_id"
- add_foreign_key "distributors_shipping_methods", "spree_shipping_methods", name: "distributors_shipping_methods_shipping_method_id_fk", column: "shipping_method_id"
-
+ add_foreign_key "customers", "spree_addresses", column: "bill_address_id", name: "customers_bill_address_id_fk"
+ add_foreign_key "customers", "spree_addresses", column: "ship_address_id", name: "customers_ship_address_id_fk"
+ add_foreign_key "customers", "spree_users", column: "user_id", name: "customers_user_id_fk"
+ add_foreign_key "distributors_payment_methods", "enterprises", column: "distributor_id", name: "distributors_payment_methods_distributor_id_fk"
+ add_foreign_key "distributors_payment_methods", "spree_payment_methods", column: "payment_method_id", name: "distributors_payment_methods_payment_method_id_fk"
+ add_foreign_key "distributors_shipping_methods", "enterprises", column: "distributor_id", name: "distributors_shipping_methods_distributor_id_fk"
+ add_foreign_key "distributors_shipping_methods", "spree_shipping_methods", column: "shipping_method_id", name: "distributors_shipping_methods_shipping_method_id_fk"
add_foreign_key "enterprise_fees", "enterprises", name: "enterprise_fees_enterprise_id_fk"
- add_foreign_key "enterprise_fees", "spree_tax_categories", name: "enterprise_fees_tax_category_id_fk", column: "tax_category_id"
-
- add_foreign_key "enterprise_groups", "spree_addresses", name: "enterprise_groups_address_id_fk", column: "address_id"
- add_foreign_key "enterprise_groups", "spree_users", name: "enterprise_groups_owner_id_fk", column: "owner_id"
-
+ add_foreign_key "enterprise_fees", "spree_tax_categories", column: "tax_category_id", name: "enterprise_fees_tax_category_id_fk"
+ add_foreign_key "enterprise_groups", "spree_addresses", column: "address_id", name: "enterprise_groups_address_id_fk"
+ add_foreign_key "enterprise_groups", "spree_users", column: "owner_id", name: "enterprise_groups_owner_id_fk"
add_foreign_key "enterprise_groups_enterprises", "enterprise_groups", name: "enterprise_groups_enterprises_enterprise_group_id_fk"
add_foreign_key "enterprise_groups_enterprises", "enterprises", name: "enterprise_groups_enterprises_enterprise_id_fk"
-
add_foreign_key "enterprise_relationship_permissions", "enterprise_relationships", name: "erp_enterprise_relationship_id_fk"
-
- add_foreign_key "enterprise_relationships", "enterprises", name: "enterprise_relationships_child_id_fk", column: "child_id"
- add_foreign_key "enterprise_relationships", "enterprises", name: "enterprise_relationships_parent_id_fk", column: "parent_id"
-
+ add_foreign_key "enterprise_relationships", "enterprises", column: "child_id", name: "enterprise_relationships_child_id_fk"
+ add_foreign_key "enterprise_relationships", "enterprises", column: "parent_id", name: "enterprise_relationships_parent_id_fk"
add_foreign_key "enterprise_roles", "enterprises", name: "enterprise_roles_enterprise_id_fk"
- add_foreign_key "enterprise_roles", "spree_users", name: "enterprise_roles_user_id_fk", column: "user_id"
-
- add_foreign_key "enterprises", "spree_addresses", name: "enterprises_address_id_fk", column: "address_id"
- add_foreign_key "enterprises", "spree_users", name: "enterprises_owner_id_fk", column: "owner_id"
-
+ add_foreign_key "enterprise_roles", "spree_users", column: "user_id", name: "enterprise_roles_user_id_fk"
+ add_foreign_key "enterprises", "spree_addresses", column: "address_id", name: "enterprises_address_id_fk"
+ add_foreign_key "enterprises", "spree_users", column: "owner_id", name: "enterprises_owner_id_fk"
add_foreign_key "exchange_fees", "enterprise_fees", name: "exchange_fees_enterprise_fee_id_fk"
add_foreign_key "exchange_fees", "exchanges", name: "exchange_fees_exchange_id_fk"
-
add_foreign_key "exchange_variants", "exchanges", name: "exchange_variants_exchange_id_fk"
- add_foreign_key "exchange_variants", "spree_variants", name: "exchange_variants_variant_id_fk", column: "variant_id"
-
- add_foreign_key "exchanges", "enterprises", name: "exchanges_receiver_id_fk", column: "receiver_id"
- add_foreign_key "exchanges", "enterprises", name: "exchanges_sender_id_fk", column: "sender_id"
+ add_foreign_key "exchange_variants", "spree_variants", column: "variant_id", name: "exchange_variants_variant_id_fk"
+ add_foreign_key "exchanges", "enterprises", column: "receiver_id", name: "exchanges_receiver_id_fk"
+ add_foreign_key "exchanges", "enterprises", column: "sender_id", name: "exchanges_sender_id_fk"
add_foreign_key "exchanges", "order_cycles", name: "exchanges_order_cycle_id_fk"
-
add_foreign_key "order_cycle_schedules", "order_cycles", name: "oc_schedules_order_cycle_id_fk"
add_foreign_key "order_cycle_schedules", "schedules", name: "oc_schedules_schedule_id_fk"
-
- add_foreign_key "order_cycles", "enterprises", name: "order_cycles_coordinator_id_fk", column: "coordinator_id"
-
- add_foreign_key "producer_properties", "enterprises", name: "producer_properties_producer_id_fk", column: "producer_id"
- add_foreign_key "producer_properties", "spree_properties", name: "producer_properties_property_id_fk", column: "property_id"
-
+ add_foreign_key "order_cycles", "enterprises", column: "coordinator_id", name: "order_cycles_coordinator_id_fk"
+ add_foreign_key "producer_properties", "enterprises", column: "producer_id", name: "producer_properties_producer_id_fk"
+ add_foreign_key "producer_properties", "spree_properties", column: "property_id", name: "producer_properties_property_id_fk"
add_foreign_key "proxy_orders", "order_cycles", name: "proxy_orders_order_cycle_id_fk"
- add_foreign_key "proxy_orders", "spree_orders", name: "order_id_fk", column: "order_id"
+ add_foreign_key "proxy_orders", "spree_orders", column: "order_id", name: "order_id_fk"
add_foreign_key "proxy_orders", "subscriptions", name: "proxy_orders_subscription_id_fk"
-
- add_foreign_key "spree_addresses", "spree_countries", name: "spree_addresses_country_id_fk", column: "country_id"
- add_foreign_key "spree_addresses", "spree_states", name: "spree_addresses_state_id_fk", column: "state_id"
-
- add_foreign_key "spree_inventory_units", "spree_orders", name: "spree_inventory_units_order_id_fk", column: "order_id"
- add_foreign_key "spree_inventory_units", "spree_return_authorizations", name: "spree_inventory_units_return_authorization_id_fk", column: "return_authorization_id"
- add_foreign_key "spree_inventory_units", "spree_shipments", name: "spree_inventory_units_shipment_id_fk", column: "shipment_id"
- add_foreign_key "spree_inventory_units", "spree_variants", name: "spree_inventory_units_variant_id_fk", column: "variant_id"
-
- add_foreign_key "spree_line_items", "spree_orders", name: "spree_line_items_order_id_fk", column: "order_id"
- add_foreign_key "spree_line_items", "spree_variants", name: "spree_line_items_variant_id_fk", column: "variant_id"
-
- add_foreign_key "spree_option_values", "spree_option_types", name: "spree_option_values_option_type_id_fk", column: "option_type_id"
-
- add_foreign_key "spree_option_values_variants", "spree_option_values", name: "spree_option_values_variants_option_value_id_fk", column: "option_value_id"
- add_foreign_key "spree_option_values_variants", "spree_variants", name: "spree_option_values_variants_variant_id_fk", column: "variant_id"
-
+ add_foreign_key "spree_addresses", "spree_countries", column: "country_id", name: "spree_addresses_country_id_fk"
+ add_foreign_key "spree_addresses", "spree_states", column: "state_id", name: "spree_addresses_state_id_fk"
+ add_foreign_key "spree_inventory_units", "spree_orders", column: "order_id", name: "spree_inventory_units_order_id_fk"
+ add_foreign_key "spree_inventory_units", "spree_return_authorizations", column: "return_authorization_id", name: "spree_inventory_units_return_authorization_id_fk"
+ add_foreign_key "spree_inventory_units", "spree_shipments", column: "shipment_id", name: "spree_inventory_units_shipment_id_fk"
+ add_foreign_key "spree_inventory_units", "spree_variants", column: "variant_id", name: "spree_inventory_units_variant_id_fk"
+ add_foreign_key "spree_line_items", "spree_orders", column: "order_id", name: "spree_line_items_order_id_fk"
+ add_foreign_key "spree_line_items", "spree_variants", column: "variant_id", name: "spree_line_items_variant_id_fk"
+ add_foreign_key "spree_option_values", "spree_option_types", column: "option_type_id", name: "spree_option_values_option_type_id_fk"
+ add_foreign_key "spree_option_values_variants", "spree_option_values", column: "option_value_id", name: "spree_option_values_variants_option_value_id_fk"
+ add_foreign_key "spree_option_values_variants", "spree_variants", column: "variant_id", name: "spree_option_values_variants_variant_id_fk"
add_foreign_key "spree_orders", "customers", name: "spree_orders_customer_id_fk"
- add_foreign_key "spree_orders", "enterprises", name: "spree_orders_distributor_id_fk", column: "distributor_id"
+ add_foreign_key "spree_orders", "enterprises", column: "distributor_id", name: "spree_orders_distributor_id_fk"
add_foreign_key "spree_orders", "order_cycles", name: "spree_orders_order_cycle_id_fk"
- add_foreign_key "spree_orders", "spree_addresses", name: "spree_orders_bill_address_id_fk", column: "bill_address_id"
- add_foreign_key "spree_orders", "spree_addresses", name: "spree_orders_ship_address_id_fk", column: "ship_address_id"
- add_foreign_key "spree_orders", "spree_users", name: "spree_orders_user_id_fk", column: "user_id"
-
- add_foreign_key "spree_payments", "spree_orders", name: "spree_payments_order_id_fk", column: "order_id"
- add_foreign_key "spree_payments", "spree_payment_methods", name: "spree_payments_payment_method_id_fk", column: "payment_method_id"
-
- add_foreign_key "spree_prices", "spree_variants", name: "spree_prices_variant_id_fk", column: "variant_id"
-
- add_foreign_key "spree_product_option_types", "spree_option_types", name: "spree_product_option_types_option_type_id_fk", column: "option_type_id"
- add_foreign_key "spree_product_option_types", "spree_products", name: "spree_product_option_types_product_id_fk", column: "product_id"
-
- add_foreign_key "spree_product_properties", "spree_products", name: "spree_product_properties_product_id_fk", column: "product_id"
- add_foreign_key "spree_product_properties", "spree_properties", name: "spree_product_properties_property_id_fk", column: "property_id"
-
- add_foreign_key "spree_products", "enterprises", name: "spree_products_supplier_id_fk", column: "supplier_id"
- add_foreign_key "spree_products", "spree_shipping_categories", name: "spree_products_shipping_category_id_fk", column: "shipping_category_id"
- add_foreign_key "spree_products", "spree_tax_categories", name: "spree_products_tax_category_id_fk", column: "tax_category_id"
- add_foreign_key "spree_products", "spree_taxons", name: "spree_products_primary_taxon_id_fk", column: "primary_taxon_id"
-
- add_foreign_key "spree_products_promotion_rules", "spree_products", name: "spree_products_promotion_rules_product_id_fk", column: "product_id"
- add_foreign_key "spree_products_promotion_rules", "spree_promotion_rules", name: "spree_products_promotion_rules_promotion_rule_id_fk", column: "promotion_rule_id"
-
- add_foreign_key "spree_products_taxons", "spree_products", name: "spree_products_taxons_product_id_fk", column: "product_id", dependent: :delete
- add_foreign_key "spree_products_taxons", "spree_taxons", name: "spree_products_taxons_taxon_id_fk", column: "taxon_id", dependent: :delete
-
- add_foreign_key "spree_promotion_action_line_items", "spree_promotion_actions", name: "spree_promotion_action_line_items_promotion_action_id_fk", column: "promotion_action_id"
- add_foreign_key "spree_promotion_action_line_items", "spree_variants", name: "spree_promotion_action_line_items_variant_id_fk", column: "variant_id"
-
- add_foreign_key "spree_promotion_actions", "spree_activators", name: "spree_promotion_actions_activator_id_fk", column: "activator_id"
-
- add_foreign_key "spree_promotion_rules", "spree_activators", name: "spree_promotion_rules_activator_id_fk", column: "activator_id"
-
- add_foreign_key "spree_return_authorizations", "spree_orders", name: "spree_return_authorizations_order_id_fk", column: "order_id"
-
- add_foreign_key "spree_roles_users", "spree_roles", name: "spree_roles_users_role_id_fk", column: "role_id"
- add_foreign_key "spree_roles_users", "spree_users", name: "spree_roles_users_user_id_fk", column: "user_id"
-
- add_foreign_key "spree_shipments", "spree_addresses", name: "spree_shipments_address_id_fk", column: "address_id"
- add_foreign_key "spree_shipments", "spree_orders", name: "spree_shipments_order_id_fk", column: "order_id"
-
- add_foreign_key "spree_state_changes", "spree_users", name: "spree_state_changes_user_id_fk", column: "user_id"
-
- add_foreign_key "spree_states", "spree_countries", name: "spree_states_country_id_fk", column: "country_id"
-
- add_foreign_key "spree_tax_rates", "spree_tax_categories", name: "spree_tax_rates_tax_category_id_fk", column: "tax_category_id"
- add_foreign_key "spree_tax_rates", "spree_zones", name: "spree_tax_rates_zone_id_fk", column: "zone_id"
-
- add_foreign_key "spree_taxons", "spree_taxonomies", name: "spree_taxons_taxonomy_id_fk", column: "taxonomy_id"
- add_foreign_key "spree_taxons", "spree_taxons", name: "spree_taxons_parent_id_fk", column: "parent_id"
-
- add_foreign_key "spree_users", "spree_addresses", name: "spree_users_bill_address_id_fk", column: "bill_address_id"
- add_foreign_key "spree_users", "spree_addresses", name: "spree_users_ship_address_id_fk", column: "ship_address_id"
-
- add_foreign_key "spree_variants", "spree_products", name: "spree_variants_product_id_fk", column: "product_id"
-
- add_foreign_key "spree_zone_members", "spree_zones", name: "spree_zone_members_zone_id_fk", column: "zone_id"
-
- add_foreign_key "subscription_line_items", "spree_variants", name: "subscription_line_items_variant_id_fk", column: "variant_id"
+ add_foreign_key "spree_orders", "spree_addresses", column: "bill_address_id", name: "spree_orders_bill_address_id_fk"
+ add_foreign_key "spree_orders", "spree_addresses", column: "ship_address_id", name: "spree_orders_ship_address_id_fk"
+ add_foreign_key "spree_orders", "spree_users", column: "user_id", name: "spree_orders_user_id_fk"
+ add_foreign_key "spree_payments", "spree_orders", column: "order_id", name: "spree_payments_order_id_fk"
+ add_foreign_key "spree_payments", "spree_payment_methods", column: "payment_method_id", name: "spree_payments_payment_method_id_fk"
+ add_foreign_key "spree_prices", "spree_variants", column: "variant_id", name: "spree_prices_variant_id_fk"
+ add_foreign_key "spree_product_option_types", "spree_option_types", column: "option_type_id", name: "spree_product_option_types_option_type_id_fk"
+ add_foreign_key "spree_product_option_types", "spree_products", column: "product_id", name: "spree_product_option_types_product_id_fk"
+ add_foreign_key "spree_product_properties", "spree_products", column: "product_id", name: "spree_product_properties_product_id_fk"
+ add_foreign_key "spree_product_properties", "spree_properties", column: "property_id", name: "spree_product_properties_property_id_fk"
+ add_foreign_key "spree_products", "enterprises", column: "supplier_id", name: "spree_products_supplier_id_fk"
+ add_foreign_key "spree_products", "spree_shipping_categories", column: "shipping_category_id", name: "spree_products_shipping_category_id_fk"
+ add_foreign_key "spree_products", "spree_tax_categories", column: "tax_category_id", name: "spree_products_tax_category_id_fk"
+ add_foreign_key "spree_products", "spree_taxons", column: "primary_taxon_id", name: "spree_products_primary_taxon_id_fk"
+ add_foreign_key "spree_products_promotion_rules", "spree_products", column: "product_id", name: "spree_products_promotion_rules_product_id_fk"
+ add_foreign_key "spree_products_promotion_rules", "spree_promotion_rules", column: "promotion_rule_id", name: "spree_products_promotion_rules_promotion_rule_id_fk"
+ add_foreign_key "spree_products_taxons", "spree_products", column: "product_id", name: "spree_products_taxons_product_id_fk", on_delete: :cascade
+ add_foreign_key "spree_products_taxons", "spree_taxons", column: "taxon_id", name: "spree_products_taxons_taxon_id_fk", on_delete: :cascade
+ add_foreign_key "spree_promotion_action_line_items", "spree_promotion_actions", column: "promotion_action_id", name: "spree_promotion_action_line_items_promotion_action_id_fk"
+ add_foreign_key "spree_promotion_action_line_items", "spree_variants", column: "variant_id", name: "spree_promotion_action_line_items_variant_id_fk"
+ add_foreign_key "spree_promotion_actions", "spree_activators", column: "activator_id", name: "spree_promotion_actions_activator_id_fk"
+ add_foreign_key "spree_promotion_rules", "spree_activators", column: "activator_id", name: "spree_promotion_rules_activator_id_fk"
+ add_foreign_key "spree_return_authorizations", "spree_orders", column: "order_id", name: "spree_return_authorizations_order_id_fk"
+ add_foreign_key "spree_roles_users", "spree_roles", column: "role_id", name: "spree_roles_users_role_id_fk"
+ add_foreign_key "spree_roles_users", "spree_users", column: "user_id", name: "spree_roles_users_user_id_fk"
+ add_foreign_key "spree_shipments", "spree_addresses", column: "address_id", name: "spree_shipments_address_id_fk"
+ add_foreign_key "spree_shipments", "spree_orders", column: "order_id", name: "spree_shipments_order_id_fk"
+ add_foreign_key "spree_state_changes", "spree_users", column: "user_id", name: "spree_state_changes_user_id_fk"
+ add_foreign_key "spree_states", "spree_countries", column: "country_id", name: "spree_states_country_id_fk"
+ add_foreign_key "spree_tax_rates", "spree_tax_categories", column: "tax_category_id", name: "spree_tax_rates_tax_category_id_fk"
+ add_foreign_key "spree_tax_rates", "spree_zones", column: "zone_id", name: "spree_tax_rates_zone_id_fk"
+ add_foreign_key "spree_taxons", "spree_taxonomies", column: "taxonomy_id", name: "spree_taxons_taxonomy_id_fk"
+ add_foreign_key "spree_taxons", "spree_taxons", column: "parent_id", name: "spree_taxons_parent_id_fk"
+ add_foreign_key "spree_users", "spree_addresses", column: "bill_address_id", name: "spree_users_bill_address_id_fk"
+ add_foreign_key "spree_users", "spree_addresses", column: "ship_address_id", name: "spree_users_ship_address_id_fk"
+ add_foreign_key "spree_variants", "spree_products", column: "product_id", name: "spree_variants_product_id_fk"
+ add_foreign_key "spree_zone_members", "spree_zones", column: "zone_id", name: "spree_zone_members_zone_id_fk"
+ add_foreign_key "subscription_line_items", "spree_variants", column: "variant_id", name: "subscription_line_items_variant_id_fk"
add_foreign_key "subscription_line_items", "subscriptions", name: "subscription_line_items_subscription_id_fk"
-
add_foreign_key "subscriptions", "customers", name: "subscriptions_customer_id_fk"
- add_foreign_key "subscriptions", "enterprises", name: "subscriptions_shop_id_fk", column: "shop_id"
+ add_foreign_key "subscriptions", "enterprises", column: "shop_id", name: "subscriptions_shop_id_fk"
add_foreign_key "subscriptions", "schedules", name: "subscriptions_schedule_id_fk"
- add_foreign_key "subscriptions", "spree_addresses", name: "subscriptions_bill_address_id_fk", column: "bill_address_id"
- add_foreign_key "subscriptions", "spree_addresses", name: "subscriptions_ship_address_id_fk", column: "ship_address_id"
- add_foreign_key "subscriptions", "spree_payment_methods", name: "subscriptions_payment_method_id_fk", column: "payment_method_id"
- add_foreign_key "subscriptions", "spree_shipping_methods", name: "subscriptions_shipping_method_id_fk", column: "shipping_method_id"
-
- add_foreign_key "suburbs", "spree_states", name: "suburbs_state_id_fk", column: "state_id"
-
- add_foreign_key "variant_overrides", "enterprises", name: "variant_overrides_hub_id_fk", column: "hub_id"
- add_foreign_key "variant_overrides", "spree_variants", name: "variant_overrides_variant_id_fk", column: "variant_id"
-
+ add_foreign_key "subscriptions", "spree_addresses", column: "bill_address_id", name: "subscriptions_bill_address_id_fk"
+ add_foreign_key "subscriptions", "spree_addresses", column: "ship_address_id", name: "subscriptions_ship_address_id_fk"
+ add_foreign_key "subscriptions", "spree_payment_methods", column: "payment_method_id", name: "subscriptions_payment_method_id_fk"
+ add_foreign_key "subscriptions", "spree_shipping_methods", column: "shipping_method_id", name: "subscriptions_shipping_method_id_fk"
+ add_foreign_key "suburbs", "spree_states", column: "state_id", name: "suburbs_state_id_fk"
+ add_foreign_key "variant_overrides", "enterprises", column: "hub_id", name: "variant_overrides_hub_id_fk"
+ add_foreign_key "variant_overrides", "spree_variants", column: "variant_id", name: "variant_overrides_variant_id_fk"
end
diff --git a/engines/order_management/app/services/order_management/stock/package.rb b/engines/order_management/app/services/order_management/stock/package.rb
index f3bfaf38f0..d6ebbb35c1 100644
--- a/engines/order_management/app/services/order_management/stock/package.rb
+++ b/engines/order_management/app/services/order_management/stock/package.rb
@@ -101,10 +101,9 @@ module OrderManagement
def inspect
out = "#{order} - "
- out << contents.map do |content_item|
+ out.dup << contents.map do |content_item|
"#{content_item.variant.name} #{content_item.quantity} #{content_item.state}"
end.join('/')
- out
end
def to_shipment
diff --git a/engines/order_management/spec/services/order_management/stock/package_spec.rb b/engines/order_management/spec/services/order_management/stock/package_spec.rb
index 205d50ae1a..1a7fbd017a 100644
--- a/engines/order_management/spec/services/order_management/stock/package_spec.rb
+++ b/engines/order_management/spec/services/order_management/stock/package_spec.rb
@@ -112,6 +112,13 @@ module OrderManagement
expect(shipment.shipping_method).to eq shipping_method
end
+
+ describe "#inpsect" do
+ it "prints the package contents" do
+ subject.add variant, 5
+ expect(subject.inspect).to match("#{variant.name} 5")
+ end
+ end
end
context "#shipping_methods and #shipping_categories" do
diff --git a/engines/order_management/spec/services/order_management/stock/packer_spec.rb b/engines/order_management/spec/services/order_management/stock/packer_spec.rb
index 1100090af0..53b6505231 100644
--- a/engines/order_management/spec/services/order_management/stock/packer_spec.rb
+++ b/engines/order_management/spec/services/order_management/stock/packer_spec.rb
@@ -10,7 +10,7 @@ module OrderManagement
subject { Packer.new(stock_location, order) }
- before { order.line_items.first.variant.update(weight: 1) }
+ before { order.line_items.first.variant.update(unit_value: 100) }
it 'builds a package with all the items' do
package = subject.package
diff --git a/lib/application_responder.rb b/lib/application_responder.rb
new file mode 100644
index 0000000000..b27280045e
--- /dev/null
+++ b/lib/application_responder.rb
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+
+class ApplicationResponder < ActionController::Responder
+ include Responders::FlashResponder
+ include Responders::HttpCacheResponder
+end
diff --git a/lib/open_food_network/customers_report.rb b/lib/open_food_network/customers_report.rb
index 96cbd0fd4e..457dc66d59 100644
--- a/lib/open_food_network/customers_report.rb
+++ b/lib/open_food_network/customers_report.rb
@@ -60,7 +60,11 @@ module OpenFoodNetwork
def filter_to_supplier(orders)
if params[:supplier_id].to_i > 0
orders.select do |order|
- order.line_items.includes(:product).references(:product).where("spree_products.supplier_id = ?", params[:supplier_id].to_i).count > 0
+ order.line_items.includes(:product)
+ .where("spree_products.supplier_id = ?", params[:supplier_id].to_i)
+ .references(:product)
+ .count
+ .positive?
end
else
orders
diff --git a/lib/open_food_network/orders_and_fulfillments_report/distributor_totals_by_supplier_report.rb b/lib/open_food_network/orders_and_fulfillments_report/distributor_totals_by_supplier_report.rb
index cfb1a1f3f9..d9828e6aef 100644
--- a/lib/open_food_network/orders_and_fulfillments_report/distributor_totals_by_supplier_report.rb
+++ b/lib/open_food_network/orders_and_fulfillments_report/distributor_totals_by_supplier_report.rb
@@ -59,7 +59,7 @@ module OpenFoodNetwork
proc { |line_items| line_items.first.variant.product.supplier.name },
proc { |line_items| line_items.first.variant.product.name },
proc { |line_items| line_items.first.variant.full_name },
- proc { |line_items| line_items.sum(:quantity) },
+ proc { |line_items| line_items.to_a.sum(&:quantity) },
proc { |line_items| line_items.first.price },
proc { |line_items| line_items.sum(&:amount) },
proc { |_line_items| "" },
diff --git a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb
index cddc962f49..98aa381a79 100644
--- a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb
+++ b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb
@@ -60,7 +60,7 @@ module OpenFoodNetwork
proc { |line_items| line_items.first.variant.product.name },
proc { |line_items| line_items.first.variant.full_name },
proc { |line_items| line_items.first.order.distributor.name },
- proc { |line_items| line_items.sum(:quantity) },
+ proc { |line_items| line_items.to_a.sum(&:quantity) },
proc { |line_items| line_items.first.price },
proc { |line_items| line_items.sum(&:amount) },
proc { |_line_items| I18n.t(:report_header_shipping_method) }
diff --git a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb
index 3029cf19b3..a7a341664c 100644
--- a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb
+++ b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb
@@ -44,7 +44,7 @@ module OpenFoodNetwork
supplier_name,
product_name,
line_items_name,
- proc { |line_items| line_items.sum(:quantity) },
+ proc { |line_items| line_items.to_a.sum(&:quantity) },
proc { |line_items| total_units(line_items) },
proc { |line_items| line_items.first.price },
proc { |line_items| line_items.sum(&:amount) },
diff --git a/lib/open_food_network/payments_report.rb b/lib/open_food_network/payments_report.rb
index 7cfc6342f4..1ee3f0a291 100644
--- a/lib/open_food_network/payments_report.rb
+++ b/lib/open_food_network/payments_report.rb
@@ -92,28 +92,42 @@ module OpenFoodNetwork
[proc { |payments| payments.first.order.payment_state },
proc { |payments| payments.first.order.distributor.name },
proc { |payments| payments.first.payment_method.name },
- proc { |payments| payments.sum(:amount) }]
+ proc { |payments| payments.sum(&:amount) }]
when "itemised_payment_totals"
[proc { |orders| orders.first.payment_state },
proc { |orders| orders.first.distributor.name },
- proc { |orders| orders.sum(:item_total) },
+ proc { |orders| orders.to_a.sum(&:item_total) },
proc { |orders| orders.sum(&:ship_total) },
proc { |orders| orders.sum(&:outstanding_balance) },
- proc { |orders| orders.sum(:total) }]
+ proc { |orders| orders.map(&:total).sum }]
when "payment_totals"
[proc { |orders| orders.first.payment_state },
proc { |orders| orders.first.distributor.name },
- proc { |orders| orders.sum(:item_total) },
+ proc { |orders| orders.to_a.sum(&:item_total) },
proc { |orders| orders.sum(&:ship_total) },
- proc { |orders| orders.sum(:total) },
- proc { |orders| orders.sum { |o| o.payments.select { |payment| payment.completed? && (payment.payment_method.name.to_s.include? "EFT") }.sum(:amount) } },
- proc { |orders| orders.sum { |o| o.payments.select { |payment| payment.completed? && (payment.payment_method.name.to_s.include? "PayPal") }.sum(:amount) } },
+ proc { |orders| orders.map(&:total).sum },
+ proc { |orders|
+ orders.sum { |o|
+ o.payments.select { |payment|
+ payment.completed? &&
+ (payment.payment_method.name.to_s.include? "EFT")
+ }.sum(&:amount)
+ }
+ },
+ proc { |orders|
+ orders.sum { |o|
+ o.payments.select { |payment|
+ payment.completed? &&
+ (payment.payment_method.name.to_s.include? "PayPal")
+ }.sum(&:amount)
+ }
+ },
proc { |orders| orders.sum(&:outstanding_balance) }]
else
[proc { |payments| payments.first.order.payment_state },
proc { |payments| payments.first.order.distributor.name },
proc { |payments| payments.first.payment_method.name },
- proc { |payments| payments.sum(:amount) }]
+ proc { |payments| payments.sum(&:amount) }]
end
end
end
diff --git a/lib/open_food_network/users_and_enterprises_report.rb b/lib/open_food_network/users_and_enterprises_report.rb
index 74e328ee20..24a92bdf2f 100644
--- a/lib/open_food_network/users_and_enterprises_report.rb
+++ b/lib/open_food_network/users_and_enterprises_report.rb
@@ -122,7 +122,7 @@ module OpenFoodNetwork
end
def to_bool(value)
- ActiveRecord::ConnectionAdapters::Column.value_to_boolean(value)
+ ActiveRecord::Type::Boolean.new.type_cast_from_database(value)
end
def to_local_datetime(date)
diff --git a/lib/spree/api/controller_setup.rb b/lib/spree/api/controller_setup.rb
index d1ffdb4a1e..7d9215a332 100644
--- a/lib/spree/api/controller_setup.rb
+++ b/lib/spree/api/controller_setup.rb
@@ -13,7 +13,6 @@ module Spree
include ActionController::Rendering
include ActionController::ImplicitRender
include ActionController::Rescue
- include ActionController::MimeResponds
include ActionController::Head
include CanCan::ControllerAdditions
@@ -21,8 +20,6 @@ module Spree
prepend_view_path Rails.root + "app/views"
append_view_path File.expand_path("../../../app/views", File.dirname(__FILE__))
-
- respond_to :json
end
end
end
diff --git a/lib/spree/core.rb b/lib/spree/core.rb
index e3ef713db7..cdf1ff4b2a 100644
--- a/lib/spree/core.rb
+++ b/lib/spree/core.rb
@@ -10,7 +10,7 @@ require 'mail'
require 'paperclip'
require 'paranoia'
require 'ransack'
-require 'state_machine'
+require 'state_machines'
module Spree
mattr_accessor :user_class
diff --git a/lib/spree/core/controller_helpers/respond_with.rb b/lib/spree/core/controller_helpers/respond_with.rb
index 0e3e7ef56b..5fcd4bc2cb 100644
--- a/lib/spree/core/controller_helpers/respond_with.rb
+++ b/lib/spree/core/controller_helpers/respond_with.rb
@@ -30,6 +30,22 @@ module ActionController
(options.delete(:responder) || Spree::Responder).call(self, resources, options)
end
end
+
+ private
+
+ def retrieve_collector_from_mimes(mimes = nil, &block)
+ mimes ||= collect_mimes_from_class_level
+ collector = Collector.new(mimes, request.variant)
+ block.call(collector) if block_given?
+ format = collector.negotiate_format(request)
+
+ if format
+ _process_format(format)
+ collector
+ else
+ raise ActionController::UnknownFormat
+ end
+ end
end
end
diff --git a/spec/controllers/admin/bulk_line_items_controller_spec.rb b/spec/controllers/admin/bulk_line_items_controller_spec.rb
index da05149079..bd68266792 100644
--- a/spec/controllers/admin/bulk_line_items_controller_spec.rb
+++ b/spec/controllers/admin/bulk_line_items_controller_spec.rb
@@ -195,7 +195,7 @@ describe Admin::BulkLineItemsController, type: :controller do
it "returns an empty JSON response" do
spree_put :update, params
- expect(response.body).to eq ' '
+ expect(response.body).to eq ""
end
it 'returns a 204 response' do
@@ -273,7 +273,7 @@ describe Admin::BulkLineItemsController, type: :controller do
it 'returns an empty JSON response' do
spree_delete :destroy, params
- expect(response.body).to eq ' '
+ expect(response.body).to eq ""
end
it 'returns a 204 response' do
diff --git a/spec/controllers/user_confirmations_controller_spec.rb b/spec/controllers/user_confirmations_controller_spec.rb
index 82ec5c2cc3..dacbfcb138 100644
--- a/spec/controllers/user_confirmations_controller_spec.rb
+++ b/spec/controllers/user_confirmations_controller_spec.rb
@@ -70,7 +70,9 @@ describe UserConfirmationsController, type: :controller do
performing_deliveries do
expect do
spree_post :create, spree_user: { email: unconfirmed_user.email }
- end.to send_confirmation_instructions
+ end.to enqueue_job ActionMailer::DeliveryJob
+
+ expect(enqueued_jobs.last.to_s).to match "confirmation_instructions"
end
end
end
diff --git a/spec/features/admin/users_spec.rb b/spec/features/admin/users_spec.rb
index 94cb4b881f..10efd1e4d2 100644
--- a/spec/features/admin/users_spec.rb
+++ b/spec/features/admin/users_spec.rb
@@ -124,7 +124,7 @@ feature "Managing users" do
# The `a` element doesn't have an href, so we can't use click_link.
find("a", text: "Resend").click
expect(page).to have_text "Resend done"
- end.to send_confirmation_instructions
+ end.to enqueue_job ActionMailer::DeliveryJob
end
end
end
diff --git a/spec/features/consumer/account/settings_spec.rb b/spec/features/consumer/account/settings_spec.rb
index 77012ee3d8..86c952091d 100644
--- a/spec/features/consumer/account/settings_spec.rb
+++ b/spec/features/consumer/account/settings_spec.rb
@@ -21,23 +21,23 @@ feature "Account Settings", js: true do
end
it "allows the user to update their email address" do
- performing_deliveries do
- fill_in 'user_email', with: 'new@email.com'
+ fill_in 'user_email', with: 'new@email.com'
+ performing_deliveries do
expect do
click_button I18n.t(:update)
- end.to send_confirmation_instructions
-
- sent_mail = ActionMailer::Base.deliveries.last
- expect(sent_mail.to).to eq ['new@email.com']
-
- expect(find(".alert-box.success").text.strip).to eq "#{I18n.t('spree.account_updated')} ×"
- user.reload
- expect(user.email).to eq 'old@email.com'
- expect(user.unconfirmed_email).to eq 'new@email.com'
- click_link I18n.t('spree.users.show.tabs.settings')
- expect(page).to have_content I18n.t('spree.users.show.unconfirmed_email', unconfirmed_email: 'new@email.com')
+ end.to enqueue_job ActionMailer::DeliveryJob
end
+
+ expect(enqueued_jobs.last.to_s).to match "new@email.com"
+
+ expect(find(".alert-box.success").text.strip).to eq "#{I18n.t('spree.account_updated')} ×"
+ user.reload
+ expect(user.email).to eq 'old@email.com'
+ expect(user.unconfirmed_email).to eq 'new@email.com'
+ click_link I18n.t('spree.users.show.tabs.settings')
+ expect(page).to have_content I18n.t('spree.users.show.unconfirmed_email',
+ unconfirmed_email: 'new@email.com')
end
it "allows the user to change their password" do
diff --git a/spec/features/consumer/authentication_spec.rb b/spec/features/consumer/authentication_spec.rb
index 790681cbd6..50c9974a49 100644
--- a/spec/features/consumer/authentication_spec.rb
+++ b/spec/features/consumer/authentication_spec.rb
@@ -82,7 +82,7 @@ feature "Authentication", js: true do
expect do
click_signup_button
expect(page).to have_content I18n.t('devise.user_registrations.spree_user.signed_up_but_unconfirmed')
- end.to send_confirmation_instructions
+ end.to enqueue_job ActionMailer::DeliveryJob
end
end
end
@@ -104,8 +104,9 @@ feature "Authentication", js: true do
expect do
click_reset_password_button
expect(page).to have_reset_password
- end.to enqueue_job Delayed::PerformableMethod
- expect(Delayed::Job.last.payload_object.method_name).to eq(:send_reset_password_instructions_without_delay)
+ end.to enqueue_job ActionMailer::DeliveryJob
+
+ expect(enqueued_jobs.last.to_s).to match "reset_password_instructions"
end
context "user with unconfirmed email" do
diff --git a/spec/helpers/html_helper_spec.rb b/spec/helpers/html_helper_spec.rb
deleted file mode 100644
index 3b08d16dd3..0000000000
--- a/spec/helpers/html_helper_spec.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'spec_helper'
-
-describe HtmlHelper, type: :helper do
- describe "stripping html from a string" do
- it "strips tags" do
- expect(helper.strip_html('Hello world!
')).to eq("Hello world!")
- end
-
- it "removes nbsp and amp entities" do
- expect(helper.strip_html('Hello world&&')).to eq('Hello world&&')
- end
-
- it "returns nil for nil input" do
- expect(helper.strip_html(nil)).to be_nil
- end
-
- describe "line breaks" do
- it "adds two line breaks after heading tags" do
- expect(helper.strip_html("foo
bar")).to eq("foo\n\nbar");
- expect(helper.strip_html("foo
bar")).to eq("foo\n\nbar");
- end
-
- it "adds two line breaks after p tags" do
- expect(helper.strip_html("foo
bar")).to eq("foo\n\nbar");
- end
-
- it "adds two line breaks after div tags" do
- expect(helper.strip_html("foo
bar")).to eq("foo\n\nbar");
- end
-
- it "adds a line break after br tags" do
- expect(helper.strip_html("foo
bar")).to eq("foo\nbar");
- expect(helper.strip_html("foo
bar")).to eq("foo\nbar");
- expect(helper.strip_html("foo
bar")).to eq("foo\nbar");
- end
-
- it "strips line breaks at the end of the string" do
- expect(helper.strip_html("foo
")).to eq("foo");
- end
- end
- end
-end
diff --git a/spec/helpers/spree/admin/base_helper_spec.rb b/spec/helpers/spree/admin/base_helper_spec.rb
index db15d2a283..0b273e240e 100644
--- a/spec/helpers/spree/admin/base_helper_spec.rb
+++ b/spec/helpers/spree/admin/base_helper_spec.rb
@@ -9,7 +9,7 @@ describe Spree::BaseHelper, type: :helper do
subject { helper.link_to_remove_fields(name, form, options) }
it 'returns an `a` tag followed by a hidden `input` tag' do
- expect(subject).to eq("Hola<input type="hidden" name="_method" value="destroy">")
+ expect(subject).to eq("Hola<input type="hidden" name="_method" value="destroy">")
end
end
end
diff --git a/spec/jobs/confirm_order_job_spec.rb b/spec/jobs/confirm_order_job_spec.rb
index e3138620e3..61e34f0257 100644
--- a/spec/jobs/confirm_order_job_spec.rb
+++ b/spec/jobs/confirm_order_job_spec.rb
@@ -11,6 +11,6 @@ describe ConfirmOrderJob do
expect(customer_confirm_fake).to receive :deliver
expect(shop_confirm_fake).to receive :deliver
- run_job ConfirmOrderJob.new order.id
+ ConfirmOrderJob.perform_now order.id
end
end
diff --git a/spec/jobs/confirm_signup_job_spec.rb b/spec/jobs/confirm_signup_job_spec.rb
index 59624b9a87..aafbcb016a 100644
--- a/spec/jobs/confirm_signup_job_spec.rb
+++ b/spec/jobs/confirm_signup_job_spec.rb
@@ -8,6 +8,6 @@ describe ConfirmSignupJob do
expect(Spree::UserMailer).to receive(:signup_confirmation).with(user).and_return(mail)
expect(mail).to receive(:deliver)
- run_job ConfirmSignupJob.new user.id
+ ConfirmSignupJob.perform_now(user.id)
end
end
diff --git a/spec/jobs/order_cycle_notification_job_spec.rb b/spec/jobs/order_cycle_notification_job_spec.rb
index aa2eb2b2b4..06092433ee 100644
--- a/spec/jobs/order_cycle_notification_job_spec.rb
+++ b/spec/jobs/order_cycle_notification_job_spec.rb
@@ -9,7 +9,7 @@ describe OrderCycleNotificationJob do
end
it 'sends a mail to each supplier' do
- run_job OrderCycleNotificationJob.new(order_cycle.id)
+ OrderCycleNotificationJob.perform_now order_cycle.id
expect(ProducerMailer).to have_received(:order_cycle_report).twice
end
end
diff --git a/spec/jobs/welcome_enterprise_job_spec.rb b/spec/jobs/welcome_enterprise_job_spec.rb
index a41322d185..6cdb295e49 100644
--- a/spec/jobs/welcome_enterprise_job_spec.rb
+++ b/spec/jobs/welcome_enterprise_job_spec.rb
@@ -8,6 +8,6 @@ describe WelcomeEnterpriseJob do
expect(EnterpriseMailer).to receive(:welcome).with(enterprise).and_return(mail)
expect(mail).to receive(:deliver)
- run_job WelcomeEnterpriseJob.new(enterprise.id)
+ WelcomeEnterpriseJob.perform_now(enterprise.id)
end
end
diff --git a/spec/mailers/order_mailer_spec.rb b/spec/mailers/order_mailer_spec.rb
index 516c7f1d12..f94b573c90 100644
--- a/spec/mailers/order_mailer_spec.rb
+++ b/spec/mailers/order_mailer_spec.rb
@@ -23,14 +23,14 @@ describe Spree::OrderMailer do
it "confirm_email_for_customer accepts an order id as an alternative to an Order object" do
expect(Spree::Order).to receive(:find).with(order.id).and_return(order)
expect {
- confirmation_email = Spree::OrderMailer.confirm_email_for_customer(order.id)
+ Spree::OrderMailer.confirm_email_for_customer(order.id).deliver
}.to_not raise_error
end
it "cancel_email accepts an order id as an alternative to an Order object" do
expect(Spree::Order).to receive(:find).with(order.id).and_return(order)
expect {
- cancel_email = Spree::OrderMailer.cancel_email(order.id)
+ Spree::OrderMailer.cancel_email(order.id).deliver
}.to_not raise_error
end
end
diff --git a/spec/mailers/shipment_mailer_spec.rb b/spec/mailers/shipment_mailer_spec.rb
index e952536130..c1d8f046b4 100644
--- a/spec/mailers/shipment_mailer_spec.rb
+++ b/spec/mailers/shipment_mailer_spec.rb
@@ -30,7 +30,7 @@ describe Spree::ShipmentMailer do
it "shipment_email accepts an shipment id as an alternative to an Shipment object" do
expect(Spree::Shipment).to receive(:find).with(shipment.id).and_return(shipment)
expect {
- shipped_email = Spree::ShipmentMailer.shipped_email(shipment.id)
+ Spree::ShipmentMailer.shipped_email(shipment.id).deliver
}.to_not raise_error
end
end
diff --git a/spec/mailers/test_mailer_spec.rb b/spec/mailers/test_mailer_spec.rb
index 71087a9f36..e0b023c6bf 100644
--- a/spec/mailers/test_mailer_spec.rb
+++ b/spec/mailers/test_mailer_spec.rb
@@ -15,7 +15,7 @@ describe Spree::TestMailer do
it "confirm_email accepts a user id as an alternative to a User object" do
expect(Spree.user_class).to receive(:find).with(user.id).and_return(user)
expect {
- test_email = Spree::TestMailer.test_email(user.id)
+ Spree::TestMailer.test_email(user.id).deliver
}.to_not raise_error
end
end
diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb
index 9d1b597d26..8d4e5b40b9 100644
--- a/spec/mailers/user_mailer_spec.rb
+++ b/spec/mailers/user_mailer_spec.rb
@@ -48,7 +48,7 @@ describe Spree::UserMailer do
# adapted from https://github.com/spree/spree_auth_devise/blob/70737af/spec/mailers/user_mailer_spec.rb
describe '#reset_password_instructions' do
describe 'message contents' do
- let(:message) { described_class.reset_password_instructions(user, nil) }
+ let(:message) { described_class.reset_password_instructions(user, nil).deliver }
context 'subject includes' do
it 'translated devise instructions' do
diff --git a/spec/models/column_preference_spec.rb b/spec/models/column_preference_spec.rb
index 94c5c1810c..6cc56fc05f 100644
--- a/spec/models/column_preference_spec.rb
+++ b/spec/models/column_preference_spec.rb
@@ -53,7 +53,7 @@ describe ColumnPreference, type: :model do
it "uses defaults where no stored preference exists" do
expect(preferences.all?(&:new_record?)).to be true
- expect(preferences.map(&:column_name)).to eq [:col1, :col2, :col3]
+ expect(preferences.map(&:column_name)).to eq ["col1", "col2", "col3"]
expect(preferences.map(&:visible)).to eq [false, true, false]
end
end
diff --git a/spec/models/enterprise_caching_spec.rb b/spec/models/enterprise_caching_spec.rb
index 6160481c91..8cec4d5822 100644
--- a/spec/models/enterprise_caching_spec.rb
+++ b/spec/models/enterprise_caching_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
describe Enterprise do
context "key-based caching invalidation" do
describe "is touched when a(n)" do
- let(:enterprise) { create(:distributor_enterprise, updated_at: 1.week.ago) }
+ let(:enterprise) { create(:distributor_enterprise, updated_at: Time.zone.now - 1.week) }
let(:taxon) { create(:taxon) }
let(:supplier2) { create(:supplier_enterprise) }
@@ -14,26 +14,37 @@ describe Enterprise do
let(:producer_property) { enterprise.producer_properties.last }
before do
+ pp enterprise.updated_at
product.set_property 'Organic', 'NASAA 12345'
enterprise.set_producer_property 'Biodynamic', 'ASDF 4321'
end
it "touches enterprise when a classification on that product changes" do
- expect { classification.save! }.to change { enterprise.updated_at }
+ expect {
+ classification.save!
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
it "touches enterprise when a property on that product changes" do
- expect { property.save! }.to change { enterprise.reload.updated_at }
+ expect {
+ property.save!
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
it "touches enterprise when a producer property on that product changes" do
- expect { producer_property.save! }.to change { enterprise.reload.updated_at }
+ expect {
+ producer_property.save!
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
it "touches enterprise when the supplier of a product changes" do
expect {
product.update!(supplier: supplier2)
- }.to change { enterprise.reload.updated_at }
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
end
@@ -54,26 +65,39 @@ describe Enterprise do
before { oc }
it "touches enterprise when a classification on that product changes" do
- expect { classification.save! }.to change { enterprise.reload.updated_at }
+ expect {
+ classification.save!
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
it "touches enterprise when a property on that product changes" do
- expect { property.save! }.to change { enterprise.reload.updated_at }
+ expect {
+ property.save!
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
it "touches enterprise when a producer property on that product changes" do
- expect { producer_property.save! }.to change { enterprise.reload.updated_at }
+ expect {
+ producer_property.save!
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
it "touches enterprise when the supplier of a product changes" do
expect {
product.update!(supplier: supplier2)
- }.to change { enterprise.reload.updated_at }
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
end
it "touches enterprise when the product's variant is added to order cycle" do
- expect { oc }.to change { enterprise.reload.updated_at }
+ expect {
+ oc
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
end
@@ -82,7 +106,10 @@ describe Enterprise do
let!(:er) { create(:enterprise_relationship, parent: enterprise, child: child_enterprise) }
it "touches enterprise when enterprise relationship is updated" do
- expect { er.save! }.to change { enterprise.reload.updated_at }
+ expect {
+ er.save!
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
end
@@ -96,16 +123,23 @@ describe Enterprise do
it "touches enterprise when distributor_shipping_method is updated" do
expect {
enterprise.distributor_shipping_methods.first.save!
- }.to change { enterprise.reload.updated_at }
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
it "touches enterprise when shipping method is updated" do
- expect { sm.save! }.to change { enterprise.reload.updated_at }
+ expect {
+ sm.save!
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
end
it "touches enterprise when address is updated" do
- expect{ enterprise.address.save! }.to change { enterprise.reload.updated_at }
+ expect {
+ enterprise.address.save!
+ enterprise.reload
+ }.to change { enterprise.updated_at }
end
end
end
diff --git a/spec/models/spree/order/checkout_spec.rb b/spec/models/spree/order/checkout_spec.rb
index 3fadb6b8e0..27a35c8023 100644
--- a/spec/models/spree/order/checkout_spec.rb
+++ b/spec/models/spree/order/checkout_spec.rb
@@ -59,7 +59,7 @@ describe Spree::Order::Checkout do
it "cannot transition to address without any line items" do
expect(order.line_items).to be_blank
- expect(lambda { order.next! }).to raise_error(StateMachine::InvalidTransition,
+ expect(lambda { order.next! }).to raise_error(StateMachines::InvalidTransition,
/#{Spree.t(:there_are_no_items_for_this_order)}/)
end
@@ -82,7 +82,7 @@ describe Spree::Order::Checkout do
context "if there are no shipping rates for any shipment" do
specify do
transition = lambda { order.next! }
- expect(transition).to raise_error(StateMachine::InvalidTransition,
+ expect(transition).to raise_error(StateMachines::InvalidTransition,
/#{Spree.t(:items_cannot_be_shipped)}/)
end
end
@@ -167,7 +167,7 @@ describe Spree::Order::Checkout do
it 'raises' do
expect { order.restart_checkout! }
.to raise_error(
- StateMachine::InvalidTransition,
+ StateMachines::InvalidTransition,
/Cannot transition state via :restart_checkout/
)
end
diff --git a/spec/models/spree/order/state_machine_spec.rb b/spec/models/spree/order/state_machine_spec.rb
index f9a4164ef1..fb65352a59 100644
--- a/spec/models/spree/order/state_machine_spec.rb
+++ b/spec/models/spree/order/state_machine_spec.rb
@@ -73,7 +73,7 @@ describe Spree::Order do
end
context "#can_cancel?" do
- %w(pending backorder ready).each do |shipment_state|
+ [:pending, :backorder, :ready].each do |shipment_state|
it "should be true if shipment_state is #{shipment_state}" do
allow(order).to receive_messages completed?: true
order.shipment_state = shipment_state
@@ -81,7 +81,8 @@ describe Spree::Order do
end
end
- (Spree::Shipment.state_machine.states.keys - %w(pending backorder ready)).each do |shipment_state|
+ (Spree::Shipment.state_machine.states.keys - [:pending, :backorder, :ready])
+ .each do |shipment_state|
it "should be false if shipment_state is #{shipment_state}" do
allow(order).to receive_messages completed?: true
order.shipment_state = shipment_state
diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb
index 17c0d6e18f..958ece8e52 100644
--- a/spec/models/spree/order_spec.rb
+++ b/spec/models/spree/order_spec.rb
@@ -1321,7 +1321,7 @@ describe Spree::Order do
it 'raises' do
expect { order.restart_checkout! }
- .to raise_error(StateMachine::InvalidTransition)
+ .to raise_error(StateMachines::InvalidTransition)
end
end
diff --git a/spec/models/spree/user_spec.rb b/spec/models/spree/user_spec.rb
index abd34364c3..26930a4925 100644
--- a/spec/models/spree/user_spec.rb
+++ b/spec/models/spree/user_spec.rb
@@ -1,6 +1,6 @@
require 'spec_helper'
-describe Spree.user_class do
+describe Spree::User do
include OpenFoodNetwork::EmailHelper
describe "associations" do
@@ -81,11 +81,10 @@ describe Spree.user_class do
performing_deliveries do
expect do
create(:user, email: 'new_user@example.com', confirmation_sent_at: nil, confirmed_at: nil)
- end.to send_confirmation_instructions
+ end.to enqueue_job ActionMailer::DeliveryJob
end
- sent_mail = ActionMailer::Base.deliveries.last
- expect(sent_mail.to).to eq ['new_user@example.com']
+ expect(enqueued_jobs.last.to_s).to match "confirmation_instructions"
end
context "with the the same email as existing customers" do
diff --git a/spec/services/bulk_invoice_service_spec.rb b/spec/services/bulk_invoice_service_spec.rb
index 687e680bcc..ee1e9ad077 100644
--- a/spec/services/bulk_invoice_service_spec.rb
+++ b/spec/services/bulk_invoice_service_spec.rb
@@ -1,15 +1,15 @@
require 'spec_helper'
describe BulkInvoiceService do
+ include ActiveJob::TestHelper
+
let(:service) { BulkInvoiceService.new }
describe "#start_pdf_job" do
it "starts a background process to create a pdf with multiple invoices" do
expect do
service.start_pdf_job [1, 2]
- end.to enqueue_job Delayed::PerformableMethod
-
- expect(Delayed::Job.last.payload_object.method_name).to eq :start_pdf_job_without_delay
+ end.to enqueue_job BulkInvoiceJob
end
it "creates a PDF invoice" do
@@ -17,7 +17,9 @@ describe BulkInvoiceService do
order.bill_address = order.ship_address
order.save!
- service.start_pdf_job_without_delay([order.id])
+ perform_enqueued_jobs do
+ service.start_pdf_job([order.id])
+ end
expect(service.invoice_created?(service.id)).to be_truthy
end
@@ -65,7 +67,9 @@ describe BulkInvoiceService do
expect(renderer).to receive(:render_to_string).with(order_oldest).ordered.and_return("")
order_ids = [order_oldest, order_old, order_older].map(&:id)
- service.start_pdf_job_without_delay(order_ids)
+ perform_enqueued_jobs do
+ service.start_pdf_job(order_ids)
+ end
end
end
end
diff --git a/spec/services/order_checkout_restart_spec.rb b/spec/services/order_checkout_restart_spec.rb
index f74a427c02..a5b7258e74 100644
--- a/spec/services/order_checkout_restart_spec.rb
+++ b/spec/services/order_checkout_restart_spec.rb
@@ -49,7 +49,7 @@ describe OrderCheckoutRestart do
it "does not reset the order state nor clears incomplete shipments and payments" do
expect do
OrderCheckoutRestart.new(order).call
- end.to raise_error(StateMachine::InvalidTransition)
+ end.to raise_error(StateMachines::InvalidTransition)
expect(order.state).to eq 'payment'
expect(order.shipments.count).to eq 1
diff --git a/spec/services/order_workflow_spec.rb b/spec/services/order_workflow_spec.rb
index 5b2b6f0bf5..bed3a7b0c9 100644
--- a/spec/services/order_workflow_spec.rb
+++ b/spec/services/order_workflow_spec.rb
@@ -49,7 +49,7 @@ describe OrderWorkflow do
end
it "raises error" do
- expect { service.complete! }.to raise_error(StateMachine::InvalidTransition)
+ expect { service.complete! }.to raise_error(StateMachines::InvalidTransition)
end
end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 40551b096e..4c78b8542c 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -49,6 +49,7 @@ require 'support/api_helper'
# Capybara config
require 'selenium-webdriver'
Capybara.javascript_driver = :chrome
+Capybara.server = :webrick
Capybara.register_driver :chrome do |app|
options = Selenium::WebDriver::Chrome::Options.new(
@@ -193,6 +194,7 @@ RSpec.configure do |config|
config.include OpenFoodNetwork::DelayedJobHelper
config.include OpenFoodNetwork::PerformanceHelper
config.include DownloadsHelper, type: :feature
+ config.include ActiveJob::TestHelper
# FactoryBot
require 'factory_bot_rails'