solidus_graphql_api 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +18 -2
- data/.github/dependabot.yml +23 -0
- data/.github/stale.yml +3 -3
- data/.github_changelog_generator +2 -0
- data/.rubocop.yml +7 -4
- data/CHANGELOG.md +170 -0
- data/Gemfile +0 -5
- data/LICENSE +1 -1
- data/README.md +25 -9
- data/Rakefile +21 -7
- data/app/assets/javascripts/spree/backend/solidus_graphql_api.js +2 -0
- data/app/assets/javascripts/spree/frontend/solidus_graphql_api.js +2 -0
- data/app/assets/stylesheets/spree/backend/solidus_graphql_api.css +4 -0
- data/app/assets/stylesheets/spree/frontend/solidus_graphql_api.css +4 -0
- data/app/controllers/spree/graphql_controller.rb +2 -0
- data/bin/console +2 -2
- data/bin/rails +0 -2
- data/bin/rails-engine +0 -3
- data/bin/rails-sandbox +1 -3
- data/bin/rake +0 -1
- data/bin/sandbox +3 -1
- data/docs/assets/images/graphiql-headers.png +0 -0
- data/docs/assets/images/graphiql-variables.png +0 -0
- data/docs/assets/images/graphiql.png +0 -0
- data/docs/assets/images/menu.png +0 -0
- data/docs/assets/images/navbar.png +0 -0
- data/docs/assets/style.css +1115 -0
- data/docs/assets/webfonts/2C4B9D_B_0.eot +0 -0
- data/docs/assets/webfonts/2C4B9D_B_0.ttf +0 -0
- data/docs/assets/webfonts/2C4B9D_B_0.woff +0 -0
- data/docs/assets/webfonts/2C4B9D_B_0.woff2 +0 -0
- data/docs/assets/webfonts/2C4B9D_C_0.eot +0 -0
- data/docs/assets/webfonts/2C4B9D_C_0.ttf +0 -0
- data/docs/assets/webfonts/2C4B9D_C_0.woff +0 -0
- data/docs/assets/webfonts/2C4B9D_C_0.woff2 +0 -0
- data/docs/assets/webfonts/2C4B9D_D_0.eot +0 -0
- data/docs/assets/webfonts/2C4B9D_D_0.ttf +0 -0
- data/docs/assets/webfonts/2C4B9D_D_0.woff +0 -0
- data/docs/assets/webfonts/2C4B9D_D_0.woff2 +0 -0
- data/docs/assets/webfonts/2C4B9D_E_0.eot +0 -0
- data/docs/assets/webfonts/2C4B9D_E_0.ttf +0 -0
- data/docs/assets/webfonts/2C4B9D_E_0.woff +0 -0
- data/docs/assets/webfonts/2C4B9D_E_0.woff2 +0 -0
- data/docs/directive/deprecated/index.html +1142 -0
- data/docs/directive/include/index.html +1141 -0
- data/docs/directive/index.html +1113 -0
- data/docs/directive/skip/index.html +1141 -0
- data/docs/enum/__directivelocation/index.html +1204 -0
- data/docs/enum/__typekind/index.html +1154 -0
- data/docs/enum/addresstypeinput/index.html +1121 -0
- data/docs/enum/index.html +1113 -0
- data/docs/index.html +1122 -0
- data/docs/input_object/addaddressestocheckoutinput/index.html +1135 -0
- data/docs/input_object/addpaymenttocheckoutinput/index.html +1135 -0
- data/docs/input_object/addressinput/index.html +1169 -0
- data/docs/input_object/addtocartinput/index.html +1130 -0
- data/docs/input_object/advancecheckoutinput/index.html +1120 -0
- data/docs/input_object/applycouponcodeinput/index.html +1125 -0
- data/docs/input_object/completecheckoutinput/index.html +1120 -0
- data/docs/input_object/createorderinput/index.html +1120 -0
- data/docs/input_object/emptycartinput/index.html +1120 -0
- data/docs/input_object/index.html +1113 -0
- data/docs/input_object/markdefaultshipaddressinput/index.html +1125 -0
- data/docs/input_object/nextcheckoutstateinput/index.html +1120 -0
- data/docs/input_object/productsqueryinput/index.html +1132 -0
- data/docs/input_object/removefromaddressbookinput/index.html +1125 -0
- data/docs/input_object/removefromcartinput/index.html +1125 -0
- data/docs/input_object/saveinaddressbookinput/index.html +1135 -0
- data/docs/input_object/selectshippingrateinput/index.html +1125 -0
- data/docs/input_object/setorderemailinput/index.html +1125 -0
- data/docs/input_object/updatecartquantityinput/index.html +1130 -0
- data/docs/interface/adjustment/index.html +1145 -0
- data/docs/interface/index.html +1113 -0
- data/docs/interface/node/index.html +1151 -0
- data/docs/interface/paymentsource/index.html +1134 -0
- data/docs/mutation/addaddressestocheckout/index.html +1137 -0
- data/docs/mutation/addpaymenttocheckout/index.html +1137 -0
- data/docs/mutation/addtocart/index.html +1137 -0
- data/docs/mutation/advancecheckout/index.html +1137 -0
- data/docs/mutation/applycouponcode/index.html +1137 -0
- data/docs/mutation/completecheckout/index.html +1137 -0
- data/docs/mutation/createorder/index.html +1137 -0
- data/docs/mutation/emptycart/index.html +1137 -0
- data/docs/mutation/markdefaultshipaddress/index.html +1132 -0
- data/docs/mutation/nextcheckoutstate/index.html +1137 -0
- data/docs/mutation/removefromaddressbook/index.html +1132 -0
- data/docs/mutation/removefromcart/index.html +1137 -0
- data/docs/mutation/saveinaddressbook/index.html +1137 -0
- data/docs/mutation/selectshippingrate/index.html +1137 -0
- data/docs/mutation/setorderemail/index.html +1137 -0
- data/docs/mutation/updatecartquantity/index.html +1137 -0
- data/docs/object/__directive/index.html +1182 -0
- data/docs/object/__enumvalue/index.html +1134 -0
- data/docs/object/__field/index.html +1164 -0
- data/docs/object/__inputvalue/index.html +1145 -0
- data/docs/object/__schema/index.html +1144 -0
- data/docs/object/__type/index.html +1220 -0
- data/docs/object/addaddressestocheckoutpayload/index.html +1130 -0
- data/docs/object/addpaymenttocheckoutpayload/index.html +1130 -0
- data/docs/object/address/index.html +1189 -0
- data/docs/object/addressconnection/index.html +1132 -0
- data/docs/object/addressedge/index.html +1126 -0
- data/docs/object/addtocartpayload/index.html +1130 -0
- data/docs/object/adjustmentconnection/index.html +1132 -0
- data/docs/object/adjustmentedge/index.html +1126 -0
- data/docs/object/advancecheckoutpayload/index.html +1130 -0
- data/docs/object/applycouponcodepayload/index.html +1130 -0
- data/docs/object/completecheckoutpayload/index.html +1130 -0
- data/docs/object/country/index.html +1218 -0
- data/docs/object/countryconnection/index.html +1132 -0
- data/docs/object/countryedge/index.html +1126 -0
- data/docs/object/createorderpayload/index.html +1130 -0
- data/docs/object/creditcard/index.html +1170 -0
- data/docs/object/currency/index.html +1144 -0
- data/docs/object/currencyconnection/index.html +1132 -0
- data/docs/object/currencyedge/index.html +1126 -0
- data/docs/object/emptycartpayload/index.html +1130 -0
- data/docs/object/image/index.html +1169 -0
- data/docs/object/imageconnection/index.html +1132 -0
- data/docs/object/imageedge/index.html +1126 -0
- data/docs/object/index.html +1113 -0
- data/docs/object/lineitem/index.html +1184 -0
- data/docs/object/lineitemconnection/index.html +1132 -0
- data/docs/object/lineitemedge/index.html +1126 -0
- data/docs/object/manifestitem/index.html +1124 -0
- data/docs/object/markdefaultshipaddresspayload/index.html +1125 -0
- data/docs/object/nextcheckoutstatepayload/index.html +1130 -0
- data/docs/object/optiontype/index.html +1203 -0
- data/docs/object/optiontypeconnection/index.html +1132 -0
- data/docs/object/optiontypeedge/index.html +1126 -0
- data/docs/object/optionvalue/index.html +1154 -0
- data/docs/object/optionvalueconnection/index.html +1132 -0
- data/docs/object/optionvalueedge/index.html +1126 -0
- data/docs/object/order/index.html +1412 -0
- data/docs/object/orderconnection/index.html +1132 -0
- data/docs/object/orderedge/index.html +1126 -0
- data/docs/object/pageinfo/index.html +1138 -0
- data/docs/object/payment/index.html +1149 -0
- data/docs/object/paymentmethod/index.html +1149 -0
- data/docs/object/price/index.html +1159 -0
- data/docs/object/priceconnection/index.html +1132 -0
- data/docs/object/priceedge/index.html +1126 -0
- data/docs/object/product/index.html +1327 -0
- data/docs/object/productconnection/index.html +1132 -0
- data/docs/object/productedge/index.html +1126 -0
- data/docs/object/productproperty/index.html +1149 -0
- data/docs/object/productpropertyconnection/index.html +1132 -0
- data/docs/object/productpropertyedge/index.html +1126 -0
- data/docs/object/promotionadjustment/index.html +1155 -0
- data/docs/object/property/index.html +1144 -0
- data/docs/object/removefromaddressbookpayload/index.html +1125 -0
- data/docs/object/removefromcartpayload/index.html +1130 -0
- data/docs/object/saveinaddressbookpayload/index.html +1130 -0
- data/docs/object/selectshippingratepayload/index.html +1130 -0
- data/docs/object/setorderemailpayload/index.html +1130 -0
- data/docs/object/shipment/index.html +1218 -0
- data/docs/object/shipmentconnection/index.html +1132 -0
- data/docs/object/shipmentedge/index.html +1126 -0
- data/docs/object/shippingmethod/index.html +1174 -0
- data/docs/object/shippingrate/index.html +1154 -0
- data/docs/object/shippingrateconnection/index.html +1132 -0
- data/docs/object/shippingrateedge/index.html +1126 -0
- data/docs/object/state/index.html +1144 -0
- data/docs/object/stateconnection/index.html +1132 -0
- data/docs/object/stateedge/index.html +1126 -0
- data/docs/object/store/index.html +1238 -0
- data/docs/object/taxadjustment/index.html +1150 -0
- data/docs/object/taxon/index.html +1228 -0
- data/docs/object/taxonconnection/index.html +1132 -0
- data/docs/object/taxonedge/index.html +1126 -0
- data/docs/object/taxonomy/index.html +1198 -0
- data/docs/object/taxonomyconnection/index.html +1132 -0
- data/docs/object/taxonomyedge/index.html +1126 -0
- data/docs/object/updatecartquantitypayload/index.html +1130 -0
- data/docs/object/user/index.html +1280 -0
- data/docs/object/usererror/index.html +1126 -0
- data/docs/object/variant/index.html +1332 -0
- data/docs/object/variantconnection/index.html +1132 -0
- data/docs/object/variantedge/index.html +1126 -0
- data/docs/object/walletpaymentsource/index.html +1144 -0
- data/docs/object/walletpaymentsourceconnection/index.html +1132 -0
- data/docs/object/walletpaymentsourceedge/index.html +1126 -0
- data/docs/operation/mutation/index.html +1114 -0
- data/docs/operation/query/index.html +1431 -0
- data/docs/scalar/boolean/index.html +1112 -0
- data/docs/scalar/float/index.html +1112 -0
- data/docs/scalar/id/index.html +1112 -0
- data/docs/scalar/index.html +1113 -0
- data/docs/scalar/int/index.html +1112 -0
- data/docs/scalar/iso8601datetime/index.html +1112 -0
- data/docs/scalar/json/index.html +1112 -0
- data/docs/scalar/string/index.html +1112 -0
- data/docs/union/index.html +1113 -0
- data/lib/generators/solidus_graphql_api/install/install_generator.rb +19 -0
- data/lib/generators/solidus_graphql_api/install/templates/initializer.rb +6 -0
- data/lib/graphql_docs/landing_pages/index.md +16 -0
- data/lib/solidus_graphql_api/batch_loader/has_many_through.rb +1 -0
- data/lib/solidus_graphql_api/configuration.rb +12 -8
- data/lib/solidus_graphql_api/context.rb +7 -1
- data/lib/solidus_graphql_api/engine.rb +2 -2
- data/lib/solidus_graphql_api/mutations/base_mutation.rb +3 -3
- data/lib/solidus_graphql_api/mutations/checkout/add_payment_to_checkout.rb +1 -1
- data/lib/solidus_graphql_api/mutations/user/{mark_default_address.rb → mark_default_ship_address.rb} +2 -2
- data/lib/solidus_graphql_api/mutations/user/save_in_address_book.rb +8 -2
- data/lib/solidus_graphql_api/queries/option_value/option_type_query.rb +19 -0
- data/lib/solidus_graphql_api/queries/shipping_rate/shipping_method_query.rb +19 -0
- data/lib/solidus_graphql_api/queries/variant/default_price_query.rb +1 -1
- data/lib/solidus_graphql_api/{factories → testing_support/factories}/address_factory.rb +1 -2
- data/lib/solidus_graphql_api/{factories → testing_support/factories}/country_factory.rb +0 -0
- data/lib/solidus_graphql_api/{factories → testing_support/factories}/store_factory.rb +0 -0
- data/lib/solidus_graphql_api/{factories → testing_support/factories}/taxonomy_factory.rb +10 -0
- data/lib/solidus_graphql_api/testing_support/factories.rb +9 -0
- data/lib/solidus_graphql_api/types/address.rb +1 -2
- data/lib/solidus_graphql_api/types/base/relay_node.rb +1 -1
- data/lib/solidus_graphql_api/types/input_objects/address_input.rb +1 -2
- data/lib/solidus_graphql_api/types/json.rb +6 -3
- data/lib/solidus_graphql_api/types/mutation.rb +1 -1
- data/lib/solidus_graphql_api/types/option_value.rb +5 -0
- data/lib/solidus_graphql_api/types/query.rb +2 -2
- data/lib/solidus_graphql_api/types/shipping_method.rb +20 -0
- data/lib/solidus_graphql_api/types/shipping_rate.rb +5 -0
- data/lib/solidus_graphql_api/types/user.rb +1 -1
- data/lib/solidus_graphql_api/version.rb +1 -1
- data/lib/solidus_graphql_api.rb +0 -3
- data/schema.graphql +128 -26
- data/solidus_graphql_api.gemspec +9 -7
- data/spec/integration/mutations/checkout/add_addresses_to_checkout_spec.rb +12 -18
- data/spec/integration/mutations/checkout/apply_coupon_code_spec.rb +3 -1
- data/spec/integration/mutations/{mark_default_address_spec.rb → mark_default_ship_address_spec.rb} +5 -5
- data/spec/integration/mutations/remove_from_address_book_spec.rb +4 -4
- data/spec/integration/mutations/save_in_address_book_spec.rb +25 -12
- data/spec/integration/queries/completed_orders_spec.rb +19 -15
- data/spec/integration/queries/current_order_spec.rb +4 -1
- data/spec/integration/queries/current_store_spec.rb +1 -1
- data/spec/integration/queries/products_spec.rb +4 -1
- data/spec/integration/queries/taxonomies_spec.rb +9 -4
- data/spec/integration/types/json_spec.rb +17 -0
- data/spec/lib/solidus_graphql_api/batch_loader/has_many_through_spec.rb +27 -15
- data/spec/lib/solidus_graphql_api/context_spec.rb +119 -6
- data/spec/lib/solidus_graphql_api/queries/option_value/option_type_query_spec.rb +10 -0
- data/spec/lib/solidus_graphql_api/queries/shipping_rate/shipping_method_query_spec.rb +11 -0
- data/spec/lib/solidus_graphql_api/queries/variant/default_price_query_spec.rb +1 -1
- data/spec/lib/solidus_graphql_api/types/base/object_spec.rb +5 -1
- data/spec/lib/solidus_graphql_api/types/json_spec.rb +2 -1
- data/spec/lib/solidus_graphql_api/types/option_value_spec.rb +22 -0
- data/spec/lib/solidus_graphql_api/types/product_spec.rb +3 -1
- data/spec/lib/solidus_graphql_api/types/query_spec.rb +3 -1
- data/spec/lib/solidus_graphql_api/types/shipping_rate_spec.rb +22 -0
- data/spec/requests/spree/graphql_controller_spec.rb +15 -2
- data/spec/spec_helper.rb +15 -9
- data/spec/support/expected_schema.graphql +128 -26
- data/spec/support/graphql/mutations/add_addresses_to_checkout.gql +2 -2
- data/spec/support/graphql/mutations/mark_default_ship_address.gql +9 -0
- data/spec/support/graphql/mutations/remove_from_address_book.gql +1 -1
- data/spec/support/graphql/mutations/save_in_address_book.gql +6 -5
- data/spec/support/graphql/queries/completed_orders/billing_address.gql +1 -2
- data/spec/support/graphql/queries/completed_orders/shipping_address.gql +1 -2
- data/spec/support/graphql/queries/current_user.gql +6 -11
- data/spec/support/graphql/responses/completed_orders/billing_address.json.erb +2 -4
- data/spec/support/graphql/responses/completed_orders/shipping_address.json.erb +2 -4
- data/spec/support/graphql/responses/current_store.json.erb +1 -1
- data/spec/support/graphql/responses/current_user.json.erb +7 -13
- data/spec/support/graphql/responses/taxonomies.json.erb +7 -7
- metadata +252 -37
- data/lib/solidus_graphql_api/factories.rb +0 -11
- data/spec/support/graphql/mutations/mark_default_address.gql +0 -9
@@ -3,6 +3,25 @@
|
|
3
3
|
module SolidusGraphqlApi
|
4
4
|
module Generators
|
5
5
|
class InstallGenerator < Rails::Generators::Base
|
6
|
+
class_option :auto_run_migrations, type: :boolean, default: false
|
7
|
+
source_root File.expand_path('templates', __dir__)
|
8
|
+
|
9
|
+
def copy_initializer
|
10
|
+
template 'initializer.rb', 'config/initializers/solidus_graphql_api.rb'
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_migrations
|
14
|
+
run 'bin/rails railties:install:migrations FROM=solidus_graphql_api'
|
15
|
+
end
|
16
|
+
|
17
|
+
def run_migrations
|
18
|
+
run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]')) # rubocop:disable Layout/LineLength
|
19
|
+
if run_migrations
|
20
|
+
run 'bin/rails db:migrate'
|
21
|
+
else
|
22
|
+
puts 'Skipping bin/rails db:migrate, don\'t forget to run it!' # rubocop:disable Rails/Output
|
23
|
+
end
|
24
|
+
end
|
6
25
|
end
|
7
26
|
end
|
8
27
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
---
|
2
|
+
title: Solidus GraphQL documentation
|
3
|
+
---
|
4
|
+
|
5
|
+
# Solidus GraphQL API
|
6
|
+
|
7
|
+
This is the GraphQL documentation for the [Solidus](https://github.com/solidusio/solidus) ecommerce platform.
|
8
|
+
|
9
|
+
## Quick Reference
|
10
|
+
|
11
|
+
- Solidus's GraphQL API endpoint is located at `/graphql`.
|
12
|
+
- Check out GraphQL's [official documentation](https://graphql.org/)
|
13
|
+
|
14
|
+
## Need help?
|
15
|
+
|
16
|
+
Join the [SolidusSlack#support-channel](http://slack.solidus.io/) and start a conversation.
|
@@ -1,14 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module SolidusGraphqlApi
|
4
|
-
def self.configure
|
5
|
-
yield configuration
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.configuration
|
9
|
-
@configuration ||= Configuration.new
|
10
|
-
end
|
11
|
-
|
12
4
|
class Configuration
|
13
5
|
attr_accessor :payment_sources
|
14
6
|
|
@@ -16,4 +8,16 @@ module SolidusGraphqlApi
|
|
16
8
|
@payment_sources = ['SolidusGraphqlApi::Types::CreditCard']
|
17
9
|
end
|
18
10
|
end
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def configuration
|
14
|
+
@configuration ||= Configuration.new
|
15
|
+
end
|
16
|
+
|
17
|
+
alias config configuration
|
18
|
+
|
19
|
+
def configure
|
20
|
+
yield configuration
|
21
|
+
end
|
22
|
+
end
|
19
23
|
end
|
@@ -22,7 +22,11 @@ module SolidusGraphqlApi
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def current_user
|
25
|
-
@current_user ||=
|
25
|
+
@current_user ||= begin
|
26
|
+
return nil unless bearer_token&.present?
|
27
|
+
|
28
|
+
Spree.user_class.find_by(spree_api_key: bearer_token)
|
29
|
+
end
|
26
30
|
end
|
27
31
|
|
28
32
|
def current_ability
|
@@ -60,6 +64,8 @@ module SolidusGraphqlApi
|
|
60
64
|
end
|
61
65
|
|
62
66
|
def current_order_by_guest_token
|
67
|
+
return if order_token.blank?
|
68
|
+
|
63
69
|
incomplete_orders = Spree::Order.incomplete
|
64
70
|
incomplete_orders = incomplete_orders.where(store: current_store) if current_store
|
65
71
|
|
@@ -33,10 +33,10 @@ module SolidusGraphqlApi
|
|
33
33
|
def user_errors(*path, errors)
|
34
34
|
return [] if errors.empty?
|
35
35
|
|
36
|
-
errors.map do |
|
36
|
+
errors.map do |error|
|
37
37
|
{
|
38
|
-
path: ["input", *path].concat(attribute.to_s.camelize(:lower).split('.')),
|
39
|
-
message: message,
|
38
|
+
path: ["input", *path].concat(error.attribute.to_s.camelize(:lower).split('.')),
|
39
|
+
message: error.message,
|
40
40
|
}
|
41
41
|
end
|
42
42
|
end
|
@@ -13,7 +13,7 @@ module SolidusGraphqlApi
|
|
13
13
|
field :order, Types::Order, null: true
|
14
14
|
field :errors, [Types::UserError], null: false
|
15
15
|
|
16
|
-
def resolve(payment_method:, amount: nil
|
16
|
+
def resolve(payment_method:, source:, amount: nil)
|
17
17
|
current_order.update(state: :payment)
|
18
18
|
|
19
19
|
update_params = {
|
data/lib/solidus_graphql_api/mutations/user/{mark_default_address.rb → mark_default_ship_address.rb}
RENAMED
@@ -3,7 +3,7 @@
|
|
3
3
|
module SolidusGraphqlApi
|
4
4
|
module Mutations
|
5
5
|
module User
|
6
|
-
class
|
6
|
+
class MarkDefaultShipAddress < BaseMutation
|
7
7
|
null true
|
8
8
|
|
9
9
|
argument :address_id, ID, required: true, loads: Types::Address
|
@@ -11,7 +11,7 @@ module SolidusGraphqlApi
|
|
11
11
|
field :user, Types::User, null: true
|
12
12
|
|
13
13
|
def resolve(address:)
|
14
|
-
current_user.
|
14
|
+
current_user.mark_default_ship_address(address)
|
15
15
|
|
16
16
|
{ user: current_user.reload }
|
17
17
|
end
|
@@ -4,16 +4,22 @@ module SolidusGraphqlApi
|
|
4
4
|
module Mutations
|
5
5
|
module User
|
6
6
|
class SaveInAddressBook < BaseMutation
|
7
|
+
class AddressTypeInput < Types::Base::Enum
|
8
|
+
value "shipping"
|
9
|
+
value "billing"
|
10
|
+
end
|
11
|
+
|
7
12
|
null true
|
8
13
|
|
9
14
|
argument :address, Types::InputObjects::AddressInput, required: true
|
10
15
|
argument :default, Boolean, required: false
|
16
|
+
argument :address_type, AddressTypeInput, required: false, default_value: "shipping"
|
11
17
|
|
12
18
|
field :user, Types::User, null: true
|
13
19
|
field :errors, [Types::UserError], null: false
|
14
20
|
|
15
|
-
def resolve(address:, default: false)
|
16
|
-
address = current_user.save_in_address_book(address, default)
|
21
|
+
def resolve(address:, address_type:, default: false)
|
22
|
+
address = current_user.save_in_address_book(address, default, address_type.to_sym)
|
17
23
|
|
18
24
|
{
|
19
25
|
user: current_user,
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusGraphqlApi
|
4
|
+
module Queries
|
5
|
+
module OptionValue
|
6
|
+
class OptionTypeQuery
|
7
|
+
attr_reader :option_value
|
8
|
+
|
9
|
+
def initialize(option_value:)
|
10
|
+
@option_value = option_value
|
11
|
+
end
|
12
|
+
|
13
|
+
def call
|
14
|
+
SolidusGraphqlApi::BatchLoader.for(option_value, :option_type)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusGraphqlApi
|
4
|
+
module Queries
|
5
|
+
module ShippingRate
|
6
|
+
class ShippingMethodQuery
|
7
|
+
attr_reader :shipping_rate
|
8
|
+
|
9
|
+
def initialize(shipping_rate:)
|
10
|
+
@shipping_rate = shipping_rate
|
11
|
+
end
|
12
|
+
|
13
|
+
def call
|
14
|
+
SolidusGraphqlApi::BatchLoader.for(shipping_rate, :shipping_method)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
File without changes
|
File without changes
|
@@ -22,5 +22,15 @@ FactoryBot.modify do
|
|
22
22
|
)
|
23
23
|
end
|
24
24
|
end
|
25
|
+
|
26
|
+
trait :with_root_icon do
|
27
|
+
after :create do |taxonomy|
|
28
|
+
taxonomy.root.update(icon: Spree::Core::Engine.root.join('lib',
|
29
|
+
'spree',
|
30
|
+
'testing_support',
|
31
|
+
'fixtures',
|
32
|
+
'blank.jpg').open)
|
33
|
+
end
|
34
|
+
end
|
25
35
|
end
|
26
36
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'solidus_graphql_api/testing_support/factories/address_factory'
|
4
|
+
require 'solidus_graphql_api/testing_support/factories/country_factory'
|
5
|
+
require 'solidus_graphql_api/testing_support/factories/store_factory'
|
6
|
+
require 'solidus_graphql_api/testing_support/factories/taxonomy_factory'
|
7
|
+
|
8
|
+
FactoryBot.define do
|
9
|
+
end
|
@@ -12,8 +12,7 @@ module SolidusGraphqlApi
|
|
12
12
|
field :company, String, null: true
|
13
13
|
field :country, Country, null: false
|
14
14
|
field :created_at, GraphQL::Types::ISO8601DateTime, null: true
|
15
|
-
field :
|
16
|
-
field :lastname, String, null: true
|
15
|
+
field :name, String, null: false
|
17
16
|
field :phone, String, null: false
|
18
17
|
field :state_name, String, null: true
|
19
18
|
field :state, State, null: true
|
@@ -12,8 +12,7 @@ module SolidusGraphqlApi
|
|
12
12
|
argument :city, String, required: true
|
13
13
|
argument :company, String, required: false
|
14
14
|
argument :country_id, ID, required: true, loads: Types::Country
|
15
|
-
argument :
|
16
|
-
argument :lastname, String, required: false
|
15
|
+
argument :name, String, required: true
|
17
16
|
argument :phone, String, required: true
|
18
17
|
argument :state_name, String, required: false
|
19
18
|
argument :state_id, ID, required: false, loads: Types::State
|
@@ -4,6 +4,7 @@ module SolidusGraphqlApi
|
|
4
4
|
module Types
|
5
5
|
class Json < GraphQL::Types::JSON
|
6
6
|
def self.coerce_input(value, ctx)
|
7
|
+
value = value.is_a?(ActionController::Parameters) ? value.permit!.to_h : value.to_h
|
7
8
|
value.each do |key, field|
|
8
9
|
case field
|
9
10
|
when String
|
@@ -27,9 +28,10 @@ module SolidusGraphqlApi
|
|
27
28
|
|
28
29
|
def self.decode_array(array, ctx)
|
29
30
|
array.map do |value|
|
30
|
-
|
31
|
+
case value
|
32
|
+
when Hash, ActionController::Parameters
|
31
33
|
coerce_input(value, ctx)
|
32
|
-
|
34
|
+
when String
|
33
35
|
decode(value)
|
34
36
|
else
|
35
37
|
value
|
@@ -39,7 +41,8 @@ module SolidusGraphqlApi
|
|
39
41
|
|
40
42
|
def self.decode_if_relay_id(value)
|
41
43
|
GraphQL::Schema::UniqueWithinType.decode(value)
|
42
|
-
|
44
|
+
# As of graphql v1.10.8 a GraphQL::ExecutionError is raised instead of an ArgumentError
|
45
|
+
rescue ArgumentError, GraphQL::ExecutionError
|
43
46
|
[nil, nil]
|
44
47
|
end
|
45
48
|
|
@@ -5,7 +5,7 @@ module SolidusGraphqlApi
|
|
5
5
|
class Mutation < Base::Object
|
6
6
|
field :save_in_address_book, mutation: Mutations::User::SaveInAddressBook
|
7
7
|
field :remove_from_address_book, mutation: Mutations::User::RemoveFromAddressBook
|
8
|
-
field :
|
8
|
+
field :mark_default_ship_address, mutation: Mutations::User::MarkDefaultShipAddress
|
9
9
|
field :add_addresses_to_checkout, mutation: Mutations::Checkout::AddAddressesToCheckout
|
10
10
|
field :select_shipping_rate, mutation: Mutations::Checkout::SelectShippingRate
|
11
11
|
field :add_payment_to_checkout, mutation: Mutations::Checkout::AddPaymentToCheckout
|
@@ -10,6 +10,11 @@ module SolidusGraphqlApi
|
|
10
10
|
field :position, String, null: false
|
11
11
|
field :presentation, String, null: false
|
12
12
|
field :updated_at, GraphQL::Types::ISO8601DateTime, null: true
|
13
|
+
field :option_type, OptionType, null: false
|
14
|
+
|
15
|
+
def option_type
|
16
|
+
Queries::OptionValue::OptionTypeQuery.new(option_value: object).call
|
17
|
+
end
|
13
18
|
end
|
14
19
|
end
|
15
20
|
end
|
@@ -4,10 +4,10 @@ module SolidusGraphqlApi
|
|
4
4
|
module Types
|
5
5
|
class Query < Base::Object
|
6
6
|
# Used by Relay to lookup objects by UUID:
|
7
|
-
|
7
|
+
add_field(GraphQL::Types::Relay::NodeField)
|
8
8
|
|
9
9
|
# Fetches a list of objects given a list of UUIDs
|
10
|
-
|
10
|
+
add_field(GraphQL::Types::Relay::NodesField)
|
11
11
|
|
12
12
|
field :countries, Country.connection_type,
|
13
13
|
null: false,
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusGraphqlApi
|
4
|
+
module Types
|
5
|
+
class ShippingMethod < Base::RelayNode
|
6
|
+
description 'Shipping Method.'
|
7
|
+
|
8
|
+
field :name, String, null: false
|
9
|
+
field :tracking_url, String, null: true
|
10
|
+
field :admin_name, String, null: true
|
11
|
+
field :code, String, null: true
|
12
|
+
field :carrier, String, null: true
|
13
|
+
field :service_level, String, null: true
|
14
|
+
field :available_to_users, Boolean, null: false
|
15
|
+
field :available_to_all, Boolean, null: false
|
16
|
+
field :created_at, GraphQL::Types::ISO8601DateTime, null: true
|
17
|
+
field :updated_at, GraphQL::Types::ISO8601DateTime, null: true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -10,6 +10,11 @@ module SolidusGraphqlApi
|
|
10
10
|
field :currency, String, null: false
|
11
11
|
field :selected, Boolean, null: false
|
12
12
|
field :updated_at, GraphQL::Types::ISO8601DateTime, null: true
|
13
|
+
field :shipping_method, ShippingMethod, null: false
|
14
|
+
|
15
|
+
def shipping_method
|
16
|
+
Queries::ShippingRate::ShippingMethodQuery.new(shipping_rate: object).call
|
17
|
+
end
|
13
18
|
end
|
14
19
|
end
|
15
20
|
end
|
@@ -9,7 +9,7 @@ module SolidusGraphqlApi
|
|
9
9
|
field :bill_address, Types::Address, null: true
|
10
10
|
field :created_at, GraphQL::Types::ISO8601DateTime, null: true
|
11
11
|
field :current_sign_in_at, GraphQL::Types::ISO8601DateTime, null: true
|
12
|
-
field :
|
12
|
+
field :ship_address, Types::Address, null: true
|
13
13
|
field :email, String, null: false
|
14
14
|
field :last_sign_in_at, GraphQL::Types::ISO8601DateTime, null: true
|
15
15
|
field :login, String, null: true
|
data/lib/solidus_graphql_api.rb
CHANGED