solidus_subscriptions-alpha 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 (100) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +26 -26
  3. data/README.md +130 -130
  4. data/Rakefile +28 -28
  5. data/app/assets/javascripts/spree/backend/solidus_subscriptions.js +1 -1
  6. data/app/assets/javascripts/spree/frontend/solidus_subscriptions.js +1 -1
  7. data/app/assets/stylesheets/spree/backend/solidus_subscriptions.css +4 -4
  8. data/app/assets/stylesheets/spree/frontend/solidus_subscriptions.css +4 -4
  9. data/app/controllers/solidus_subscriptions/api/v1/line_items_controller.rb +35 -35
  10. data/app/controllers/solidus_subscriptions/api/v1/subscriptions_controller.rb +44 -44
  11. data/app/controllers/spree/admin/subscriptions_controller.rb +66 -66
  12. data/app/decorators/spree/controllers/api/line_items/create_subscription_line_items.rb +28 -28
  13. data/app/decorators/spree/controllers/orders/create_subscription_line_items.rb +33 -33
  14. data/app/decorators/spree/line_items/subscription_line_items_association.rb +22 -22
  15. data/app/decorators/spree/orders/after_create.rb +15 -15
  16. data/app/decorators/spree/orders/finalize_creates_subscriptions.rb +19 -19
  17. data/app/decorators/spree/orders/subscription_line_items_association.rb +15 -15
  18. data/app/decorators/spree/products/subscribable_decorator.rb +11 -11
  19. data/app/decorators/spree/users/have_many_subscriptions.rb +18 -18
  20. data/app/decorators/spree/variant_pretty_name.rb +13 -13
  21. data/app/jobs/solidus_subscriptions/process_installments_job.rb +22 -22
  22. data/app/models/solidus_subscriptions/checkout.rb +141 -141
  23. data/app/models/solidus_subscriptions/dispatcher.rb +32 -32
  24. data/app/models/solidus_subscriptions/failure_dispatcher.rb +19 -19
  25. data/app/models/solidus_subscriptions/installment.rb +126 -126
  26. data/app/models/solidus_subscriptions/installment_detail.rb +23 -23
  27. data/app/models/solidus_subscriptions/interval.rb +24 -24
  28. data/app/models/solidus_subscriptions/line_item.rb +98 -98
  29. data/app/models/solidus_subscriptions/line_item_builder.rb +44 -44
  30. data/app/models/solidus_subscriptions/order_builder.rb +40 -40
  31. data/app/models/solidus_subscriptions/out_of_stock_dispatcher.rb +19 -19
  32. data/app/models/solidus_subscriptions/payment_failed_dispatcher.rb +23 -23
  33. data/app/models/solidus_subscriptions/subscription.rb +217 -217
  34. data/app/models/solidus_subscriptions/subscription_generator.rb +60 -60
  35. data/app/models/solidus_subscriptions/subscription_line_item_builder.rb +21 -21
  36. data/app/models/solidus_subscriptions/subscription_order_promotion_rule.rb +25 -25
  37. data/app/models/solidus_subscriptions/subscription_promotion_rule.rb +38 -38
  38. data/app/models/solidus_subscriptions/success_dispatcher.rb +16 -16
  39. data/app/models/solidus_subscriptions/unsubscribable_error.rb +17 -17
  40. data/app/models/solidus_subscriptions/user_mismatch_error.rb +15 -15
  41. data/app/overrides/views/admin_subscribable_checkbox.rb +13 -13
  42. data/app/overrides/views/admin_subscriptions_menu_link.rb +8 -8
  43. data/app/overrides/views/subscription_line_item_fields.rb +6 -6
  44. data/app/views/spree/admin/products/_subscribable_checkbox.html.erb +8 -8
  45. data/app/views/spree/admin/promotions/rules/_subscription_order_promotion_rule.html.erb +0 -0
  46. data/app/views/spree/admin/promotions/rules/_subscription_promotion_rule.html.erb +0 -0
  47. data/app/views/spree/admin/shared/_no_objects_found.html.erb +4 -4
  48. data/app/views/spree/admin/shared/_subscription_tab.html.erb +3 -3
  49. data/app/views/spree/admin/solidus_subscriptions/subscriptions/_subscription.html.erb +66 -66
  50. data/app/views/spree/admin/subscriptions/_form.html.erb +81 -81
  51. data/app/views/spree/admin/subscriptions/_legacy_form.html.erb +81 -81
  52. data/app/views/spree/admin/subscriptions/_legacy_sidebar.html.erb +28 -28
  53. data/app/views/spree/admin/subscriptions/edit.html.erb +21 -21
  54. data/app/views/spree/admin/subscriptions/index.html.erb +119 -119
  55. data/app/views/spree/admin/subscriptions/new.html.erb +9 -9
  56. data/app/views/spree/admin/variants/_subscribable_checkbox.html.erb +6 -6
  57. data/app/views/spree/frontend/products/_subscription_line_item_fields.html.erb +30 -30
  58. data/config/locales/en.yml +91 -91
  59. data/config/routes.rb +25 -25
  60. data/db/migrate/20160825164850_create_solidus_subscriptions_subscriptions.rb +11 -11
  61. data/db/migrate/20160825173548_create_solidus_subscriptions_line_items.rb +17 -17
  62. data/db/migrate/20160825202248_create_solidus_subscriptions_installments.rb +23 -23
  63. data/db/migrate/20160825211202_create_solidus_subscriptions_installment_details.rb +22 -22
  64. data/db/migrate/20160825214240_add_subscribable_to_spree_variants.rb +5 -5
  65. data/db/migrate/20160829201653_change_subscription_line_items_installments_to_max_installments.rb +5 -5
  66. data/db/migrate/20160902220242_remove_state_from_solidus_susbscriptions_installment_details.rb +5 -5
  67. data/db/migrate/20160902220604_add_successful_to_solidus_subscriptions_installment_details.rb +5 -5
  68. data/db/migrate/20160902221218_add_message_to_solidus_subscriptions_installment_details.rb +5 -5
  69. data/db/migrate/20160922164101_add_interval_length_and_units_to_subscription_line_items.rb +8 -8
  70. data/db/migrate/20161006191003_add_skip_count_to_solidus_subscriptions_subscriptions.rb +5 -5
  71. data/db/migrate/20161006191127_add_successive_skip_count_to_solidus_subscriptions_subscriptions.rb +5 -5
  72. data/db/migrate/20161014212649_allow_spree_line_item_id_to_be_null.rb +5 -5
  73. data/db/migrate/20161017155749_add_order_id_to_solidus_subscriptions_installment_details.rb +6 -6
  74. data/db/migrate/20161017175509_remove_order_id_from_solidus_subscriptions_installments.rb +6 -6
  75. data/db/migrate/20161017201944_add_subscription_order_to_spree_orders.rb +5 -5
  76. data/db/migrate/20161221155142_add_store_to_solidus_subscriptions_subscriptions.rb +6 -6
  77. data/db/migrate/20161223152905_add_address_id_to_solidus_subscriptions_subscriptions.rb +7 -7
  78. data/db/migrate/20170106224713_change_line_item_max_installments_to_end_date.rb +6 -6
  79. data/db/migrate/20170111224458_change_subscription_actionable_date_to_datetime.rb +5 -5
  80. data/db/migrate/20170111232801_change_inteval_actionable_date_to_datetime.rb +5 -5
  81. data/db/migrate/20170112012407_add_config_options_to_subscriptions.rb +7 -7
  82. data/lib/generators/solidus_subscriptions/install/install_generator.rb +30 -30
  83. data/lib/solidus_subscriptions.rb +6 -6
  84. data/lib/solidus_subscriptions/ability.rb +19 -19
  85. data/lib/solidus_subscriptions/config.rb +97 -97
  86. data/lib/solidus_subscriptions/engine.rb +56 -56
  87. data/lib/solidus_subscriptions/permitted_attributes.rb +36 -36
  88. data/lib/solidus_subscriptions/processor.rb +108 -108
  89. data/lib/solidus_subscriptions/testing_support/factories.rb +5 -5
  90. data/lib/solidus_subscriptions/testing_support/factories/installment_detail_factory.rb +7 -7
  91. data/lib/solidus_subscriptions/testing_support/factories/installment_factory.rb +21 -21
  92. data/lib/solidus_subscriptions/testing_support/factories/line_item_factory.rb +18 -18
  93. data/lib/solidus_subscriptions/testing_support/factories/spree/line_item_factory.rb +17 -17
  94. data/lib/solidus_subscriptions/testing_support/factories/spree/order_factory.rb +18 -18
  95. data/lib/solidus_subscriptions/testing_support/factories/spree_modification_factory.rb +8 -8
  96. data/lib/solidus_subscriptions/testing_support/factories/subscription_factory.rb +43 -43
  97. data/lib/solidus_subscriptions/version.rb +3 -3
  98. data/lib/solidus_subscriptions/version.rb~ +3 -0
  99. data/lib/tasks/process_subscriptions.rake +6 -6
  100. metadata +4 -3
