solidus_subscription_boxes 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +29 -29
  3. data/README.md +26 -26
  4. data/Rakefile +47 -47
  5. data/app/assets/config/solidus_subscription_boxes_manifest.js +2 -2
  6. data/app/assets/javascripts/solidus_subscription_boxes/application.js +13 -13
  7. data/app/assets/javascripts/solidus_subscription_boxes/subscription_selection.js +64 -64
  8. data/app/assets/stylesheets/_solidus_subscription_boxes.scss +16 -16
  9. data/app/assets/stylesheets/solidus_subscription_boxes/subscription_box.css.scss +29 -29
  10. data/app/controllers/solidus_subscription_boxes/application_controller.rb +4 -4
  11. data/app/controllers/solidus_subscription_boxes/subscription_boxes_controller.rb +6 -6
  12. data/app/decorators/solidus_subscriptions/models/checkout/update_preference_decorator.rb +14 -14
  13. data/app/decorators/spree/controllers/api/v1/subscriptions/meal_preference_decorator.rb +20 -20
  14. data/app/decorators/spree/controllers/orders/meal_preference_decorator.rb +35 -32
  15. data/app/decorators/spree/controllers/users/set_box_preference_decorator.rb +31 -31
  16. data/app/decorators/spree/orders/preference_decorator.rb +14 -14
  17. data/app/decorators/spree/products/boxable_decorator.rb +11 -11
  18. data/app/helpers/solidus_subscription_boxes/application_helper.rb +19 -19
  19. data/app/jobs/solidus_subscription_boxes/application_job.rb +4 -4
  20. data/app/mailers/solidus_subscription_boxes/application_mailer.rb +6 -6
  21. data/app/models/solidus_subscription_boxes/application_record.rb +5 -5
  22. data/app/models/solidus_subscription_boxes/box_preference.rb +10 -10
  23. data/app/models/solidus_subscription_boxes/subscription_period.rb +15 -15
  24. data/app/models/solidus_subscription_boxes/subscription_periods_variant.rb +6 -6
  25. data/app/overrides/views/admin_boxable_checkbox.rb +5 -5
  26. data/app/views/layouts/solidus_subscription_boxes/application.html.erb +14 -14
  27. data/app/views/solidus_subscription_boxes/subscription_boxes/_box_variants.html.erb +14 -14
  28. data/app/views/solidus_subscription_boxes/subscription_boxes/_manage.html.erb +39 -39
  29. data/app/views/solidus_subscription_boxes/subscription_boxes/get_started.html.erb +52 -52
  30. data/app/views/spree/admin/products/_boxable_checkbox.html.erb +8 -8
  31. data/app/views/spree/admin/variants/_boxable_checkbox.html.erb +8 -8
  32. data/config/routes.rb +4 -4
  33. data/db/migrate/20170609065436_create_solidus_subscription_boxes_box_preferences.rb +10 -10
  34. data/db/migrate/20170906015531_create_solidus_subscription_boxes_subscription_periods.rb +9 -9
  35. data/db/migrate/20170906021159_create_solidus_subscription_boxes_subscription_periods_variants.rb +10 -10
  36. data/db/migrate/20170919054537_add_boxable_to_spree_variants.rb +5 -5
  37. data/db/migrate/20170919063437_add_boxable_variant_id_to_solidus_subscription_boxes_subscription_periods.rb +5 -5
  38. data/lib/solidus_subscription_boxes.rb +4 -4
  39. data/lib/solidus_subscription_boxes/engine.rb +13 -13
  40. data/lib/solidus_subscription_boxes/version.rb +3 -3
  41. data/lib/tasks/solidus_subscription_boxes_tasks.rake +4 -4
  42. data/test/integration/navigation_test.rb +8 -8
  43. data/test/solidus_subscription_boxes_test.rb +7 -7
  44. data/test/test_helper.rb +21 -21
  45. metadata +3 -3
