solidus_subscription_boxes 0.0.4 → 0.0.5

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 +54 -54
  8. data/app/assets/stylesheets/_solidus_subscription_boxes.scss +16 -16
  9. data/app/assets/stylesheets/solidus_subscription_boxes/subscription_box.css.scss +33 -35
  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 +24 -24
  15. data/app/decorators/spree/controllers/users/set_box_preference_decorator.rb +30 -30
  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 +11 -11
  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 +12 -12
  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 -44
  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,24 +1,24 @@
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
- if params[:box_preference_attributes]
15
- params[:box_preference_attributes].permit!
16
- @order.update_attributes(box_preference_attributes: params[:box_preference_attributes].to_hash)
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
23
-
24
- 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
+ if params[:box_preference_attributes]
15
+ params[:box_preference_attributes].permit!
16
+ @order.update_attributes(box_preference_attributes: params[:box_preference_attributes].to_hash)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ Spree::OrdersController.prepend(Spree::Controllers::Orders::MealPreferenceDecorator)
@@ -1,30 +1,30 @@
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
- subscription.box_preference = SolidusSubscriptionBoxes::BoxPreference.new(preference: potential_variants.sample(3).map(&:id))
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
29
-
30
- 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
+ subscription.box_preference = SolidusSubscriptionBoxes::BoxPreference.new(preference: potential_variants.sample(3).map(&:id))
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ 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,11 +1,11 @@
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
- end
11
- 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
+ end
11
+ 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, Array
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, Array
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>
@@ -1,13 +1,13 @@
1
- <div class="meal-selector row row-centered">
2
- <%- box_variants.each do |variant| %>
3
- <div class="col-xs-12 col-md-4 col-centered text-center meal">
4
- <label class="meal-selection">
5
- <input class="hidden" type="checkbox" name="<%= preference_scope %>" value="<%= variant.id %>" <%= is_checked(preferable, variant) %>>
6
- <div class="image">
7
- <%= image_tag variant.display_image.attachment.url(:large) %>
8
- </div>
9
- <h4><%= variant.name %></h4>
10
- </label>
11
- </div>
12
- <% end %>
1
+ <div class="meal-selector row row-centered">
2
+ <%- box_variants.each do |variant| %>
3
+ <div class="col-xs-12 col-md-4 col-centered text-center meal">
4
+ <label class="meal-selection">
5
+ <input class="hidden" type="checkbox" name="<%= preference_scope %>" value="<%= variant.id %>" <%= is_checked(preferable, variant) %>>
6
+ <div class="image">
7
+ <%= image_tag variant.display_image.attachment.url(:large) %>
8
+ <h4><%= variant.name %></h4>
9
+ </div>
10
+ </label>
11
+ </div>
12
+ <% end %>
13
13
  </div>