@@ -1,5 +1,5 @@
1
- require 'factory_girl'
2
- require 'spree/testing_support/factories'
3
-
4
- factory_path = "#{File.dirname(__FILE__)}/factories/**/*_factory.rb"
5
- Dir[factory_path].each { |f| require File.expand_path(f) }
1
+ require 'factory_girl'
2
+ require 'spree/testing_support/factories'
3
+
4
+ factory_path = "#{File.dirname(__FILE__)}/factories/**/*_factory.rb"
5
+ Dir[factory_path].each { |f| require File.expand_path(f) }
@@ -1,7 +1,7 @@
1
- FactoryGirl.define do
2
- factory :installment_detail, class: 'SolidusSubscriptions::InstallmentDetail' do
3
- installment
4
-
5
- trait(:success) { success true }
6
- end
7
- end
1
+ FactoryGirl.define do
2
+ factory :installment_detail, class: 'SolidusSubscriptions::InstallmentDetail' do
3
+ installment
4
+
5
+ trait(:success) { success true }
6
+ end
7
+ end
@@ -1,21 +1,21 @@
1
- FactoryGirl.define do
2
- factory :installment, class: 'SolidusSubscriptions::Installment' do
3
- transient { subscription_traits [] }
4
- subscription { build :subscription, :with_line_item, *subscription_traits }
5
-
6
- trait :failed do
7
- actionable_date { Time.zone.yesterday }
8
- details { build_list(:installment_detail, 1, installment: @instance) }
9
- end
10
-
11
- trait :success do
12
- transient do
13
- order { create :completed_order_with_totals }
14
- end
15
-
16
- details do
17
- build_list(:installment_detail, 1, :success, installment: @instance, order: order)
18
- end
19
- end
20
- end
21
- end
1
+ FactoryGirl.define do
2
+ factory :installment, class: 'SolidusSubscriptions::Installment' do
3
+ transient { subscription_traits [] }
4
+ subscription { build :subscription, :with_line_item, *subscription_traits }
5
+
6
+ trait :failed do
7
+ actionable_date { Time.zone.yesterday }
8
+ details { build_list(:installment_detail, 1, installment: @instance) }
9
+ end
10
+
11
+ trait :success do
12
+ transient do
13
+ order { create :completed_order_with_totals }
14
+ end
15
+
16
+ details do
17
+ build_list(:installment_detail, 1, :success, installment: @instance, order: order)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,18 +1,18 @@
1
- FactoryGirl.define do
2
- factory :subscription_line_item, class: 'SolidusSubscriptions::LineItem' do
3
- subscribable_id { create(:variant, subscribable: true).id }
4
- quantity 1
5
- interval_length 1
6
- interval_units :month
7
-
8
- association :spree_line_item, factory: :line_item
9
-
10
- trait :with_subscription do
11
- transient do
12
- subscription_traits []
13
- end
14
-
15
- subscription { build :subscription, *subscription_traits }
16
- end
17
- end
18
- end
1
+ FactoryGirl.define do
2
+ factory :subscription_line_item, class: 'SolidusSubscriptions::LineItem' do
3
+ subscribable_id { create(:variant, subscribable: true).id }
4
+ quantity 1
5
+ interval_length 1
6
+ interval_units :month
7
+
8
+ association :spree_line_item, factory: :line_item
9
+
10
+ trait :with_subscription do
11
+ transient do
12
+ subscription_traits []
13
+ end
14
+
15
+ subscription { build :subscription, *subscription_traits }
16
+ end
17
+ end
18
+ end
@@ -1,17 +1,17 @@
1
- FactoryGirl.modify do
2
- factory :line_item do
3
- trait :with_subscription_line_items do
4
- transient do
5
- n_subscription_line_items 1
6
- end
7
-
8
- subscription_line_items do
9
- build_list(
10
- :subscription_line_item,
11
- n_subscription_line_items,
12
- spree_line_item: @instance
13
- )
14
- end
15
- end
16
- end
17
- end
1
+ FactoryGirl.modify do
2
+ factory :line_item do
3
+ trait :with_subscription_line_items do
4
+ transient do
5
+ n_subscription_line_items 1
6
+ end
7
+
8
+ subscription_line_items do
9
+ build_list(
10
+ :subscription_line_item,
11
+ n_subscription_line_items,
12
+ spree_line_item: @instance
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,18 +1,18 @@
1
- FactoryGirl.modify do
2
- factory :order do
3
- trait :with_subscription_line_items do
4
- transient do
5
- n_line_items 1
6
- end
7
-
8
- line_items do
9
- build_list(
10
- :line_item,
11
- n_line_items,
12
- :with_subscription_line_items,
13
- order: @instance
14
- )
15
- end
16
- end
17
- end
18
- end
1
+ FactoryGirl.modify do
2
+ factory :order do
3
+ trait :with_subscription_line_items do
4
+ transient do
5
+ n_line_items 1
6
+ end
7
+
8
+ line_items do
9
+ build_list(
10
+ :line_item,
11
+ n_line_items,
12
+ :with_subscription_line_items,
13
+ order: @instance
14
+ )
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,8 +1,8 @@
1
- FactoryGirl.modify do
2
- factory :user do
3
- trait :subscription_user do
4
- bill_address
5
- ship_address
6
- end
7
- end
8
- end
1
+ FactoryGirl.modify do
2
+ factory :user do
3
+ trait :subscription_user do
4
+ bill_address
5
+ ship_address
6
+ end
7
+ end
8
+ end
@@ -1,43 +1,43 @@
1
- FactoryGirl.define do
2
- factory :subscription, class: 'SolidusSubscriptions::Subscription' do
3
- store
4
- interval_length 1
5
- interval_units :month
6
-
7
- user do
8
- create(:user, :subscription_user).tap do |user|
9
- create(:credit_card, gateway_customer_profile_id: 'BGS-123', user: user, default: true)
10
- end
11
- end
12
-
13
- trait :with_line_item do
14
- transient do
15
- line_item_traits []
16
- end
17
-
18
- line_items { build_list :subscription_line_item, 1, *line_item_traits }
19
- end
20
-
21
- trait :with_address do
22
- association :shipping_address, factory: :address
23
- end
24
-
25
- trait :actionable do
26
- with_line_item
27
- actionable_date { Time.zone.now.yesterday.beginning_of_minute }
28
- end
29
-
30
- trait :not_actionable do
31
- with_line_item
32
- actionable_date { Time.zone.now.tomorrow.beginning_of_minute }
33
- end
34
-
35
- trait(:pending_cancellation) do
36
- actionable
37
- state { 'pending_cancellation' }
38
- end
39
-
40
- trait(:canceled) { state 'canceled' }
41
- trait(:inactive) { state 'inactive' }
42
- end
43
- end
1
+ FactoryGirl.define do
2
+ factory :subscription, class: 'SolidusSubscriptions::Subscription' do
3
+ store
4
+ interval_length 1
5
+ interval_units :month
6
+
7
+ user do
8
+ create(:user, :subscription_user).tap do |user|
9
+ create(:credit_card, gateway_customer_profile_id: 'BGS-123', user: user, default: true)
10
+ end
11
+ end
12
+
13
+ trait :with_line_item do
14
+ transient do
15
+ line_item_traits []
16
+ end
17
+
18
+ line_items { build_list :subscription_line_item, 1, *line_item_traits }
19
+ end
20
+
21
+ trait :with_address do
22
+ association :shipping_address, factory: :address
23
+ end
24
+
25
+ trait :actionable do
26
+ with_line_item
27
+ actionable_date { Time.zone.now.yesterday.beginning_of_minute }
28
+ end
29
+
30
+ trait :not_actionable do
31
+ with_line_item
32
+ actionable_date { Time.zone.now.tomorrow.beginning_of_minute }
33
+ end
34
+
35
+ trait(:pending_cancellation) do
36
+ actionable
37
+ state { 'pending_cancellation' }
38
+ end
39
+
40
+ trait(:canceled) { state 'canceled' }
41
+ trait(:inactive) { state 'inactive' }
42
+ end
43
+ end
@@ -1,3 +1,3 @@
1
- module SolidusSubscriptions
2
- VERSION = '0.0.4'
3
- end
1
+ module SolidusSubscriptions
2
+ VERSION = '0.0.5'
3
+ end
@@ -0,0 +1,3 @@
1
+ module SolidusSubscriptions
2
+ VERSION = '0.0.4'
3
+ end
@@ -1,6 +1,6 @@
1
- namespace :solidus_subscriptions do
2
- desc 'Create orders for actionable subscriptions'
3
- task process: :environment do
4
- SolidusSubscriptions::Processor.run
5
- end
6
- end
1
+ namespace :solidus_subscriptions do
2
+ desc 'Create orders for actionable subscriptions'
3
+ task process: :environment do
4
+ SolidusSubscriptions::Processor.run
5
+ end
6
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_subscriptions-alpha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brendan Deere
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-08 00:00:00.000000000 Z
11
+ date: 2018-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus
@@ -434,6 +434,7 @@ files:
434
434
  - lib/solidus_subscriptions/testing_support/factories/spree_modification_factory.rb
435
435
  - lib/solidus_subscriptions/testing_support/factories/subscription_factory.rb
436
436
  - lib/solidus_subscriptions/version.rb
437
+ - lib/solidus_subscriptions/version.rb~
437
438
  - lib/tasks/process_subscriptions.rake
438
439
  homepage: https://github.com/joeljackson/solidus_subscriptions
439
440
  licenses:
@@ -455,7 +456,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
455
456
  version: '0'
456
457
  requirements: []
457
458
  rubyforge_project:
458
- rubygems_version: 2.6.13
459
+ rubygems_version: 2.5.2
459
460
  signing_key:
460
461
  specification_version: 4
461
462
  summary: Add subscription support to Solidus