@@ -1,4 +1,4 @@
1
- module SolidusSubscriptionBoxes
2
- class ApplicationController < ActionController::Base
3
- end
4
- end
1
+ module SolidusSubscriptionBoxes
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -1,6 +1,6 @@
1
- class SolidusSubscriptionBoxes::SubscriptionBoxesController < Spree::StoreController
2
- def get_started
3
- @variant = Spree::Product.find_by_slug(params[:product_id]).master
4
- @box_variants = SolidusSubscriptionBoxes::SubscriptionPeriod.where(boxable_variant_id: @variant.id).current.variants
5
- end
6
- end
1
+ class SolidusSubscriptionBoxes::SubscriptionBoxesController < Spree::StoreController
2
+ def get_started
3
+ @variant = Spree::Product.find_by_slug(params[:product_id]).master
4
+ @box_variants = SolidusSubscriptionBoxes::SubscriptionPeriod.where(boxable_variant_id: @variant.id).current.variants
5
+ end
6
+ end
@@ -1,15 +1,15 @@
1
- module SolidusSubscriptions
2
- module Models
3
- module Checkout
4
- module UpdatePreferenceDecorator
5
- def order
6
- byebug
7
- order = super
8
- order.box_preference = subscription.box_preference unless order.box_preference.present?
9
- end
10
- end
11
- end
12
- end
13
- end
14
-
1
+ module SolidusSubscriptions
2
+ module Models
3
+ module Checkout
4
+ module UpdatePreferenceDecorator
5
+ def order
6
+ byebug
7
+ order = super
8
+ order.box_preference = subscription.box_preference unless order.box_preference.present?
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
15
  SolidusSubscriptions::Checkout.prepend(SolidusSubscriptions::Models::Checkout::UpdatePreferenceDecorator)
@@ -1,21 +1,21 @@
1
- module Spree
2
- module Controllers
3
- module Api
4
- module V1
5
- module Subscriptions
6
- module MealPreferenceDecorator
7
- def subscription_params
8
- params.require(:subscription).permit(
9
- line_items_attributes: line_item_attributes,
10
- shipping_address_attributes: Spree::PermittedAttributes.address_attributes,
11
- box_preference_attributes: {}
12
- )
13
- end
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
20
-
1
+ module Spree
2
+ module Controllers
3
+ module Api
4
+ module V1
5
+ module Subscriptions
6
+ module MealPreferenceDecorator
7
+ def subscription_params
8
+ params.require(:subscription).permit(
9
+ line_items_attributes: line_item_attributes,
10
+ shipping_address_attributes: Spree::PermittedAttributes.address_attributes,
11
+ box_preference_attributes: {}
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
21
  SolidusSubscriptions::Api::V1::SubscriptionsController.prepend(Spree::Controllers::Api::V1::Subscriptions::MealPreferenceDecorator)
@@ -1,32 +1,35 @@
1
- module Spree
2
- module Controllers
3
- module Orders
4
- module MealPreferenceDecorator
5
- def self.prepended(base)
6
- base.after_action(
7
- :set_box_preference,
8
- only: :populate
9
- )
10
- end
11
-
12
- private
13
- def set_box_preference
14
- @order.line_items.each { |line_item| @order.contents.remove_line_item(line_item) }
15
- @order.reload
16
- if params[:box_preference_attributes]
17
- params[:box_preference_attributes].permit!
18
- @order.update_attributes(box_preference_attributes: params[:box_preference_attributes].to_hash)
19
- @order.box_preference.preference.each do |key, value|
20
- if value.to_i > 0 then
21
- variant = Spree::Variant.find(key.to_i)
22
- @order.contents.add(variant, value.to_i)
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
31
-
32
- Spree::OrdersController.prepend(Spree::Controllers::Orders::MealPreferenceDecorator)
1
+ module Spree
2
+ module Controllers
3
+ module Orders
4
+ module MealPreferenceDecorator
5
+ def self.prepended(base)
6
+ base.after_action(
7
+ :set_box_preference,
8
+ only: :populate
9
+ )
10
+ end
11
+
12
+ private
13
+ def set_box_preference
14
+ line_item_ids = @order.line_items.map(&:id)
15
+ line_item_ids.each { |line_item_id|
16
+ @order.contents.remove_line_item(LineItem.find(line_item_id))
17
+ }
18
+ @order.reload
19
+ if params[:box_preference_attributes]
20
+ params[:box_preference_attributes].permit!
21
+ @order.update_attributes(box_preference_attributes: params[:box_preference_attributes].to_hash)
22
+ @order.box_preference.preference.each do |key, value|
23
+ if value.to_i > 0 then
24
+ variant = Spree::Variant.find(key.to_i)
25
+ @order.contents.add(variant, value.to_i)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ Spree::OrdersController.prepend(Spree::Controllers::Orders::MealPreferenceDecorator)
@@ -1,31 +1,31 @@
1
- module Spree
2
- module Controllers
3
- module Users
4
- module SetBoxPreferenceDecorator
5
- def self.prepended(base)
6
- base.before_action(
7
- :set_box_preferences,
8
- only: :show
9
- )
10
- end
11
-
12
- private
13
- def set_box_preferences
14
- @user.generate_spree_api_key! unless @user.spree_api_key
15
-
16
- must_change_subscriptions = @user.subscriptions.find_all do |subscription|
17
- subscription.box_preference.nil?
18
- end
19
-
20
- must_change_subscriptions.each do |subscription|
21
- potential_variants = SolidusSubscriptionBoxes::SubscriptionPeriod.period_for_date(subscription.actionable_date).variants
22
- selected_preferences = Hash[potential_variants.sample(3).collect { |variant| [variant.id.to_s, 1.to_s] } ]
23
- subscription.box_preference = SolidusSubscriptionBoxes::BoxPreference.new(preference: selected_preferences)
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
30
-
31
- Spree::UsersController.prepend(Spree::Controllers::Users::SetBoxPreferenceDecorator)
1
+ module Spree
2
+ module Controllers
3
+ module Users
4
+ module SetBoxPreferenceDecorator
5
+ def self.prepended(base)
6
+ base.before_action(
7
+ :set_box_preferences,
8
+ only: :show
9
+ )
10
+ end
11
+
12
+ private
13
+ def set_box_preferences
14
+ @user.generate_spree_api_key! unless @user.spree_api_key
15
+
16
+ must_change_subscriptions = @user.subscriptions.find_all do |subscription|
17
+ subscription.box_preference.nil?
18
+ end
19
+
20
+ must_change_subscriptions.each do |subscription|
21
+ potential_variants = SolidusSubscriptionBoxes::SubscriptionPeriod.period_for_date(subscription.actionable_date).variants
22
+ selected_preferences = Hash[potential_variants.sample(3).collect { |variant| [variant.id.to_s, 1.to_s] } ]
23
+ subscription.box_preference = SolidusSubscriptionBoxes::BoxPreference.new(preference: selected_preferences)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ Spree::UsersController.prepend(Spree::Controllers::Users::SetBoxPreferenceDecorator)
@@ -1,14 +1,14 @@
1
- module Spree
2
- module Orders
3
- module PreferenceDecorator
4
- def self.prepended(base)
5
- base.has_one :box_preference, as: :preferable, class_name: 'SolidusSubscriptionBoxes::BoxPreference'
6
- base.accepts_nested_attributes_for :box_preference
7
- end
8
- end
9
- end
10
- end
11
-
12
- Spree::Order.prepend(Spree::Orders::PreferenceDecorator)
13
- SolidusSubscriptions::Subscription.prepend(Spree::Orders::PreferenceDecorator)
14
- SolidusSubscriptions::Installment.prepend(Spree::Orders::PreferenceDecorator)
1
+ module Spree
2
+ module Orders
3
+ module PreferenceDecorator
4
+ def self.prepended(base)
5
+ base.has_one :box_preference, as: :preferable, class_name: 'SolidusSubscriptionBoxes::BoxPreference'
6
+ base.accepts_nested_attributes_for :box_preference
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ Spree::Order.prepend(Spree::Orders::PreferenceDecorator)
13
+ SolidusSubscriptions::Subscription.prepend(Spree::Orders::PreferenceDecorator)
14
+ SolidusSubscriptions::Installment.prepend(Spree::Orders::PreferenceDecorator)
@@ -1,11 +1,11 @@
1
- module Spree
2
- module Products
3
- module Boxable
4
- def self.prepended(klass)
5
- klass.delegate :"boxable", :"boxable=", to: :find_or_build_master
6
- end
7
- end
8
- end
9
- end
10
-
11
- Spree::Product.prepend Spree::Products::Boxable
1
+ module Spree
2
+ module Products
3
+ module Boxable
4
+ def self.prepended(klass)
5
+ klass.delegate :"boxable", :"boxable=", to: :find_or_build_master
6
+ end
7
+ end
8
+ end
9
+ end
10
+
11
+ Spree::Product.prepend Spree::Products::Boxable
@@ -1,19 +1,19 @@
1
- module SolidusSubscriptionBoxes
2
- module ApplicationHelper
3
- def is_checked(preferable, variant)
4
- if preferable.present? && preferable.box_preference.preference.map(&:to_i).include?(variant.id)
5
- "checked"
6
- else
7
- ""
8
- end
9
- end
10
-
11
- def preferable_value(box_preference, variant_id)
12
- if box_preference.present?
13
- box_preference.preference.fetch(variant_id.to_s){ 0 }
14
- else
15
- 0
16
- end
17
- end
18
- end
19
- end
1
+ module SolidusSubscriptionBoxes
2
+ module ApplicationHelper
3
+ def is_checked(preferable, variant)
4
+ if preferable.present? && preferable.box_preference.preference.map(&:to_i).include?(variant.id)
5
+ "checked"
6
+ else
7
+ ""
8
+ end
9
+ end
10
+
11
+ def preferable_value(box_preference, variant_id)
12
+ if box_preference.present?
13
+ box_preference.preference.fetch(variant_id.to_s){ 0 }
14
+ else
15
+ 0
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,4 +1,4 @@
1
- module SolidusSubscriptionBoxes
2
- class ApplicationJob < ActiveJob::Base
3
- end
4
- end
1
+ module SolidusSubscriptionBoxes
2
+ class ApplicationJob < ActiveJob::Base
3
+ end
4
+ end
@@ -1,6 +1,6 @@
1
- module SolidusSubscriptionBoxes
2
- class ApplicationMailer < ActionMailer::Base
3
- default from: 'from@example.com'
4
- layout 'mailer'
5
- end
6
- end
1
+ module SolidusSubscriptionBoxes
2
+ class ApplicationMailer < ActionMailer::Base
3
+ default from: 'from@example.com'
4
+ layout 'mailer'
5
+ end
6
+ end
@@ -1,5 +1,5 @@
1
- module SolidusSubscriptionBoxes
2
- class ApplicationRecord < ActiveRecord::Base
3
- self.abstract_class = true
4
- end
5
- end
1
+ module SolidusSubscriptionBoxes
2
+ class ApplicationRecord < ActiveRecord::Base
3
+ self.abstract_class = true
4
+ end
5
+ end
@@ -1,10 +1,10 @@
1
- module SolidusSubscriptionBoxes
2
- class BoxPreference < ApplicationRecord
3
- belongs_to :preferable, polymorphic: true
4
- serialize :preference, Hash
5
-
6
- def variants
7
- Spree::Variant.where(id: preference.map(&:to_i))
8
- end
9
- end
10
- end
1
+ module SolidusSubscriptionBoxes
2
+ class BoxPreference < ApplicationRecord
3
+ belongs_to :preferable, polymorphic: true
4
+ serialize :preference, Hash
5
+
6
+ def variants
7
+ Spree::Variant.where(id: preference.map(&:to_i))
8
+ end
9
+ end
10
+ end
@@ -1,15 +1,15 @@
1
- module SolidusSubscriptionBoxes
2
- class SubscriptionPeriod < ApplicationRecord
3
- has_many :subscription_periods_variants, foreign_key: :solidus_subscription_boxes_subscription_period_id, class_name: 'SolidusSubscriptionBoxes::SubscriptionPeriodsVariant'
4
- has_many :variants, through: :subscription_periods_variants, class_name: 'Spree::Variant'
5
- belongs_to :boxable_variant, class_name: 'Spree::Variant', foreign_key: 'boxable_variant_id'
6
-
7
- def self.current
8
- period_for_date(Date.today)
9
- end
10
-
11
- def self.period_for_date(date)
12
- SubscriptionPeriod.where('start_date <= ?', date).order('start_date desc').last
13
- end
14
- end
15
- end
1
+ module SolidusSubscriptionBoxes
2
+ class SubscriptionPeriod < ApplicationRecord
3
+ has_many :subscription_periods_variants, foreign_key: :solidus_subscription_boxes_subscription_period_id, class_name: 'SolidusSubscriptionBoxes::SubscriptionPeriodsVariant'
4
+ has_many :variants, through: :subscription_periods_variants, class_name: 'Spree::Variant'
5
+ belongs_to :boxable_variant, class_name: 'Spree::Variant', foreign_key: 'boxable_variant_id'
6
+
7
+ def self.current
8
+ period_for_date(Date.today)
9
+ end
10
+
11
+ def self.period_for_date(date)
12
+ SubscriptionPeriod.where('start_date <= ?', date).order('start_date desc').last
13
+ end
14
+ end
15
+ end
@@ -1,6 +1,6 @@
1
- module SolidusSubscriptionBoxes
2
- class SubscriptionPeriodsVariant < ApplicationRecord
3
- belongs_to :variant, class_name: 'Spree::Variant', foreign_key: :spree_variant_id
4
- belongs_to :subscription_period, foreign_key: :solidus_subscription_boxes_subscription_period_id, class_name: 'SolidusSubscriptionBoxes::SubscriptionPeriod'
5
- end
6
- end
1
+ module SolidusSubscriptionBoxes
2
+ class SubscriptionPeriodsVariant < ApplicationRecord
3
+ belongs_to :variant, class_name: 'Spree::Variant', foreign_key: :spree_variant_id
4
+ belongs_to :subscription_period, foreign_key: :solidus_subscription_boxes_subscription_period_id, class_name: 'SolidusSubscriptionBoxes::SubscriptionPeriod'
5
+ end
6
+ end
@@ -1,6 +1,6 @@
1
- Deface::Override.new(
2
- virtual_path: "spree/admin/products/_form",
3
- name: "solidus_subscriptions_product_boxable_checkbox",
4
- insert_after: "[data-hook='admin_product_form_meta']",
5
- partial: "spree/admin/products/boxable_checkbox"
1
+ Deface::Override.new(
2
+ virtual_path: "spree/admin/products/_form",
3
+ name: "solidus_subscriptions_product_boxable_checkbox",
4
+ insert_after: "[data-hook='admin_product_form_meta']",
5
+ partial: "spree/admin/products/boxable_checkbox"
6
6
  )
@@ -1,14 +1,14 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>SolidusSubscriptionBoxes</title>
5
- <%= stylesheet_link_tag "solidus_subscription_boxes/application", media: "all" %>
6
- <%= javascript_include_tag "solidus_subscription_boxes/application" %>
7
- <%= csrf_meta_tags %>
8
- </head>
9
- <body>
10
-
11
- <%= yield %>
12
-
13
- </body>
14
- </html>
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>SolidusSubscriptionBoxes</title>
5
+ <%= stylesheet_link_tag "solidus_subscription_boxes/application", media: "all" %>
6
+ <%= javascript_include_tag "solidus_subscription_boxes/application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>