From 9f9287229f73ef141a9d53915eb1fc37152c4a5c Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 10:30:17 -0700 Subject: [PATCH 01/17] refactor: move surcharges files from `no-meteor` to `node-app` Signed-off-by: Erik Kieckhafer --- imports/node-app/core/util/buildContext.test.js | 2 +- .../plugins/surcharges}/getSurcharges.js | 4 ++-- .../plugins/surcharges/index.js} | 12 ++++++------ .../plugins/surcharges}/mutations/createSurcharge.js | 2 +- .../surcharges}/mutations/createSurcharge.test.js | 4 ++-- .../plugins/surcharges}/mutations/deleteSurcharge.js | 0 .../surcharges}/mutations/deleteSurcharge.test.js | 4 ++-- .../node-app/plugins/surcharges/mutations/index.js | 9 +++++++++ .../plugins/surcharges}/mutations/updateSurcharge.js | 2 +- .../surcharges}/mutations/updateSurcharge.test.js | 4 ++-- imports/node-app/plugins/surcharges/queries/index.js | 7 +++++++ .../plugins/surcharges}/queries/surchargeById.js | 0 .../plugins/surcharges}/queries/surcharges.js | 0 .../surcharges}/resolvers/AppliedSurcharge/index.js | 6 +++--- .../resolvers/Mutation/createSurcharge.js | 2 +- .../resolvers/Mutation/deleteSurcharge.js | 4 ++-- .../plugins/surcharges/resolvers/Mutation/index.js | 9 +++++++++ .../resolvers/Mutation/updateSurcharge.js | 4 ++-- .../plugins/surcharges/resolvers/Query/index.js | 7 +++++++ .../surcharges}/resolvers/Query/surchargeById.js | 2 +- .../surcharges}/resolvers/Query/surcharges.js | 0 .../plugins/surcharges}/resolvers/Surcharge/index.js | 6 +++--- .../plugins/surcharges}/resolvers/index.js | 8 ++++---- .../plugins/surcharges}/schemas/index.js | 0 .../plugins/surcharges}/schemas/schema.graphql | 0 .../util/getSurchargeMessageForLanguage.js | 0 .../plugins/surcharges}/util/setSurchargesOnCart.js | 2 +- .../plugins/surcharges}/util/surchargeCheck.js | 4 ++-- .../plugins/surcharges}/util/surchargeCheck.test.js | 4 ++-- .../plugins/surcharges}/util/surchargeSchema.js | 0 .../plugins/surcharges}/xforms/surcharge.js | 0 .../surcharges}/xforms/xformSurchargeAmount.js | 0 imports/node-app/registerPlugins.js | 2 +- imports/plugins/included/surcharges/register.js | 2 +- .../surcharges/server/no-meteor/mutations/index.js | 9 --------- .../surcharges/server/no-meteor/queries/index.js | 7 ------- .../server/no-meteor/resolvers/Mutation/index.js | 9 --------- .../server/no-meteor/resolvers/Query/index.js | 7 ------- 38 files changed, 72 insertions(+), 72 deletions(-) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/getSurcharges.js (95%) rename imports/{plugins/included/surcharges/server/no-meteor/register.js => node-app/plugins/surcharges/index.js} (73%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/mutations/createSurcharge.js (95%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/mutations/createSurcharge.test.js (93%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/mutations/deleteSurcharge.js (100%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/mutations/deleteSurcharge.test.js (92%) create mode 100644 imports/node-app/plugins/surcharges/mutations/index.js rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/mutations/updateSurcharge.js (95%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/mutations/updateSurcharge.test.js (94%) create mode 100644 imports/node-app/plugins/surcharges/queries/index.js rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/queries/surchargeById.js (100%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/queries/surcharges.js (100%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/resolvers/AppliedSurcharge/index.js (81%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/resolvers/Mutation/createSurcharge.js (99%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/resolvers/Mutation/deleteSurcharge.js (94%) create mode 100644 imports/node-app/plugins/surcharges/resolvers/Mutation/index.js rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/resolvers/Mutation/updateSurcharge.js (95%) create mode 100644 imports/node-app/plugins/surcharges/resolvers/Query/index.js rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/resolvers/Query/surchargeById.js (93%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/resolvers/Query/surcharges.js (100%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/resolvers/Surcharge/index.js (88%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/resolvers/index.js (52%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/schemas/index.js (100%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/schemas/schema.graphql (100%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/util/getSurchargeMessageForLanguage.js (100%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/util/setSurchargesOnCart.js (96%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/util/surchargeCheck.js (93%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/util/surchargeCheck.test.js (98%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/util/surchargeSchema.js (100%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/xforms/surcharge.js (100%) rename imports/{plugins/included/surcharges/server/no-meteor => node-app/plugins/surcharges}/xforms/xformSurchargeAmount.js (100%) delete mode 100644 imports/plugins/included/surcharges/server/no-meteor/mutations/index.js delete mode 100644 imports/plugins/included/surcharges/server/no-meteor/queries/index.js delete mode 100644 imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/index.js delete mode 100644 imports/plugins/included/surcharges/server/no-meteor/resolvers/Query/index.js diff --git a/imports/node-app/core/util/buildContext.test.js b/imports/node-app/core/util/buildContext.test.js index 0120f4ef618..ea982e6e7d3 100644 --- a/imports/node-app/core/util/buildContext.test.js +++ b/imports/node-app/core/util/buildContext.test.js @@ -1,4 +1,4 @@ -import mockContext from "/imports/test-utils/helpers/mockContext"; +import mockContext from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to come from new packages import buildContext from "./buildContext"; const fakeUser = { diff --git a/imports/plugins/included/surcharges/server/no-meteor/getSurcharges.js b/imports/node-app/plugins/surcharges/getSurcharges.js similarity index 95% rename from imports/plugins/included/surcharges/server/no-meteor/getSurcharges.js rename to imports/node-app/plugins/surcharges/getSurcharges.js index 3f070f906a4..37f54bb1209 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/getSurcharges.js +++ b/imports/node-app/plugins/surcharges/getSurcharges.js @@ -1,6 +1,6 @@ import Random from "@reactioncommerce/random"; -import extendCommonOrder from "/imports/plugins/core/shipping/server/no-meteor/util/extendCommonOrder"; -import { surchargeCheck } from "./util/surchargeCheck"; +import extendCommonOrder from "/imports/plugins/core/shipping/server/no-meteor/util/extendCommonOrder"; // TODO: EK - update to come from new package +import { surchargeCheck } from "./util/surchargeCheck.js"; /** diff --git a/imports/plugins/included/surcharges/server/no-meteor/register.js b/imports/node-app/plugins/surcharges/index.js similarity index 73% rename from imports/plugins/included/surcharges/server/no-meteor/register.js rename to imports/node-app/plugins/surcharges/index.js index 14bde896082..f1b6140a89f 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/register.js +++ b/imports/node-app/plugins/surcharges/index.js @@ -1,9 +1,9 @@ -import getSurcharges from "./getSurcharges"; -import mutations from "./mutations"; -import queries from "./queries"; -import resolvers from "./resolvers"; -import schemas from "./schemas"; -import setSurchargesOnCart from "./util/setSurchargesOnCart"; +import getSurcharges from "./getSurcharges.js"; +import mutations from "./mutations/index.js"; +import queries from "./queries/index.js"; +import resolvers from "./resolvers/index.js"; +import schemas from "./schemas/index.js"; +import setSurchargesOnCart from "./util/setSurchargesOnCart.js"; /** * @summary Import and call this function to add this plugin to your API. diff --git a/imports/plugins/included/surcharges/server/no-meteor/mutations/createSurcharge.js b/imports/node-app/plugins/surcharges/mutations/createSurcharge.js similarity index 95% rename from imports/plugins/included/surcharges/server/no-meteor/mutations/createSurcharge.js rename to imports/node-app/plugins/surcharges/mutations/createSurcharge.js index 5be509212a7..bcc2bc56f22 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/mutations/createSurcharge.js +++ b/imports/node-app/plugins/surcharges/mutations/createSurcharge.js @@ -1,7 +1,7 @@ import SimpleSchema from "simpl-schema"; import Random from "@reactioncommerce/random"; import ReactionError from "@reactioncommerce/reaction-error"; -import surchargeSchema from "../util/surchargeSchema"; +import surchargeSchema from "../util/surchargeSchema.js"; const inputSchema = new SimpleSchema({ surcharge: surchargeSchema, diff --git a/imports/plugins/included/surcharges/server/no-meteor/mutations/createSurcharge.test.js b/imports/node-app/plugins/surcharges/mutations/createSurcharge.test.js similarity index 93% rename from imports/plugins/included/surcharges/server/no-meteor/mutations/createSurcharge.test.js rename to imports/node-app/plugins/surcharges/mutations/createSurcharge.test.js index d958859ab49..5aef85c19f1 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/mutations/createSurcharge.test.js +++ b/imports/node-app/plugins/surcharges/mutations/createSurcharge.test.js @@ -1,5 +1,5 @@ -import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; -import createSurchargeMutation from "./createSurcharge"; +import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to come from new packages +import createSurchargeMutation from "./createSurcharge.js"; // Create mock context with Surcharges collection diff --git a/imports/plugins/included/surcharges/server/no-meteor/mutations/deleteSurcharge.js b/imports/node-app/plugins/surcharges/mutations/deleteSurcharge.js similarity index 100% rename from imports/plugins/included/surcharges/server/no-meteor/mutations/deleteSurcharge.js rename to imports/node-app/plugins/surcharges/mutations/deleteSurcharge.js diff --git a/imports/plugins/included/surcharges/server/no-meteor/mutations/deleteSurcharge.test.js b/imports/node-app/plugins/surcharges/mutations/deleteSurcharge.test.js similarity index 92% rename from imports/plugins/included/surcharges/server/no-meteor/mutations/deleteSurcharge.test.js rename to imports/node-app/plugins/surcharges/mutations/deleteSurcharge.test.js index b7241f235d9..df8ed8457d3 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/mutations/deleteSurcharge.test.js +++ b/imports/node-app/plugins/surcharges/mutations/deleteSurcharge.test.js @@ -1,5 +1,5 @@ -import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; -import deleteSurchargeMutation from "./deleteSurcharge"; +import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to come from new packages +import deleteSurchargeMutation from "./deleteSurcharge.js"; // Create mock context with Surcharges collection diff --git a/imports/node-app/plugins/surcharges/mutations/index.js b/imports/node-app/plugins/surcharges/mutations/index.js new file mode 100644 index 00000000000..fc4143b0628 --- /dev/null +++ b/imports/node-app/plugins/surcharges/mutations/index.js @@ -0,0 +1,9 @@ +import createSurcharge from "./createSurcharge.js"; +import deleteSurcharge from "./deleteSurcharge.js"; +import updateSurcharge from "./updateSurcharge.js"; + +export default { + createSurcharge, + deleteSurcharge, + updateSurcharge +}; diff --git a/imports/plugins/included/surcharges/server/no-meteor/mutations/updateSurcharge.js b/imports/node-app/plugins/surcharges/mutations/updateSurcharge.js similarity index 95% rename from imports/plugins/included/surcharges/server/no-meteor/mutations/updateSurcharge.js rename to imports/node-app/plugins/surcharges/mutations/updateSurcharge.js index f8800656a74..aa848681dab 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/mutations/updateSurcharge.js +++ b/imports/node-app/plugins/surcharges/mutations/updateSurcharge.js @@ -1,6 +1,6 @@ import SimpleSchema from "simpl-schema"; import ReactionError from "@reactioncommerce/reaction-error"; -import surchargeSchema from "../util/surchargeSchema"; +import surchargeSchema from "../util/surchargeSchema.js"; const inputSchema = new SimpleSchema({ shopId: String, diff --git a/imports/plugins/included/surcharges/server/no-meteor/mutations/updateSurcharge.test.js b/imports/node-app/plugins/surcharges/mutations/updateSurcharge.test.js similarity index 94% rename from imports/plugins/included/surcharges/server/no-meteor/mutations/updateSurcharge.test.js rename to imports/node-app/plugins/surcharges/mutations/updateSurcharge.test.js index 8e3d48dcded..3d988f39851 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/mutations/updateSurcharge.test.js +++ b/imports/node-app/plugins/surcharges/mutations/updateSurcharge.test.js @@ -1,5 +1,5 @@ -import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; -import updateSurchargeMutation from "./updateSurcharge"; +import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to come from new packages +import updateSurchargeMutation from "./updateSurcharge.js"; // Create mock context with Surcharges collection diff --git a/imports/node-app/plugins/surcharges/queries/index.js b/imports/node-app/plugins/surcharges/queries/index.js new file mode 100644 index 00000000000..458a0e91023 --- /dev/null +++ b/imports/node-app/plugins/surcharges/queries/index.js @@ -0,0 +1,7 @@ +import surchargeById from "./surchargeById.js"; +import surcharges from "./surcharges.js"; + +export default { + surchargeById, + surcharges +}; diff --git a/imports/plugins/included/surcharges/server/no-meteor/queries/surchargeById.js b/imports/node-app/plugins/surcharges/queries/surchargeById.js similarity index 100% rename from imports/plugins/included/surcharges/server/no-meteor/queries/surchargeById.js rename to imports/node-app/plugins/surcharges/queries/surchargeById.js diff --git a/imports/plugins/included/surcharges/server/no-meteor/queries/surcharges.js b/imports/node-app/plugins/surcharges/queries/surcharges.js similarity index 100% rename from imports/plugins/included/surcharges/server/no-meteor/queries/surcharges.js rename to imports/node-app/plugins/surcharges/queries/surcharges.js diff --git a/imports/plugins/included/surcharges/server/no-meteor/resolvers/AppliedSurcharge/index.js b/imports/node-app/plugins/surcharges/resolvers/AppliedSurcharge/index.js similarity index 81% rename from imports/plugins/included/surcharges/server/no-meteor/resolvers/AppliedSurcharge/index.js rename to imports/node-app/plugins/surcharges/resolvers/AppliedSurcharge/index.js index 4e8b29c7bbc..76e57d91f15 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/resolvers/AppliedSurcharge/index.js +++ b/imports/node-app/plugins/surcharges/resolvers/AppliedSurcharge/index.js @@ -1,6 +1,6 @@ -import { encodeSurchargeOpaqueId } from "../../xforms/surcharge"; -import xformSurchargeAmount from "../../xforms/xformSurchargeAmount"; -import getSurchargeMessageForLanguage from "../../util/getSurchargeMessageForLanguage"; +import { encodeSurchargeOpaqueId } from "../../xforms/surcharge.js"; +import xformSurchargeAmount from "../../xforms/xformSurchargeAmount.js"; +import getSurchargeMessageForLanguage from "../../util/getSurchargeMessageForLanguage.js"; export default { _id: (node) => encodeSurchargeOpaqueId(node._id), diff --git a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/createSurcharge.js b/imports/node-app/plugins/surcharges/resolvers/Mutation/createSurcharge.js similarity index 99% rename from imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/createSurcharge.js rename to imports/node-app/plugins/surcharges/resolvers/Mutation/createSurcharge.js index 3d3fd6fc88c..a0669d39347 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/createSurcharge.js +++ b/imports/node-app/plugins/surcharges/resolvers/Mutation/createSurcharge.js @@ -1,6 +1,6 @@ import { decodeFulfillmentMethodOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/fulfillment"; import { decodeShopOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/shop"; -import createSurchargeMutation from "../../mutations/createSurcharge"; +import createSurchargeMutation from "../../mutations/createSurcharge.js"; /** * @name Mutation/createSurcharge diff --git a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/deleteSurcharge.js b/imports/node-app/plugins/surcharges/resolvers/Mutation/deleteSurcharge.js similarity index 94% rename from imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/deleteSurcharge.js rename to imports/node-app/plugins/surcharges/resolvers/Mutation/deleteSurcharge.js index abccbe8b272..c52521af3e0 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/deleteSurcharge.js +++ b/imports/node-app/plugins/surcharges/resolvers/Mutation/deleteSurcharge.js @@ -1,6 +1,6 @@ import { decodeShopOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/shop"; -import { decodeSurchargeOpaqueId } from "../../xforms/surcharge"; -import deleteSurchargeMutation from "../../mutations/deleteSurcharge"; +import { decodeSurchargeOpaqueId } from "../../xforms/surcharge.js"; +import deleteSurchargeMutation from "../../mutations/deleteSurcharge.js"; /** * @name Mutation/deleteSurcharge diff --git a/imports/node-app/plugins/surcharges/resolvers/Mutation/index.js b/imports/node-app/plugins/surcharges/resolvers/Mutation/index.js new file mode 100644 index 00000000000..fc4143b0628 --- /dev/null +++ b/imports/node-app/plugins/surcharges/resolvers/Mutation/index.js @@ -0,0 +1,9 @@ +import createSurcharge from "./createSurcharge.js"; +import deleteSurcharge from "./deleteSurcharge.js"; +import updateSurcharge from "./updateSurcharge.js"; + +export default { + createSurcharge, + deleteSurcharge, + updateSurcharge +}; diff --git a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/updateSurcharge.js b/imports/node-app/plugins/surcharges/resolvers/Mutation/updateSurcharge.js similarity index 95% rename from imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/updateSurcharge.js rename to imports/node-app/plugins/surcharges/resolvers/Mutation/updateSurcharge.js index 3dc0b271726..3a3b3f27306 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/updateSurcharge.js +++ b/imports/node-app/plugins/surcharges/resolvers/Mutation/updateSurcharge.js @@ -1,7 +1,7 @@ import { decodeFulfillmentMethodOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/fulfillment"; import { decodeShopOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/shop"; -import { decodeSurchargeOpaqueId } from "../../xforms/surcharge"; -import updateSurchargeMutation from "../../mutations/updateSurcharge"; +import { decodeSurchargeOpaqueId } from "../../xforms/surcharge.js"; +import updateSurchargeMutation from "../../mutations/updateSurcharge.js"; /** * @name Mutation/updateSurcharge diff --git a/imports/node-app/plugins/surcharges/resolvers/Query/index.js b/imports/node-app/plugins/surcharges/resolvers/Query/index.js new file mode 100644 index 00000000000..458a0e91023 --- /dev/null +++ b/imports/node-app/plugins/surcharges/resolvers/Query/index.js @@ -0,0 +1,7 @@ +import surchargeById from "./surchargeById.js"; +import surcharges from "./surcharges.js"; + +export default { + surchargeById, + surcharges +}; diff --git a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Query/surchargeById.js b/imports/node-app/plugins/surcharges/resolvers/Query/surchargeById.js similarity index 93% rename from imports/plugins/included/surcharges/server/no-meteor/resolvers/Query/surchargeById.js rename to imports/node-app/plugins/surcharges/resolvers/Query/surchargeById.js index da729140d72..6728fd5dbd3 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Query/surchargeById.js +++ b/imports/node-app/plugins/surcharges/resolvers/Query/surchargeById.js @@ -1,5 +1,5 @@ import { decodeShopOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/shop"; -import { decodeSurchargeOpaqueId } from "../../xforms/surcharge"; +import { decodeSurchargeOpaqueId } from "../../xforms/surcharge.js"; /** * @name Query/surchargeById diff --git a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Query/surcharges.js b/imports/node-app/plugins/surcharges/resolvers/Query/surcharges.js similarity index 100% rename from imports/plugins/included/surcharges/server/no-meteor/resolvers/Query/surcharges.js rename to imports/node-app/plugins/surcharges/resolvers/Query/surcharges.js diff --git a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Surcharge/index.js b/imports/node-app/plugins/surcharges/resolvers/Surcharge/index.js similarity index 88% rename from imports/plugins/included/surcharges/server/no-meteor/resolvers/Surcharge/index.js rename to imports/node-app/plugins/surcharges/resolvers/Surcharge/index.js index 74719819920..fe6a46e4bcc 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Surcharge/index.js +++ b/imports/node-app/plugins/surcharges/resolvers/Surcharge/index.js @@ -1,8 +1,8 @@ import { encodeFulfillmentMethodOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/fulfillment"; import { encodeShopOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/shop"; -import { encodeSurchargeOpaqueId } from "../../xforms/surcharge"; -import xformSurchargeAmount from "../../xforms/xformSurchargeAmount"; -import getSurchargeMessageForLanguage from "../../util/getSurchargeMessageForLanguage"; +import { encodeSurchargeOpaqueId } from "../../xforms/surcharge.js"; +import xformSurchargeAmount from "../../xforms/xformSurchargeAmount.js"; +import getSurchargeMessageForLanguage from "../../util/getSurchargeMessageForLanguage.js"; export default { _id: (node) => encodeSurchargeOpaqueId(node._id), diff --git a/imports/plugins/included/surcharges/server/no-meteor/resolvers/index.js b/imports/node-app/plugins/surcharges/resolvers/index.js similarity index 52% rename from imports/plugins/included/surcharges/server/no-meteor/resolvers/index.js rename to imports/node-app/plugins/surcharges/resolvers/index.js index 2eb2a255806..88d1faaa3ef 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/resolvers/index.js +++ b/imports/node-app/plugins/surcharges/resolvers/index.js @@ -1,8 +1,8 @@ import { getConnectionTypeResolvers } from "@reactioncommerce/reaction-graphql-utils"; -import AppliedSurcharge from "./AppliedSurcharge"; -import Surcharge from "./Surcharge"; -import Mutation from "./Mutation"; -import Query from "./Query"; +import AppliedSurcharge from "./AppliedSurcharge/index.js"; +import Surcharge from "./Surcharge/index.js"; +import Mutation from "./Mutation/index.js"; +import Query from "./Query/index.js"; export default { ...getConnectionTypeResolvers("Surcharge"), diff --git a/imports/plugins/included/surcharges/server/no-meteor/schemas/index.js b/imports/node-app/plugins/surcharges/schemas/index.js similarity index 100% rename from imports/plugins/included/surcharges/server/no-meteor/schemas/index.js rename to imports/node-app/plugins/surcharges/schemas/index.js diff --git a/imports/plugins/included/surcharges/server/no-meteor/schemas/schema.graphql b/imports/node-app/plugins/surcharges/schemas/schema.graphql similarity index 100% rename from imports/plugins/included/surcharges/server/no-meteor/schemas/schema.graphql rename to imports/node-app/plugins/surcharges/schemas/schema.graphql diff --git a/imports/plugins/included/surcharges/server/no-meteor/util/getSurchargeMessageForLanguage.js b/imports/node-app/plugins/surcharges/util/getSurchargeMessageForLanguage.js similarity index 100% rename from imports/plugins/included/surcharges/server/no-meteor/util/getSurchargeMessageForLanguage.js rename to imports/node-app/plugins/surcharges/util/getSurchargeMessageForLanguage.js diff --git a/imports/plugins/included/surcharges/server/no-meteor/util/setSurchargesOnCart.js b/imports/node-app/plugins/surcharges/util/setSurchargesOnCart.js similarity index 96% rename from imports/plugins/included/surcharges/server/no-meteor/util/setSurchargesOnCart.js rename to imports/node-app/plugins/surcharges/util/setSurchargesOnCart.js index 5bbf5002dfc..9106202cdad 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/util/setSurchargesOnCart.js +++ b/imports/node-app/plugins/surcharges/util/setSurchargesOnCart.js @@ -1,4 +1,4 @@ -import getSurcharges from "../getSurcharges"; +import getSurcharges from "../getSurcharges.js"; /** * @summary Cart transformation function that sets surcharges on cart diff --git a/imports/plugins/included/surcharges/server/no-meteor/util/surchargeCheck.js b/imports/node-app/plugins/surcharges/util/surchargeCheck.js similarity index 93% rename from imports/plugins/included/surcharges/server/no-meteor/util/surchargeCheck.js rename to imports/node-app/plugins/surcharges/util/surchargeCheck.js index 537fec2caa4..a34295c3111 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/util/surchargeCheck.js +++ b/imports/node-app/plugins/surcharges/util/surchargeCheck.js @@ -1,5 +1,5 @@ -import operators from "/imports/utils/operators"; -import propertyTypes from "/imports/utils/propertyTypes"; +import operators from "/imports/utils/operators"; // TODO: EK - update to come from new package +import propertyTypes from "/imports/utils/propertyTypes"; // TODO: EK - update to come from new package /** * @summary Filter surcharges based on surcharge restriction data diff --git a/imports/plugins/included/surcharges/server/no-meteor/util/surchargeCheck.test.js b/imports/node-app/plugins/surcharges/util/surchargeCheck.test.js similarity index 98% rename from imports/plugins/included/surcharges/server/no-meteor/util/surchargeCheck.test.js rename to imports/node-app/plugins/surcharges/util/surchargeCheck.test.js index 9c5a2e3b242..940971b2f78 100644 --- a/imports/plugins/included/surcharges/server/no-meteor/util/surchargeCheck.test.js +++ b/imports/node-app/plugins/surcharges/util/surchargeCheck.test.js @@ -1,5 +1,5 @@ -import { surchargeCheck } from "./surchargeCheck"; -import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; +import { surchargeCheck } from "./surchargeCheck.js"; +import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to come from new packages // Create mock context with Surcharges collection mockContext.collections.Surcharges = mockCollection("Surcharges"); diff --git a/imports/plugins/included/surcharges/server/no-meteor/util/surchargeSchema.js b/imports/node-app/plugins/surcharges/util/surchargeSchema.js similarity index 100% rename from imports/plugins/included/surcharges/server/no-meteor/util/surchargeSchema.js rename to imports/node-app/plugins/surcharges/util/surchargeSchema.js diff --git a/imports/plugins/included/surcharges/server/no-meteor/xforms/surcharge.js b/imports/node-app/plugins/surcharges/xforms/surcharge.js similarity index 100% rename from imports/plugins/included/surcharges/server/no-meteor/xforms/surcharge.js rename to imports/node-app/plugins/surcharges/xforms/surcharge.js diff --git a/imports/plugins/included/surcharges/server/no-meteor/xforms/xformSurchargeAmount.js b/imports/node-app/plugins/surcharges/xforms/xformSurchargeAmount.js similarity index 100% rename from imports/plugins/included/surcharges/server/no-meteor/xforms/xformSurchargeAmount.js rename to imports/node-app/plugins/surcharges/xforms/xformSurchargeAmount.js diff --git a/imports/node-app/registerPlugins.js b/imports/node-app/registerPlugins.js index ae927c38829..f7f3fb35ac7 100644 --- a/imports/node-app/registerPlugins.js +++ b/imports/node-app/registerPlugins.js @@ -1,4 +1,5 @@ /* node-app imports */ +import registerSurchargesPlugin from "./plugins/surcharges/index.js"; import registerSystemInfoPlugin from "./plugins/system-info/index.js"; /* meteor-app imports */ @@ -33,7 +34,6 @@ import registerSimplePricingPlugin from "/imports/plugins/included/simple-pricin import registerSitemapGeneratorPlugin from "/imports/plugins/included/sitemap-generator/server/no-meteor/register"; import registerSMTPEmailPlugin from "/imports/plugins/included/email-smtp/server/no-meteor/register"; import registerStripePaymentsPlugin from "/imports/plugins/included/payments-stripe/server/no-meteor/register"; -import registerSurchargesPlugin from "/imports/plugins/included/surcharges/server/no-meteor/register"; import registerTagsPlugin from "/imports/plugins/core/tags/server/no-meteor/register"; import registerTaxesPlugin from "/imports/plugins/core/taxes/server/no-meteor/register"; import registerTaxesRatesPlugin from "/imports/plugins/included/taxes-rates/server/no-meteor/register"; diff --git a/imports/plugins/included/surcharges/register.js b/imports/plugins/included/surcharges/register.js index add1f847771..6ed9fe09ba4 100644 --- a/imports/plugins/included/surcharges/register.js +++ b/imports/plugins/included/surcharges/register.js @@ -6,6 +6,6 @@ * temporary bridge. */ import Reaction from "/imports/plugins/core/core/server/Reaction"; -import register from "./server/no-meteor/register"; +import register from "/imports/node-app/plugins/surcharges/index.js"; Reaction.whenAppInstanceReady(register); diff --git a/imports/plugins/included/surcharges/server/no-meteor/mutations/index.js b/imports/plugins/included/surcharges/server/no-meteor/mutations/index.js deleted file mode 100644 index dee045857a3..00000000000 --- a/imports/plugins/included/surcharges/server/no-meteor/mutations/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import createSurcharge from "./createSurcharge"; -import deleteSurcharge from "./deleteSurcharge"; -import updateSurcharge from "./updateSurcharge"; - -export default { - createSurcharge, - deleteSurcharge, - updateSurcharge -}; diff --git a/imports/plugins/included/surcharges/server/no-meteor/queries/index.js b/imports/plugins/included/surcharges/server/no-meteor/queries/index.js deleted file mode 100644 index ee23d4e900a..00000000000 --- a/imports/plugins/included/surcharges/server/no-meteor/queries/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import surchargeById from "./surchargeById"; -import surcharges from "./surcharges"; - -export default { - surchargeById, - surcharges -}; diff --git a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/index.js b/imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/index.js deleted file mode 100644 index dee045857a3..00000000000 --- a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Mutation/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import createSurcharge from "./createSurcharge"; -import deleteSurcharge from "./deleteSurcharge"; -import updateSurcharge from "./updateSurcharge"; - -export default { - createSurcharge, - deleteSurcharge, - updateSurcharge -}; diff --git a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Query/index.js b/imports/plugins/included/surcharges/server/no-meteor/resolvers/Query/index.js deleted file mode 100644 index ee23d4e900a..00000000000 --- a/imports/plugins/included/surcharges/server/no-meteor/resolvers/Query/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import surchargeById from "./surchargeById"; -import surcharges from "./surcharges"; - -export default { - surchargeById, - surcharges -}; From 8697e053b470ee1e2f3396299c4cc1410bc78f27 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 10:39:37 -0700 Subject: [PATCH 02/17] refactor: more shipping package from `no-meteor` to `node-app` Signed-off-by: Erik Kieckhafer --- .../plugins/shipping}/i18n/ar.json | 0 .../plugins/shipping}/i18n/bg.json | 0 .../plugins/shipping}/i18n/cs.json | 0 .../plugins/shipping}/i18n/de.json | 0 .../plugins/shipping}/i18n/el.json | 0 .../plugins/shipping}/i18n/en.json | 0 .../plugins/shipping}/i18n/es.json | 0 .../plugins/shipping}/i18n/fr.json | 0 .../plugins/shipping}/i18n/he.json | 0 .../plugins/shipping}/i18n/hr.json | 0 .../plugins/shipping}/i18n/hu.json | 0 .../plugins/shipping}/i18n/index.js | 0 .../plugins/shipping}/i18n/it.json | 0 .../plugins/shipping}/i18n/my.json | 0 .../plugins/shipping}/i18n/nb.json | 0 .../plugins/shipping}/i18n/nl.json | 0 .../plugins/shipping}/i18n/pl.json | 0 .../plugins/shipping}/i18n/pt.json | 0 .../plugins/shipping}/i18n/ro.json | 0 .../plugins/shipping}/i18n/ru.json | 0 .../plugins/shipping}/i18n/sl.json | 0 .../plugins/shipping}/i18n/sv.json | 0 .../plugins/shipping}/i18n/tr.json | 0 .../plugins/shipping}/i18n/vi.json | 0 .../plugins/shipping}/i18n/zh.json | 0 .../register.js => node-app/plugins/shipping/index.js} | 10 +++++----- .../selectFulfillmentOptionForGroup.test.js.snap | 0 .../updateFulfillmentOptionsForGroup.test.js.snap | 0 .../plugins/shipping}/mutations/index.js | 4 ++-- .../mutations/selectFulfillmentOptionForGroup.js | 2 +- .../mutations/selectFulfillmentOptionForGroup.test.js | 4 ++-- .../mutations/updateFulfillmentOptionsForGroup.js | 4 ++-- .../mutations/updateFulfillmentOptionsForGroup.test.js | 6 +++--- .../queries/getFulfillmentMethodsWithQuotes.js | 2 +- .../plugins/shipping}/queries/index.js | 2 +- .../shipping}/resolvers/FulfillmentMethod/index.js | 0 .../plugins/shipping}/resolvers/Mutation/index.js | 4 ++-- .../Mutation/selectFulfillmentOptionForGroup.js | 2 +- .../Mutation/updateFulfillmentOptionsForGroup.js | 2 +- .../plugins/shipping}/resolvers/index.js | 4 ++-- .../plugins/shipping}/schemas/index.js | 0 .../plugins/shipping}/schemas/schema.graphql | 0 .../plugins/shipping}/util/extendCommonOrder.js | 0 .../plugins/shipping}/util/getCartById.js | 2 +- .../plugins/shipping}/util/helpers.js | 0 imports/plugins/core/shipping/register.js | 2 +- 46 files changed, 25 insertions(+), 25 deletions(-) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/ar.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/bg.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/cs.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/de.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/el.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/en.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/es.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/fr.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/he.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/hr.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/hu.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/index.js (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/it.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/my.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/nb.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/nl.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/pl.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/pt.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/ro.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/ru.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/sl.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/sv.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/tr.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/vi.json (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/i18n/zh.json (100%) rename imports/{plugins/core/shipping/server/no-meteor/register.js => node-app/plugins/shipping/index.js} (83%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/mutations/__snapshots__/selectFulfillmentOptionForGroup.test.js.snap (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/mutations/__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/mutations/index.js (83%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/mutations/selectFulfillmentOptionForGroup.js (97%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/mutations/selectFulfillmentOptionForGroup.test.js (97%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/mutations/updateFulfillmentOptionsForGroup.js (95%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/mutations/updateFulfillmentOptionsForGroup.test.js (97%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/queries/getFulfillmentMethodsWithQuotes.js (95%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/queries/index.js (85%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/resolvers/FulfillmentMethod/index.js (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/resolvers/Mutation/index.js (83%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/resolvers/Mutation/selectFulfillmentOptionForGroup.js (97%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/resolvers/Mutation/updateFulfillmentOptionsForGroup.js (97%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/resolvers/index.js (56%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/schemas/index.js (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/schemas/schema.graphql (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/util/extendCommonOrder.js (100%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/util/getCartById.js (94%) rename imports/{plugins/core/shipping/server/no-meteor => node-app/plugins/shipping}/util/helpers.js (100%) diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/ar.json b/imports/node-app/plugins/shipping/i18n/ar.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/ar.json rename to imports/node-app/plugins/shipping/i18n/ar.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/bg.json b/imports/node-app/plugins/shipping/i18n/bg.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/bg.json rename to imports/node-app/plugins/shipping/i18n/bg.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/cs.json b/imports/node-app/plugins/shipping/i18n/cs.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/cs.json rename to imports/node-app/plugins/shipping/i18n/cs.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/de.json b/imports/node-app/plugins/shipping/i18n/de.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/de.json rename to imports/node-app/plugins/shipping/i18n/de.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/el.json b/imports/node-app/plugins/shipping/i18n/el.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/el.json rename to imports/node-app/plugins/shipping/i18n/el.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/en.json b/imports/node-app/plugins/shipping/i18n/en.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/en.json rename to imports/node-app/plugins/shipping/i18n/en.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/es.json b/imports/node-app/plugins/shipping/i18n/es.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/es.json rename to imports/node-app/plugins/shipping/i18n/es.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/fr.json b/imports/node-app/plugins/shipping/i18n/fr.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/fr.json rename to imports/node-app/plugins/shipping/i18n/fr.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/he.json b/imports/node-app/plugins/shipping/i18n/he.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/he.json rename to imports/node-app/plugins/shipping/i18n/he.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/hr.json b/imports/node-app/plugins/shipping/i18n/hr.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/hr.json rename to imports/node-app/plugins/shipping/i18n/hr.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/hu.json b/imports/node-app/plugins/shipping/i18n/hu.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/hu.json rename to imports/node-app/plugins/shipping/i18n/hu.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/index.js b/imports/node-app/plugins/shipping/i18n/index.js similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/index.js rename to imports/node-app/plugins/shipping/i18n/index.js diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/it.json b/imports/node-app/plugins/shipping/i18n/it.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/it.json rename to imports/node-app/plugins/shipping/i18n/it.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/my.json b/imports/node-app/plugins/shipping/i18n/my.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/my.json rename to imports/node-app/plugins/shipping/i18n/my.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/nb.json b/imports/node-app/plugins/shipping/i18n/nb.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/nb.json rename to imports/node-app/plugins/shipping/i18n/nb.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/nl.json b/imports/node-app/plugins/shipping/i18n/nl.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/nl.json rename to imports/node-app/plugins/shipping/i18n/nl.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/pl.json b/imports/node-app/plugins/shipping/i18n/pl.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/pl.json rename to imports/node-app/plugins/shipping/i18n/pl.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/pt.json b/imports/node-app/plugins/shipping/i18n/pt.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/pt.json rename to imports/node-app/plugins/shipping/i18n/pt.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/ro.json b/imports/node-app/plugins/shipping/i18n/ro.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/ro.json rename to imports/node-app/plugins/shipping/i18n/ro.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/ru.json b/imports/node-app/plugins/shipping/i18n/ru.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/ru.json rename to imports/node-app/plugins/shipping/i18n/ru.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/sl.json b/imports/node-app/plugins/shipping/i18n/sl.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/sl.json rename to imports/node-app/plugins/shipping/i18n/sl.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/sv.json b/imports/node-app/plugins/shipping/i18n/sv.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/sv.json rename to imports/node-app/plugins/shipping/i18n/sv.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/tr.json b/imports/node-app/plugins/shipping/i18n/tr.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/tr.json rename to imports/node-app/plugins/shipping/i18n/tr.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/vi.json b/imports/node-app/plugins/shipping/i18n/vi.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/vi.json rename to imports/node-app/plugins/shipping/i18n/vi.json diff --git a/imports/plugins/core/shipping/server/no-meteor/i18n/zh.json b/imports/node-app/plugins/shipping/i18n/zh.json similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/i18n/zh.json rename to imports/node-app/plugins/shipping/i18n/zh.json diff --git a/imports/plugins/core/shipping/server/no-meteor/register.js b/imports/node-app/plugins/shipping/index.js similarity index 83% rename from imports/plugins/core/shipping/server/no-meteor/register.js rename to imports/node-app/plugins/shipping/index.js index be469e56289..34830c18c23 100644 --- a/imports/plugins/core/shipping/server/no-meteor/register.js +++ b/imports/node-app/plugins/shipping/index.js @@ -1,8 +1,8 @@ -import i18n from "./i18n"; -import mutations from "./mutations"; -import queries from "./queries"; -import resolvers from "./resolvers"; -import schemas from "./schemas"; +import i18n from "./i18n/index.js"; +import mutations from "./mutations/index.js"; +import queries from "./queries/index.js"; +import resolvers from "./resolvers/index.js"; +import schemas from "./schemas/index.js"; /** * @summary Import and call this function to add this plugin to your API. diff --git a/imports/plugins/core/shipping/server/no-meteor/mutations/__snapshots__/selectFulfillmentOptionForGroup.test.js.snap b/imports/node-app/plugins/shipping/mutations/__snapshots__/selectFulfillmentOptionForGroup.test.js.snap similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/mutations/__snapshots__/selectFulfillmentOptionForGroup.test.js.snap rename to imports/node-app/plugins/shipping/mutations/__snapshots__/selectFulfillmentOptionForGroup.test.js.snap diff --git a/imports/plugins/core/shipping/server/no-meteor/mutations/__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap b/imports/node-app/plugins/shipping/mutations/__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/mutations/__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap rename to imports/node-app/plugins/shipping/mutations/__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap diff --git a/imports/plugins/core/shipping/server/no-meteor/mutations/index.js b/imports/node-app/plugins/shipping/mutations/index.js similarity index 83% rename from imports/plugins/core/shipping/server/no-meteor/mutations/index.js rename to imports/node-app/plugins/shipping/mutations/index.js index b5cf6afadee..6f48ee08598 100644 --- a/imports/plugins/core/shipping/server/no-meteor/mutations/index.js +++ b/imports/node-app/plugins/shipping/mutations/index.js @@ -1,5 +1,5 @@ -import selectFulfillmentOptionForGroup from "./selectFulfillmentOptionForGroup"; -import updateFulfillmentOptionsForGroup from "./updateFulfillmentOptionsForGroup"; +import selectFulfillmentOptionForGroup from "./selectFulfillmentOptionForGroup.js"; +import updateFulfillmentOptionsForGroup from "./updateFulfillmentOptionsForGroup.js"; export default { selectFulfillmentOptionForGroup, diff --git a/imports/plugins/core/shipping/server/no-meteor/mutations/selectFulfillmentOptionForGroup.js b/imports/node-app/plugins/shipping/mutations/selectFulfillmentOptionForGroup.js similarity index 97% rename from imports/plugins/core/shipping/server/no-meteor/mutations/selectFulfillmentOptionForGroup.js rename to imports/node-app/plugins/shipping/mutations/selectFulfillmentOptionForGroup.js index 3c303c9ca07..38a26e2fbd2 100644 --- a/imports/plugins/core/shipping/server/no-meteor/mutations/selectFulfillmentOptionForGroup.js +++ b/imports/node-app/plugins/shipping/mutations/selectFulfillmentOptionForGroup.js @@ -1,6 +1,6 @@ import SimpleSchema from "simpl-schema"; import ReactionError from "@reactioncommerce/reaction-error"; -import getCartById from "../util/getCartById"; +import getCartById from "../util/getCartById.js"; const inputSchema = new SimpleSchema({ cartId: String, diff --git a/imports/plugins/core/shipping/server/no-meteor/mutations/selectFulfillmentOptionForGroup.test.js b/imports/node-app/plugins/shipping/mutations/selectFulfillmentOptionForGroup.test.js similarity index 97% rename from imports/plugins/core/shipping/server/no-meteor/mutations/selectFulfillmentOptionForGroup.test.js rename to imports/node-app/plugins/shipping/mutations/selectFulfillmentOptionForGroup.test.js index ea000be8021..baec837551f 100644 --- a/imports/plugins/core/shipping/server/no-meteor/mutations/selectFulfillmentOptionForGroup.test.js +++ b/imports/node-app/plugins/shipping/mutations/selectFulfillmentOptionForGroup.test.js @@ -1,5 +1,5 @@ -import mockContext from "/imports/test-utils/helpers/mockContext"; -import selectFulfillmentOptionForGroup from "./selectFulfillmentOptionForGroup"; +import mockContext from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to new repo +import selectFulfillmentOptionForGroup from "./selectFulfillmentOptionForGroup.js"; jest.mock("../util/getCartById", () => jest.fn().mockImplementation(() => Promise.resolve({ _id: "cartId", diff --git a/imports/plugins/core/shipping/server/no-meteor/mutations/updateFulfillmentOptionsForGroup.js b/imports/node-app/plugins/shipping/mutations/updateFulfillmentOptionsForGroup.js similarity index 95% rename from imports/plugins/core/shipping/server/no-meteor/mutations/updateFulfillmentOptionsForGroup.js rename to imports/node-app/plugins/shipping/mutations/updateFulfillmentOptionsForGroup.js index b2ae6529f4f..fd2b9e7b76e 100644 --- a/imports/plugins/core/shipping/server/no-meteor/mutations/updateFulfillmentOptionsForGroup.js +++ b/imports/node-app/plugins/shipping/mutations/updateFulfillmentOptionsForGroup.js @@ -1,8 +1,8 @@ import { isEqual } from "lodash"; import SimpleSchema from "simpl-schema"; import ReactionError from "@reactioncommerce/reaction-error"; -import xformCartGroupToCommonOrder from "/imports/plugins/core/cart/server/no-meteor/util/xformCartGroupToCommonOrder"; -import getCartById from "../util/getCartById"; +import xformCartGroupToCommonOrder from "/imports/plugins/core/cart/server/no-meteor/util/xformCartGroupToCommonOrder.js"; // TODO: EK - get from other package +import getCartById from "../util/getCartById.js"; const inputSchema = new SimpleSchema({ cartId: String, diff --git a/imports/plugins/core/shipping/server/no-meteor/mutations/updateFulfillmentOptionsForGroup.test.js b/imports/node-app/plugins/shipping/mutations/updateFulfillmentOptionsForGroup.test.js similarity index 97% rename from imports/plugins/core/shipping/server/no-meteor/mutations/updateFulfillmentOptionsForGroup.test.js rename to imports/node-app/plugins/shipping/mutations/updateFulfillmentOptionsForGroup.test.js index 8c01589d05e..f95f8a2615a 100644 --- a/imports/plugins/core/shipping/server/no-meteor/mutations/updateFulfillmentOptionsForGroup.test.js +++ b/imports/node-app/plugins/shipping/mutations/updateFulfillmentOptionsForGroup.test.js @@ -1,6 +1,6 @@ -import Factory from "/imports/test-utils/helpers/factory"; -import mockContext from "/imports/test-utils/helpers/mockContext"; -import updateFulfillmentOptionsForGroup from "./updateFulfillmentOptionsForGroup"; +import Factory from "/imports/test-utils/helpers/factory.js"; +import mockContext from "/imports/test-utils/helpers/mockContext.js"; // TODO: EK - update to new repo +import updateFulfillmentOptionsForGroup from "./updateFulfillmentOptionsForGroup.js"; jest.mock("../util/getCartById", () => jest.fn().mockImplementation(() => Promise.resolve({ _id: "cartId", diff --git a/imports/plugins/core/shipping/server/no-meteor/queries/getFulfillmentMethodsWithQuotes.js b/imports/node-app/plugins/shipping/queries/getFulfillmentMethodsWithQuotes.js similarity index 95% rename from imports/plugins/core/shipping/server/no-meteor/queries/getFulfillmentMethodsWithQuotes.js rename to imports/node-app/plugins/shipping/queries/getFulfillmentMethodsWithQuotes.js index 16e47d54c91..bc88fb84f00 100644 --- a/imports/plugins/core/shipping/server/no-meteor/queries/getFulfillmentMethodsWithQuotes.js +++ b/imports/node-app/plugins/shipping/queries/getFulfillmentMethodsWithQuotes.js @@ -1,5 +1,5 @@ import Logger from "@reactioncommerce/logger"; -import extendCommonOrder from "../util/extendCommonOrder"; +import extendCommonOrder from "../util/extendCommonOrder.js"; /** * @name getFulfillmentMethodsWithQuotes diff --git a/imports/plugins/core/shipping/server/no-meteor/queries/index.js b/imports/node-app/plugins/shipping/queries/index.js similarity index 85% rename from imports/plugins/core/shipping/server/no-meteor/queries/index.js rename to imports/node-app/plugins/shipping/queries/index.js index a2106f2786a..8d4d9bea7d9 100644 --- a/imports/plugins/core/shipping/server/no-meteor/queries/index.js +++ b/imports/node-app/plugins/shipping/queries/index.js @@ -1,4 +1,4 @@ -import getFulfillmentMethodsWithQuotes from "./getFulfillmentMethodsWithQuotes"; +import getFulfillmentMethodsWithQuotes from "./getFulfillmentMethodsWithQuotes.js"; export default { getFulfillmentMethodsWithQuotes diff --git a/imports/plugins/core/shipping/server/no-meteor/resolvers/FulfillmentMethod/index.js b/imports/node-app/plugins/shipping/resolvers/FulfillmentMethod/index.js similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/resolvers/FulfillmentMethod/index.js rename to imports/node-app/plugins/shipping/resolvers/FulfillmentMethod/index.js diff --git a/imports/plugins/core/shipping/server/no-meteor/resolvers/Mutation/index.js b/imports/node-app/plugins/shipping/resolvers/Mutation/index.js similarity index 83% rename from imports/plugins/core/shipping/server/no-meteor/resolvers/Mutation/index.js rename to imports/node-app/plugins/shipping/resolvers/Mutation/index.js index b5cf6afadee..6f48ee08598 100644 --- a/imports/plugins/core/shipping/server/no-meteor/resolvers/Mutation/index.js +++ b/imports/node-app/plugins/shipping/resolvers/Mutation/index.js @@ -1,5 +1,5 @@ -import selectFulfillmentOptionForGroup from "./selectFulfillmentOptionForGroup"; -import updateFulfillmentOptionsForGroup from "./updateFulfillmentOptionsForGroup"; +import selectFulfillmentOptionForGroup from "./selectFulfillmentOptionForGroup.js"; +import updateFulfillmentOptionsForGroup from "./updateFulfillmentOptionsForGroup.js"; export default { selectFulfillmentOptionForGroup, diff --git a/imports/plugins/core/shipping/server/no-meteor/resolvers/Mutation/selectFulfillmentOptionForGroup.js b/imports/node-app/plugins/shipping/resolvers/Mutation/selectFulfillmentOptionForGroup.js similarity index 97% rename from imports/plugins/core/shipping/server/no-meteor/resolvers/Mutation/selectFulfillmentOptionForGroup.js rename to imports/node-app/plugins/shipping/resolvers/Mutation/selectFulfillmentOptionForGroup.js index 6d868fe48e2..3d8aae966d6 100644 --- a/imports/plugins/core/shipping/server/no-meteor/resolvers/Mutation/selectFulfillmentOptionForGroup.js +++ b/imports/node-app/plugins/shipping/resolvers/Mutation/selectFulfillmentOptionForGroup.js @@ -1,6 +1,6 @@ import { decodeCartOpaqueId, decodeFulfillmentGroupOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/cart"; import { decodeFulfillmentMethodOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/fulfillment"; -import selectFulfillmentOptionForGroupMutation from "../../mutations/selectFulfillmentOptionForGroup"; +import selectFulfillmentOptionForGroupMutation from "../../mutations/selectFulfillmentOptionForGroup.js"; /** * @name Mutation/selectFulfillmentOptionForGroup diff --git a/imports/plugins/core/shipping/server/no-meteor/resolvers/Mutation/updateFulfillmentOptionsForGroup.js b/imports/node-app/plugins/shipping/resolvers/Mutation/updateFulfillmentOptionsForGroup.js similarity index 97% rename from imports/plugins/core/shipping/server/no-meteor/resolvers/Mutation/updateFulfillmentOptionsForGroup.js rename to imports/node-app/plugins/shipping/resolvers/Mutation/updateFulfillmentOptionsForGroup.js index 873d62bfeec..8342ad81371 100644 --- a/imports/plugins/core/shipping/server/no-meteor/resolvers/Mutation/updateFulfillmentOptionsForGroup.js +++ b/imports/node-app/plugins/shipping/resolvers/Mutation/updateFulfillmentOptionsForGroup.js @@ -1,5 +1,5 @@ import { decodeCartOpaqueId, decodeFulfillmentGroupOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/cart"; -import updateFulfillmentOptionsForGroupMutation from "../../mutations/updateFulfillmentOptionsForGroup"; +import updateFulfillmentOptionsForGroupMutation from "../../mutations/updateFulfillmentOptionsForGroup.js"; /** * @name Mutation/updateFulfillmentOptionsForGroup diff --git a/imports/plugins/core/shipping/server/no-meteor/resolvers/index.js b/imports/node-app/plugins/shipping/resolvers/index.js similarity index 56% rename from imports/plugins/core/shipping/server/no-meteor/resolvers/index.js rename to imports/node-app/plugins/shipping/resolvers/index.js index de3a23177fa..85d60d54bf9 100644 --- a/imports/plugins/core/shipping/server/no-meteor/resolvers/index.js +++ b/imports/node-app/plugins/shipping/resolvers/index.js @@ -1,5 +1,5 @@ -import FulfillmentMethod from "./FulfillmentMethod"; -import Mutation from "./Mutation"; +import FulfillmentMethod from "./FulfillmentMethod/index.js"; +import Mutation from "./Mutation/index.js"; /** * Fulfillment related GraphQL resolvers diff --git a/imports/plugins/core/shipping/server/no-meteor/schemas/index.js b/imports/node-app/plugins/shipping/schemas/index.js similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/schemas/index.js rename to imports/node-app/plugins/shipping/schemas/index.js diff --git a/imports/plugins/core/shipping/server/no-meteor/schemas/schema.graphql b/imports/node-app/plugins/shipping/schemas/schema.graphql similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/schemas/schema.graphql rename to imports/node-app/plugins/shipping/schemas/schema.graphql diff --git a/imports/plugins/core/shipping/server/no-meteor/util/extendCommonOrder.js b/imports/node-app/plugins/shipping/util/extendCommonOrder.js similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/util/extendCommonOrder.js rename to imports/node-app/plugins/shipping/util/extendCommonOrder.js diff --git a/imports/plugins/core/shipping/server/no-meteor/util/getCartById.js b/imports/node-app/plugins/shipping/util/getCartById.js similarity index 94% rename from imports/plugins/core/shipping/server/no-meteor/util/getCartById.js rename to imports/node-app/plugins/shipping/util/getCartById.js index 8cdc50cf35e..8451934ca4e 100644 --- a/imports/plugins/core/shipping/server/no-meteor/util/getCartById.js +++ b/imports/node-app/plugins/shipping/util/getCartById.js @@ -1,5 +1,5 @@ import ReactionError from "@reactioncommerce/reaction-error"; -import hashLoginToken from "/imports/node-app/core/util/hashLoginToken"; +import hashLoginToken from "../../../core/util/hashLoginToken"; /** * @summary Gets a cart from the db by ID. If there is an account for the request, verifies that the diff --git a/imports/plugins/core/shipping/server/no-meteor/util/helpers.js b/imports/node-app/plugins/shipping/util/helpers.js similarity index 100% rename from imports/plugins/core/shipping/server/no-meteor/util/helpers.js rename to imports/node-app/plugins/shipping/util/helpers.js diff --git a/imports/plugins/core/shipping/register.js b/imports/plugins/core/shipping/register.js index add1f847771..8f9079b1ab5 100644 --- a/imports/plugins/core/shipping/register.js +++ b/imports/plugins/core/shipping/register.js @@ -6,6 +6,6 @@ * temporary bridge. */ import Reaction from "/imports/plugins/core/core/server/Reaction"; -import register from "./server/no-meteor/register"; +import register from "/imports/node-app/plugins/shipping/index.js"; Reaction.whenAppInstanceReady(register); From 483a801d4016abc3cc1fed91524301bf38a1ea72 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 10:46:22 -0700 Subject: [PATCH 03/17] refactor: move `shipping` into `core-services` instead of `plugins` Signed-off-by: Erik Kieckhafer --- imports/node-app/{plugins => core-services}/shipping/i18n/ar.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/bg.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/cs.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/de.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/el.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/en.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/es.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/fr.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/he.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/hr.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/hu.json | 0 .../node-app/{plugins => core-services}/shipping/i18n/index.js | 0 imports/node-app/{plugins => core-services}/shipping/i18n/it.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/my.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/nb.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/nl.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/pl.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/pt.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/ro.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/ru.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/sl.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/sv.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/tr.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/vi.json | 0 imports/node-app/{plugins => core-services}/shipping/i18n/zh.json | 0 imports/node-app/{plugins => core-services}/shipping/index.js | 0 .../__snapshots__/selectFulfillmentOptionForGroup.test.js.snap | 0 .../__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap | 0 .../{plugins => core-services}/shipping/mutations/index.js | 0 .../shipping/mutations/selectFulfillmentOptionForGroup.js | 0 .../shipping/mutations/selectFulfillmentOptionForGroup.test.js | 0 .../shipping/mutations/updateFulfillmentOptionsForGroup.js | 0 .../shipping/mutations/updateFulfillmentOptionsForGroup.test.js | 0 .../shipping/queries/getFulfillmentMethodsWithQuotes.js | 0 .../node-app/{plugins => core-services}/shipping/queries/index.js | 0 .../shipping/resolvers/FulfillmentMethod/index.js | 0 .../shipping/resolvers/Mutation/index.js | 0 .../resolvers/Mutation/selectFulfillmentOptionForGroup.js | 0 .../resolvers/Mutation/updateFulfillmentOptionsForGroup.js | 0 .../{plugins => core-services}/shipping/resolvers/index.js | 0 .../node-app/{plugins => core-services}/shipping/schemas/index.js | 0 .../{plugins => core-services}/shipping/schemas/schema.graphql | 0 .../{plugins => core-services}/shipping/util/extendCommonOrder.js | 0 .../{plugins => core-services}/shipping/util/getCartById.js | 0 .../node-app/{plugins => core-services}/shipping/util/helpers.js | 0 45 files changed, 0 insertions(+), 0 deletions(-) rename imports/node-app/{plugins => core-services}/shipping/i18n/ar.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/bg.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/cs.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/de.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/el.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/en.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/es.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/fr.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/he.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/hr.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/hu.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/index.js (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/it.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/my.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/nb.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/nl.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/pl.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/pt.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/ro.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/ru.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/sl.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/sv.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/tr.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/vi.json (100%) rename imports/node-app/{plugins => core-services}/shipping/i18n/zh.json (100%) rename imports/node-app/{plugins => core-services}/shipping/index.js (100%) rename imports/node-app/{plugins => core-services}/shipping/mutations/__snapshots__/selectFulfillmentOptionForGroup.test.js.snap (100%) rename imports/node-app/{plugins => core-services}/shipping/mutations/__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap (100%) rename imports/node-app/{plugins => core-services}/shipping/mutations/index.js (100%) rename imports/node-app/{plugins => core-services}/shipping/mutations/selectFulfillmentOptionForGroup.js (100%) rename imports/node-app/{plugins => core-services}/shipping/mutations/selectFulfillmentOptionForGroup.test.js (100%) rename imports/node-app/{plugins => core-services}/shipping/mutations/updateFulfillmentOptionsForGroup.js (100%) rename imports/node-app/{plugins => core-services}/shipping/mutations/updateFulfillmentOptionsForGroup.test.js (100%) rename imports/node-app/{plugins => core-services}/shipping/queries/getFulfillmentMethodsWithQuotes.js (100%) rename imports/node-app/{plugins => core-services}/shipping/queries/index.js (100%) rename imports/node-app/{plugins => core-services}/shipping/resolvers/FulfillmentMethod/index.js (100%) rename imports/node-app/{plugins => core-services}/shipping/resolvers/Mutation/index.js (100%) rename imports/node-app/{plugins => core-services}/shipping/resolvers/Mutation/selectFulfillmentOptionForGroup.js (100%) rename imports/node-app/{plugins => core-services}/shipping/resolvers/Mutation/updateFulfillmentOptionsForGroup.js (100%) rename imports/node-app/{plugins => core-services}/shipping/resolvers/index.js (100%) rename imports/node-app/{plugins => core-services}/shipping/schemas/index.js (100%) rename imports/node-app/{plugins => core-services}/shipping/schemas/schema.graphql (100%) rename imports/node-app/{plugins => core-services}/shipping/util/extendCommonOrder.js (100%) rename imports/node-app/{plugins => core-services}/shipping/util/getCartById.js (100%) rename imports/node-app/{plugins => core-services}/shipping/util/helpers.js (100%) diff --git a/imports/node-app/plugins/shipping/i18n/ar.json b/imports/node-app/core-services/shipping/i18n/ar.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/ar.json rename to imports/node-app/core-services/shipping/i18n/ar.json diff --git a/imports/node-app/plugins/shipping/i18n/bg.json b/imports/node-app/core-services/shipping/i18n/bg.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/bg.json rename to imports/node-app/core-services/shipping/i18n/bg.json diff --git a/imports/node-app/plugins/shipping/i18n/cs.json b/imports/node-app/core-services/shipping/i18n/cs.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/cs.json rename to imports/node-app/core-services/shipping/i18n/cs.json diff --git a/imports/node-app/plugins/shipping/i18n/de.json b/imports/node-app/core-services/shipping/i18n/de.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/de.json rename to imports/node-app/core-services/shipping/i18n/de.json diff --git a/imports/node-app/plugins/shipping/i18n/el.json b/imports/node-app/core-services/shipping/i18n/el.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/el.json rename to imports/node-app/core-services/shipping/i18n/el.json diff --git a/imports/node-app/plugins/shipping/i18n/en.json b/imports/node-app/core-services/shipping/i18n/en.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/en.json rename to imports/node-app/core-services/shipping/i18n/en.json diff --git a/imports/node-app/plugins/shipping/i18n/es.json b/imports/node-app/core-services/shipping/i18n/es.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/es.json rename to imports/node-app/core-services/shipping/i18n/es.json diff --git a/imports/node-app/plugins/shipping/i18n/fr.json b/imports/node-app/core-services/shipping/i18n/fr.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/fr.json rename to imports/node-app/core-services/shipping/i18n/fr.json diff --git a/imports/node-app/plugins/shipping/i18n/he.json b/imports/node-app/core-services/shipping/i18n/he.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/he.json rename to imports/node-app/core-services/shipping/i18n/he.json diff --git a/imports/node-app/plugins/shipping/i18n/hr.json b/imports/node-app/core-services/shipping/i18n/hr.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/hr.json rename to imports/node-app/core-services/shipping/i18n/hr.json diff --git a/imports/node-app/plugins/shipping/i18n/hu.json b/imports/node-app/core-services/shipping/i18n/hu.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/hu.json rename to imports/node-app/core-services/shipping/i18n/hu.json diff --git a/imports/node-app/plugins/shipping/i18n/index.js b/imports/node-app/core-services/shipping/i18n/index.js similarity index 100% rename from imports/node-app/plugins/shipping/i18n/index.js rename to imports/node-app/core-services/shipping/i18n/index.js diff --git a/imports/node-app/plugins/shipping/i18n/it.json b/imports/node-app/core-services/shipping/i18n/it.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/it.json rename to imports/node-app/core-services/shipping/i18n/it.json diff --git a/imports/node-app/plugins/shipping/i18n/my.json b/imports/node-app/core-services/shipping/i18n/my.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/my.json rename to imports/node-app/core-services/shipping/i18n/my.json diff --git a/imports/node-app/plugins/shipping/i18n/nb.json b/imports/node-app/core-services/shipping/i18n/nb.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/nb.json rename to imports/node-app/core-services/shipping/i18n/nb.json diff --git a/imports/node-app/plugins/shipping/i18n/nl.json b/imports/node-app/core-services/shipping/i18n/nl.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/nl.json rename to imports/node-app/core-services/shipping/i18n/nl.json diff --git a/imports/node-app/plugins/shipping/i18n/pl.json b/imports/node-app/core-services/shipping/i18n/pl.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/pl.json rename to imports/node-app/core-services/shipping/i18n/pl.json diff --git a/imports/node-app/plugins/shipping/i18n/pt.json b/imports/node-app/core-services/shipping/i18n/pt.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/pt.json rename to imports/node-app/core-services/shipping/i18n/pt.json diff --git a/imports/node-app/plugins/shipping/i18n/ro.json b/imports/node-app/core-services/shipping/i18n/ro.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/ro.json rename to imports/node-app/core-services/shipping/i18n/ro.json diff --git a/imports/node-app/plugins/shipping/i18n/ru.json b/imports/node-app/core-services/shipping/i18n/ru.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/ru.json rename to imports/node-app/core-services/shipping/i18n/ru.json diff --git a/imports/node-app/plugins/shipping/i18n/sl.json b/imports/node-app/core-services/shipping/i18n/sl.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/sl.json rename to imports/node-app/core-services/shipping/i18n/sl.json diff --git a/imports/node-app/plugins/shipping/i18n/sv.json b/imports/node-app/core-services/shipping/i18n/sv.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/sv.json rename to imports/node-app/core-services/shipping/i18n/sv.json diff --git a/imports/node-app/plugins/shipping/i18n/tr.json b/imports/node-app/core-services/shipping/i18n/tr.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/tr.json rename to imports/node-app/core-services/shipping/i18n/tr.json diff --git a/imports/node-app/plugins/shipping/i18n/vi.json b/imports/node-app/core-services/shipping/i18n/vi.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/vi.json rename to imports/node-app/core-services/shipping/i18n/vi.json diff --git a/imports/node-app/plugins/shipping/i18n/zh.json b/imports/node-app/core-services/shipping/i18n/zh.json similarity index 100% rename from imports/node-app/plugins/shipping/i18n/zh.json rename to imports/node-app/core-services/shipping/i18n/zh.json diff --git a/imports/node-app/plugins/shipping/index.js b/imports/node-app/core-services/shipping/index.js similarity index 100% rename from imports/node-app/plugins/shipping/index.js rename to imports/node-app/core-services/shipping/index.js diff --git a/imports/node-app/plugins/shipping/mutations/__snapshots__/selectFulfillmentOptionForGroup.test.js.snap b/imports/node-app/core-services/shipping/mutations/__snapshots__/selectFulfillmentOptionForGroup.test.js.snap similarity index 100% rename from imports/node-app/plugins/shipping/mutations/__snapshots__/selectFulfillmentOptionForGroup.test.js.snap rename to imports/node-app/core-services/shipping/mutations/__snapshots__/selectFulfillmentOptionForGroup.test.js.snap diff --git a/imports/node-app/plugins/shipping/mutations/__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap b/imports/node-app/core-services/shipping/mutations/__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap similarity index 100% rename from imports/node-app/plugins/shipping/mutations/__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap rename to imports/node-app/core-services/shipping/mutations/__snapshots__/updateFulfillmentOptionsForGroup.test.js.snap diff --git a/imports/node-app/plugins/shipping/mutations/index.js b/imports/node-app/core-services/shipping/mutations/index.js similarity index 100% rename from imports/node-app/plugins/shipping/mutations/index.js rename to imports/node-app/core-services/shipping/mutations/index.js diff --git a/imports/node-app/plugins/shipping/mutations/selectFulfillmentOptionForGroup.js b/imports/node-app/core-services/shipping/mutations/selectFulfillmentOptionForGroup.js similarity index 100% rename from imports/node-app/plugins/shipping/mutations/selectFulfillmentOptionForGroup.js rename to imports/node-app/core-services/shipping/mutations/selectFulfillmentOptionForGroup.js diff --git a/imports/node-app/plugins/shipping/mutations/selectFulfillmentOptionForGroup.test.js b/imports/node-app/core-services/shipping/mutations/selectFulfillmentOptionForGroup.test.js similarity index 100% rename from imports/node-app/plugins/shipping/mutations/selectFulfillmentOptionForGroup.test.js rename to imports/node-app/core-services/shipping/mutations/selectFulfillmentOptionForGroup.test.js diff --git a/imports/node-app/plugins/shipping/mutations/updateFulfillmentOptionsForGroup.js b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js similarity index 100% rename from imports/node-app/plugins/shipping/mutations/updateFulfillmentOptionsForGroup.js rename to imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js diff --git a/imports/node-app/plugins/shipping/mutations/updateFulfillmentOptionsForGroup.test.js b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.test.js similarity index 100% rename from imports/node-app/plugins/shipping/mutations/updateFulfillmentOptionsForGroup.test.js rename to imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.test.js diff --git a/imports/node-app/plugins/shipping/queries/getFulfillmentMethodsWithQuotes.js b/imports/node-app/core-services/shipping/queries/getFulfillmentMethodsWithQuotes.js similarity index 100% rename from imports/node-app/plugins/shipping/queries/getFulfillmentMethodsWithQuotes.js rename to imports/node-app/core-services/shipping/queries/getFulfillmentMethodsWithQuotes.js diff --git a/imports/node-app/plugins/shipping/queries/index.js b/imports/node-app/core-services/shipping/queries/index.js similarity index 100% rename from imports/node-app/plugins/shipping/queries/index.js rename to imports/node-app/core-services/shipping/queries/index.js diff --git a/imports/node-app/plugins/shipping/resolvers/FulfillmentMethod/index.js b/imports/node-app/core-services/shipping/resolvers/FulfillmentMethod/index.js similarity index 100% rename from imports/node-app/plugins/shipping/resolvers/FulfillmentMethod/index.js rename to imports/node-app/core-services/shipping/resolvers/FulfillmentMethod/index.js diff --git a/imports/node-app/plugins/shipping/resolvers/Mutation/index.js b/imports/node-app/core-services/shipping/resolvers/Mutation/index.js similarity index 100% rename from imports/node-app/plugins/shipping/resolvers/Mutation/index.js rename to imports/node-app/core-services/shipping/resolvers/Mutation/index.js diff --git a/imports/node-app/plugins/shipping/resolvers/Mutation/selectFulfillmentOptionForGroup.js b/imports/node-app/core-services/shipping/resolvers/Mutation/selectFulfillmentOptionForGroup.js similarity index 100% rename from imports/node-app/plugins/shipping/resolvers/Mutation/selectFulfillmentOptionForGroup.js rename to imports/node-app/core-services/shipping/resolvers/Mutation/selectFulfillmentOptionForGroup.js diff --git a/imports/node-app/plugins/shipping/resolvers/Mutation/updateFulfillmentOptionsForGroup.js b/imports/node-app/core-services/shipping/resolvers/Mutation/updateFulfillmentOptionsForGroup.js similarity index 100% rename from imports/node-app/plugins/shipping/resolvers/Mutation/updateFulfillmentOptionsForGroup.js rename to imports/node-app/core-services/shipping/resolvers/Mutation/updateFulfillmentOptionsForGroup.js diff --git a/imports/node-app/plugins/shipping/resolvers/index.js b/imports/node-app/core-services/shipping/resolvers/index.js similarity index 100% rename from imports/node-app/plugins/shipping/resolvers/index.js rename to imports/node-app/core-services/shipping/resolvers/index.js diff --git a/imports/node-app/plugins/shipping/schemas/index.js b/imports/node-app/core-services/shipping/schemas/index.js similarity index 100% rename from imports/node-app/plugins/shipping/schemas/index.js rename to imports/node-app/core-services/shipping/schemas/index.js diff --git a/imports/node-app/plugins/shipping/schemas/schema.graphql b/imports/node-app/core-services/shipping/schemas/schema.graphql similarity index 100% rename from imports/node-app/plugins/shipping/schemas/schema.graphql rename to imports/node-app/core-services/shipping/schemas/schema.graphql diff --git a/imports/node-app/plugins/shipping/util/extendCommonOrder.js b/imports/node-app/core-services/shipping/util/extendCommonOrder.js similarity index 100% rename from imports/node-app/plugins/shipping/util/extendCommonOrder.js rename to imports/node-app/core-services/shipping/util/extendCommonOrder.js diff --git a/imports/node-app/plugins/shipping/util/getCartById.js b/imports/node-app/core-services/shipping/util/getCartById.js similarity index 100% rename from imports/node-app/plugins/shipping/util/getCartById.js rename to imports/node-app/core-services/shipping/util/getCartById.js diff --git a/imports/node-app/plugins/shipping/util/helpers.js b/imports/node-app/core-services/shipping/util/helpers.js similarity index 100% rename from imports/node-app/plugins/shipping/util/helpers.js rename to imports/node-app/core-services/shipping/util/helpers.js From 75af3b3436bc4e8cf22b62bed39001f28c53cc55 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 14:55:22 -0700 Subject: [PATCH 04/17] refactor: use new getCommonOrderForCartGroup instead of xformCartGroupToCommonOrder Signed-off-by: Erik Kieckhafer --- .../updateFulfillmentOptionsForGroup.js | 3 +- .../mutations/transformAndValidateCart.js | 3 +- .../getCommonOrderForCartGroup.js} | 50 +++++++++++++++++-- .../cart/server/no-meteor/queries/index.js | 4 +- .../Query/getCommonOrderForCartGroup.js | 22 ++++++++ .../server/no-meteor/resolvers/Query/index.js | 4 +- 6 files changed, 75 insertions(+), 11 deletions(-) rename imports/plugins/core/cart/server/no-meteor/{util/xformCartGroupToCommonOrder.js => queries/getCommonOrderForCartGroup.js} (77%) create mode 100644 imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js diff --git a/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js index fd2b9e7b76e..b1f3da200a1 100644 --- a/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js +++ b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js @@ -1,7 +1,6 @@ import { isEqual } from "lodash"; import SimpleSchema from "simpl-schema"; import ReactionError from "@reactioncommerce/reaction-error"; -import xformCartGroupToCommonOrder from "/imports/plugins/core/cart/server/no-meteor/util/xformCartGroupToCommonOrder.js"; // TODO: EK - get from other package import getCartById from "../util/getCartById.js"; const inputSchema = new SimpleSchema({ @@ -71,7 +70,7 @@ export default async function updateFulfillmentOptionsForGroup(context, input) { const fulfillmentGroup = (cart.shipping || []).find((group) => group._id === fulfillmentGroupId); if (!fulfillmentGroup) throw new ReactionError("not-found", `Fulfillment group with ID ${fulfillmentGroupId} not found in cart with ID ${cartId}`); - const commonOrder = await xformCartGroupToCommonOrder(cart, fulfillmentGroup, context); + const commonOrder = context.queries.getCommonOrderForCartGroup(context, { cartId: cart._id, fulfillmentGroupId: fulfillmentGroup._id }); // In the future we want to do this async and subscribe to the results const rates = await context.queries.getFulfillmentMethodsWithQuotes(commonOrder, context); diff --git a/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js b/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js index 0b8cfe78d3e..3ee8843e63a 100644 --- a/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js +++ b/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js @@ -2,7 +2,6 @@ import Logger from "@reactioncommerce/logger"; import { Cart as CartSchema } from "/imports/collections/schemas"; import forEachPromise from "/imports/utils/forEachPromise"; import updateCartFulfillmentGroups from "../util/updateCartFulfillmentGroups"; -import xformCartGroupToCommonOrder from "../util/xformCartGroupToCommonOrder"; import { cartTransforms } from "../registration"; const logCtx = { name: "cart", file: "transformAndValidateCart" }; @@ -29,7 +28,7 @@ export default async function transformAndValidateCart(context, cart) { async function getCommonOrders({ shouldRebuild = false } = {}) { if (!commonOrders || shouldRebuild) { commonOrders = await Promise.all(cart.shipping.map((group) => - xformCartGroupToCommonOrder(cart, group, context))); + context.queries.getCommonOrderForCartGroup(context, { cartId: cart._id, fulfillmentGroupId: group._id }))); } return commonOrders; } diff --git a/imports/plugins/core/cart/server/no-meteor/util/xformCartGroupToCommonOrder.js b/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js similarity index 77% rename from imports/plugins/core/cart/server/no-meteor/util/xformCartGroupToCommonOrder.js rename to imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js index 0dac3d39bbd..ed918f5e77b 100644 --- a/imports/plugins/core/cart/server/no-meteor/util/xformCartGroupToCommonOrder.js +++ b/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js @@ -1,15 +1,55 @@ import { toFixed } from "accounting-js"; +import SimpleSchema from "simpl-schema"; import ReactionError from "@reactioncommerce/reaction-error"; +const inputSchema = new SimpleSchema({ + amount: { + type: Number, + exclusiveMin: true, + min: 0 + }, + orderId: String, + paymentId: String, + reason: { + type: String, + optional: true + } +}); /** - * @param {Object} cart A cart - * @param {Object} group The cart fulfillment group - * @param {Object} context App context - * @returns {Object} Valid CommonOrder from a cart group + * @name getCommonOrderForCartGroup + * @method + * @memberof Cart/NoMeteorQueries + * @summary Query the Cart collection for a cart and fulfillment group + * with the provided cartId and fulfillmentGroupId, and return + * a CommonOrder style object + * @param {Object} context - an object containing the per-request state + * @param {Object} input - request parameters + * @param {String} input.cartId - Cart ID + * @param {String} input.fulfillmentGroupId - ID of fulfillmentGroup to convert + * @returns {Promise|undefined} - A CommonOrder document */ -export default async function xformCartGroupToCommonOrder(cart, group, context) { +export default async function getCommonOrderForCartGroup(context, input = {}) { + inputSchema.validate(input); const { collections } = context; + const { Cart } = collections; + + const { + cartId, + fulfillmentGroupId + } = input; + + if (!cartId) { + throw new ReactionError("invalid-param", "You must provide a cartId"); + } + + if (!fulfillmentGroupId) { + throw new ReactionError("invalid-param", "You must provide a fulfillmentGroupId"); + } + + const cart = await Cart.findOne({ _id: cartId }); + const group = cart.groups.find((grp) => grp._id === fulfillmentGroupId); + const { accountId, currencyCode } = cart; let items = group.itemIds.map((itemId) => cart.items.find((item) => item._id === itemId)); diff --git a/imports/plugins/core/cart/server/no-meteor/queries/index.js b/imports/plugins/core/cart/server/no-meteor/queries/index.js index dc89dc7e423..e4b4d7ab327 100644 --- a/imports/plugins/core/cart/server/no-meteor/queries/index.js +++ b/imports/plugins/core/cart/server/no-meteor/queries/index.js @@ -1,7 +1,9 @@ import accountCartByAccountId from "./accountCartByAccountId"; import anonymousCartByCartId from "./anonymousCartByCartId"; +import getCommonOrderForCartGroup from "./getCommonOrderForCartGroup"; export default { accountCartByAccountId, - anonymousCartByCartId + anonymousCartByCartId, + getCommonOrderForCartGroup }; diff --git a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js new file mode 100644 index 00000000000..46ad7e32b3a --- /dev/null +++ b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js @@ -0,0 +1,22 @@ +import { decodeCartOpaqueId, decodeFulfillmentGroupOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/cart"; + +/** + * @name Query.getCommonOrderForCartGroup + * @method + * @memberof Cart/GraphQL + * @summary Get a CommonOrder object for a cart fulfillment group + * @param {Object} parentResult - unused + * @param {ConnectionArgs} args - An object of all arguments that were sent by the client + * @param {String} args.cartId - ID of the cart + * @param {String} args.fulfillmentGroupId - ID of the fulfillment group + * @param {Object} context - An object containing the per-request state + * @returns {Promise|undefined} A CommonOrder object + */ +export default async function getCommonOrderForCartGroup(parentResult, args, context) { + const { cartId, fulfillmentGroupId } = args; + + return context.queries.getCommonOrderForCartGroup(context, { + cartId: decodeCartOpaqueId(cartId), + fulfillmentGroupId: decodeFulfillmentGroupOpaqueId(fulfillmentGroupId) + }); +} diff --git a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/index.js b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/index.js index dc89dc7e423..e4b4d7ab327 100644 --- a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/index.js +++ b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/index.js @@ -1,7 +1,9 @@ import accountCartByAccountId from "./accountCartByAccountId"; import anonymousCartByCartId from "./anonymousCartByCartId"; +import getCommonOrderForCartGroup from "./getCommonOrderForCartGroup"; export default { accountCartByAccountId, - anonymousCartByCartId + anonymousCartByCartId, + getCommonOrderForCartGroup }; From a5d045aea4bf57dd2ec3ab3ce926d5c831914446 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 15:12:25 -0700 Subject: [PATCH 05/17] refactor: add alias for temporary import of new api-utils (remove once published) Signed-off-by: Erik Kieckhafer --- .../selectFulfillmentOptionForGroup.test.js | 2 +- .../updateFulfillmentOptionsForGroup.test.js | 2 +- .../node-app/core/util/buildContext.test.js | 2 +- .../plugins/surcharges/getSurcharges.js | 2 +- .../mutations/createSurcharge.test.js | 3 +- .../mutations/deleteSurcharge.test.js | 3 +- .../mutations/updateSurcharge.test.js | 3 +- .../plugins/surcharges/util/surchargeCheck.js | 4 +- .../surcharges/util/surchargeCheck.test.js | 3 +- package-lock.json | 70 +++++-------------- package.json | 3 + 11 files changed, 36 insertions(+), 61 deletions(-) diff --git a/imports/node-app/core-services/shipping/mutations/selectFulfillmentOptionForGroup.test.js b/imports/node-app/core-services/shipping/mutations/selectFulfillmentOptionForGroup.test.js index baec837551f..9068349c76d 100644 --- a/imports/node-app/core-services/shipping/mutations/selectFulfillmentOptionForGroup.test.js +++ b/imports/node-app/core-services/shipping/mutations/selectFulfillmentOptionForGroup.test.js @@ -1,4 +1,4 @@ -import mockContext from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to new repo +import mockContext from "@reactioncommerce/api-utils/tests/mockContext.js"; import selectFulfillmentOptionForGroup from "./selectFulfillmentOptionForGroup.js"; jest.mock("../util/getCartById", () => jest.fn().mockImplementation(() => Promise.resolve({ diff --git a/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.test.js b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.test.js index f95f8a2615a..019360ad029 100644 --- a/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.test.js +++ b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.test.js @@ -1,5 +1,5 @@ import Factory from "/imports/test-utils/helpers/factory.js"; -import mockContext from "/imports/test-utils/helpers/mockContext.js"; // TODO: EK - update to new repo +import mockContext from "@reactioncommerce/api-utils/tests/mockContext.js"; import updateFulfillmentOptionsForGroup from "./updateFulfillmentOptionsForGroup.js"; jest.mock("../util/getCartById", () => jest.fn().mockImplementation(() => Promise.resolve({ diff --git a/imports/node-app/core/util/buildContext.test.js b/imports/node-app/core/util/buildContext.test.js index ea982e6e7d3..96701f77b2a 100644 --- a/imports/node-app/core/util/buildContext.test.js +++ b/imports/node-app/core/util/buildContext.test.js @@ -1,4 +1,4 @@ -import mockContext from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to come from new packages +import mockContext from "@reactioncommerce/api-utils/tests/mockContext.js"; import buildContext from "./buildContext"; const fakeUser = { diff --git a/imports/node-app/plugins/surcharges/getSurcharges.js b/imports/node-app/plugins/surcharges/getSurcharges.js index 37f54bb1209..0c039076a5d 100644 --- a/imports/node-app/plugins/surcharges/getSurcharges.js +++ b/imports/node-app/plugins/surcharges/getSurcharges.js @@ -1,5 +1,5 @@ import Random from "@reactioncommerce/random"; -import extendCommonOrder from "/imports/plugins/core/shipping/server/no-meteor/util/extendCommonOrder"; // TODO: EK - update to come from new package +import extendCommonOrder from "/imports/plugins/core/shipping/server/no-meteor/util/extendCommonOrder"; // TODO: remove cross-plugin import (https://github.com/reactioncommerce/reaction/issues/5633) import { surchargeCheck } from "./util/surchargeCheck.js"; diff --git a/imports/node-app/plugins/surcharges/mutations/createSurcharge.test.js b/imports/node-app/plugins/surcharges/mutations/createSurcharge.test.js index 5aef85c19f1..daeddc32c93 100644 --- a/imports/node-app/plugins/surcharges/mutations/createSurcharge.test.js +++ b/imports/node-app/plugins/surcharges/mutations/createSurcharge.test.js @@ -1,4 +1,5 @@ -import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to come from new packages +import mockCollection from "@reactioncommerce/api-utils/tests/mockCollection.js"; +import mockContext from "@reactioncommerce/api-utils/tests/mockContext.js"; import createSurchargeMutation from "./createSurcharge.js"; diff --git a/imports/node-app/plugins/surcharges/mutations/deleteSurcharge.test.js b/imports/node-app/plugins/surcharges/mutations/deleteSurcharge.test.js index df8ed8457d3..dcbbb2494cb 100644 --- a/imports/node-app/plugins/surcharges/mutations/deleteSurcharge.test.js +++ b/imports/node-app/plugins/surcharges/mutations/deleteSurcharge.test.js @@ -1,4 +1,5 @@ -import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to come from new packages +import mockCollection from "@reactioncommerce/api-utils/tests/mockCollection.js"; +import mockContext from "@reactioncommerce/api-utils/tests/mockContext.js"; import deleteSurchargeMutation from "./deleteSurcharge.js"; diff --git a/imports/node-app/plugins/surcharges/mutations/updateSurcharge.test.js b/imports/node-app/plugins/surcharges/mutations/updateSurcharge.test.js index 3d988f39851..638b1054e04 100644 --- a/imports/node-app/plugins/surcharges/mutations/updateSurcharge.test.js +++ b/imports/node-app/plugins/surcharges/mutations/updateSurcharge.test.js @@ -1,4 +1,5 @@ -import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to come from new packages +import mockCollection from "@reactioncommerce/api-utils/tests/mockCollection.js"; +import mockContext from "@reactioncommerce/api-utils/tests/mockContext.js"; import updateSurchargeMutation from "./updateSurcharge.js"; diff --git a/imports/node-app/plugins/surcharges/util/surchargeCheck.js b/imports/node-app/plugins/surcharges/util/surchargeCheck.js index a34295c3111..7bc22d6e06e 100644 --- a/imports/node-app/plugins/surcharges/util/surchargeCheck.js +++ b/imports/node-app/plugins/surcharges/util/surchargeCheck.js @@ -1,5 +1,5 @@ -import operators from "/imports/utils/operators"; // TODO: EK - update to come from new package -import propertyTypes from "/imports/utils/propertyTypes"; // TODO: EK - update to come from new package +import operators from "@reactioncommerce/api-utils/operators.js"; +import propertyTypes from "@reactioncommerce/api-utils/propertyTypes.js"; /** * @summary Filter surcharges based on surcharge restriction data diff --git a/imports/node-app/plugins/surcharges/util/surchargeCheck.test.js b/imports/node-app/plugins/surcharges/util/surchargeCheck.test.js index 940971b2f78..5c7e581b411 100644 --- a/imports/node-app/plugins/surcharges/util/surchargeCheck.test.js +++ b/imports/node-app/plugins/surcharges/util/surchargeCheck.test.js @@ -1,5 +1,6 @@ +import mockCollection from "@reactioncommerce/api-utils/tests/mockCollection.js"; +import mockContext from "@reactioncommerce/api-utils/tests/mockContext.js"; import { surchargeCheck } from "./surchargeCheck.js"; -import mockContext, { mockCollection } from "/imports/test-utils/helpers/mockContext"; // TODO: EK - update to come from new packages // Create mock context with Surcharges collection mockContext.collections.Surcharges = mockCollection("Surcharges"); diff --git a/package-lock.json b/package-lock.json index d6e571dbdb2..e16eb85c798 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3209,7 +3209,7 @@ }, "@types/accepts": { "version": "1.3.5", - "resolved": "http://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", "requires": { "@types/node": "*" @@ -8512,8 +8512,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -8537,15 +8536,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8555,22 +8552,19 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -8691,8 +8685,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -8706,7 +8699,6 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -8723,7 +8715,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -8732,8 +8723,7 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", @@ -8757,7 +8747,6 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -8846,8 +8835,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -8861,7 +8849,6 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -8998,7 +8985,6 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -9020,7 +9006,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -9053,7 +9038,6 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -9073,15 +9057,13 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true, - "optional": true + "dev": true } } }, @@ -9106,8 +9088,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.2", @@ -11511,8 +11492,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -11555,8 +11535,7 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", @@ -11567,8 +11546,7 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -11685,8 +11663,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -11698,7 +11675,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -11728,7 +11704,6 @@ "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -11747,7 +11722,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -11841,7 +11815,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -11927,8 +11900,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -11964,7 +11936,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -11984,7 +11955,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -12028,14 +11998,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/package.json b/package.json index 8431a08bd53..3e858779462 100644 --- a/package.json +++ b/package.json @@ -256,6 +256,7 @@ "./" ], "alias": { + "@reactioncommerce/api-utils": "./imports/utils", "@reactioncommerce/reaction-collections": "./imports/plugins/core/collections", "@reactioncommerce/reaction-components": "./imports/plugins/core/components/lib", "@reactioncommerce/reaction-graphql-utils": "./imports/plugins/core/graphql/server/no-meteor/util", @@ -307,6 +308,7 @@ "./" ], "alias": { + "@reactioncommerce/api-utils": "./imports/utils", "@reactioncommerce/reaction-collections": "./imports/plugins/core/collections", "@reactioncommerce/reaction-components": "./imports/plugins/core/components/lib", "@reactioncommerce/reaction-graphql-utils": "./imports/plugins/core/graphql/server/no-meteor/util", @@ -363,6 +365,7 @@ "./" ], "alias": { + "@reactioncommerce/api-utils": "./imports/utils", "@reactioncommerce/reaction-collections": "./imports/plugins/core/collections", "@reactioncommerce/reaction-components": "./imports/plugins/core/components/lib", "@reactioncommerce/reaction-graphql-utils": "./imports/plugins/core/graphql/server/no-meteor/util", From f277323e35cea61eba722072262b3bcd5c32d4be Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 15:12:39 -0700 Subject: [PATCH 06/17] refactor: move shipping into registerPlugins node-app area Signed-off-by: Erik Kieckhafer --- imports/node-app/registerPlugins.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/node-app/registerPlugins.js b/imports/node-app/registerPlugins.js index dabdc5935ed..126dab1e254 100644 --- a/imports/node-app/registerPlugins.js +++ b/imports/node-app/registerPlugins.js @@ -1,5 +1,6 @@ /* node-app imports */ import registerAddressPlugin from "./plugins/address/index.js"; +import registerShippingPlugin from "./plugins/shipping/index.js"; import registerSurchargesPlugin from "./plugins/surcharges/index.js"; import registerSystemInfoPlugin from "./plugins/system-info/index.js"; import registerTemplatesPlugin from "./plugins/templates/index.js"; @@ -27,7 +28,6 @@ import registerProductPlugin from "/imports/plugins/core/product/server/no-meteo import registerProductVariantPlugin from "/imports/plugins/included/product-variant/server/no-meteor/register"; import registerProductAdminPlugin from "/imports/plugins/included/product-admin/server/no-meteor/register"; import registerSettingsPlugin from "/imports/plugins/core/settings/server/register"; -import registerShippingPlugin from "/imports/plugins/core/shipping/server/no-meteor/register"; import registerShippingRatesPlugin from "/imports/plugins/included/shipping-rates/server/no-meteor/register"; import registerShopPlugin from "/imports/plugins/core/shop/server/register"; import registerSimpleInventoryPlugin from "/imports/plugins/included/simple-inventory/server/no-meteor/register"; From f92bdd659531280ca5c9e5bcfc9e258cd6f34baf Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 15:42:27 -0700 Subject: [PATCH 07/17] feat: add CommonOrder to Graphql schema Signed-off-by: Erik Kieckhafer --- .../server/no-meteor/schemas/cart.graphql | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql b/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql index df01ad70a9d..677cbe39f7e 100644 --- a/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql +++ b/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql @@ -76,6 +76,15 @@ enum CartItemsSortByField { addedAt } +"The source of data used to create the CommonOrder" +enum CommonOrderSource { + "A cart" + cart + + "An order" + order +} + """ Wraps a list of `CartItem`s, providing pagination cursors and information. @@ -221,6 +230,127 @@ type CartItem implements Node { variantTitle: String } +type CommonOrder { + "Account that owns the cart" + accountId: ID! + + "The billing address for this CommonOrder" + billingAddress: Address + + "The cart ID." + cartId: ID!, + + "Code for the currency this cart uses" + currencyCode: String! + + "The fulfillment method ID from the cart" + fulfillmentMethodId: ID! + + "Prices for handling, shipping, and total for this fulfillment method" + fulfillmentPrices: FulfillmentPrices + + "Fulfillment method type" + fulfillmentType: FulfillmentType + + "Items in this group" + items: [CommonOrderItem] + + "The order ID" + orderId: ID + + "Address of shop, or where shipment originates" + originAddress: Address + + "Shipping address for this CommonOrder" + shippingAddress: Address + + "The shop ID" + shopId: ID + + "The source of the data used to create this CommonOrder" + sourceType: CommonOrderSource, + + totals: CommonOrderTotals +} + +type CommonOrderItem { + "The cart item ID" + _id: ID! + + """ + FUTURE. Additional attributes of the chosen item. For example, if this item is for a product, socks, where "blue" and "small" + options were chosen for some configurable attributes, then "color:blue" and "size:small" will be indicated here. + """ + attributes: [CartItemAttribute] + + "Is this item taxable?" + isTaxable: Boolean + + "Packing information such as item weight, height, length, and depth. Used for calculating shipping rates." + parcel: ShippingParcel + + "The current price of the item" + price: Money! + + "Product ID this item was created from" + productId: ID + + "The product vendor" + productVendor: String + + "The quantity of this item that has been added to the cart. This must be a positive integer. Remove this `CartItem` from it's associated cart if you want `0` of this item." + quantity: Int! + + "The shop id" + shopId: ID + + "The current price of the item multiplied by the quantity" + subtotal: Money! + + "Taxcode to apply to this item" + taxCode: String! + + "A title for use in cart/orders that conveys the selected product's title + chosen options" + title: String! + + "Variant ID this item was created from" + variantId: ID + + "The selected variant title" + variantTitle: String +} + +type CommonOrderTotals { + "Discount total for the group" + groupDiscountTotal: Money + + "Item total for the group" + groupItemTotal: Money + + "Group total" + groupTotal: Money + + "Discount total for the order" + orderDiscountTotal: Money + + "Item total for the order" + orderItemTotal: Money + + "Total price for the order" + orderTotal: Money +} + +type FulfillmentPrices { + "Handling price for the fulfillment method" + handling: Money + + "Shipping price for the fulfillment method" + shipping: Money + + "Total price for the fulfillment method" + total: Money +} + "Supported cart reconciliation modes" enum CartReconciliationMode { "Delete the anonymous cart and use the account cart." @@ -264,6 +394,15 @@ extend type Query { "Shop that owns the cart" shopId: ID! ): Cart + + "Get a `CommonOrder` style object for a cart group" + getCommonOrderForCartGroup( + "The cart ID." + cartId: ID! + + "The fulfillment group ID." + fulfillmentGroupId: ID! + ): CommonOrder } #################### From 592d73d6fd6077c55df595d404dd978b8a7f6af9 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 15:46:51 -0700 Subject: [PATCH 08/17] refactor: fix import paths for moved files Signed-off-by: Erik Kieckhafer --- imports/node-app/plugins/surcharges/getSurcharges.js | 2 +- imports/plugins/core/shipping/register.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/imports/node-app/plugins/surcharges/getSurcharges.js b/imports/node-app/plugins/surcharges/getSurcharges.js index 0c039076a5d..6062aad9271 100644 --- a/imports/node-app/plugins/surcharges/getSurcharges.js +++ b/imports/node-app/plugins/surcharges/getSurcharges.js @@ -1,5 +1,5 @@ import Random from "@reactioncommerce/random"; -import extendCommonOrder from "/imports/plugins/core/shipping/server/no-meteor/util/extendCommonOrder"; // TODO: remove cross-plugin import (https://github.com/reactioncommerce/reaction/issues/5633) +import extendCommonOrder from "/imports/node-app/core-services/shipping/util/extendCommonOrder"; // TODO: remove cross-plugin import (https://github.com/reactioncommerce/reaction/issues/5633) import { surchargeCheck } from "./util/surchargeCheck.js"; diff --git a/imports/plugins/core/shipping/register.js b/imports/plugins/core/shipping/register.js index 8f9079b1ab5..e8b43b1b8c0 100644 --- a/imports/plugins/core/shipping/register.js +++ b/imports/plugins/core/shipping/register.js @@ -6,6 +6,6 @@ * temporary bridge. */ import Reaction from "/imports/plugins/core/core/server/Reaction"; -import register from "/imports/node-app/plugins/shipping/index.js"; +import register from "/imports/node-app/core-services/shipping/index.js"; Reaction.whenAppInstanceReady(register); From 32aea13b27a9d24eb61f0729a61e686dd5477dd7 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 16:35:58 -0700 Subject: [PATCH 09/17] refactor: update getCommonOrderForCartGroup to pass in full cart and group Signed-off-by: Erik Kieckhafer --- .../updateFulfillmentOptionsForGroup.js | 2 +- .../mutations/transformAndValidateCart.js | 2 +- .../queries/getCommonOrderForCartGroup.js | 39 ++++++++----------- .../Query/getCommonOrderForCartGroup.js | 12 +++--- 4 files changed, 23 insertions(+), 32 deletions(-) diff --git a/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js index b1f3da200a1..05b97814c9c 100644 --- a/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js +++ b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js @@ -70,7 +70,7 @@ export default async function updateFulfillmentOptionsForGroup(context, input) { const fulfillmentGroup = (cart.shipping || []).find((group) => group._id === fulfillmentGroupId); if (!fulfillmentGroup) throw new ReactionError("not-found", `Fulfillment group with ID ${fulfillmentGroupId} not found in cart with ID ${cartId}`); - const commonOrder = context.queries.getCommonOrderForCartGroup(context, { cartId: cart._id, fulfillmentGroupId: fulfillmentGroup._id }); + const commonOrder = await context.queries.getCommonOrderForCartGroup(context, { cart, fulfillmentGroup }); // In the future we want to do this async and subscribe to the results const rates = await context.queries.getFulfillmentMethodsWithQuotes(commonOrder, context); diff --git a/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js b/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js index 3ee8843e63a..9dd0fa8c297 100644 --- a/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js +++ b/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js @@ -28,7 +28,7 @@ export default async function transformAndValidateCart(context, cart) { async function getCommonOrders({ shouldRebuild = false } = {}) { if (!commonOrders || shouldRebuild) { commonOrders = await Promise.all(cart.shipping.map((group) => - context.queries.getCommonOrderForCartGroup(context, { cartId: cart._id, fulfillmentGroupId: group._id }))); + context.queries.getCommonOrderForCartGroup(context, { cart, fulfillmentGroup: group }))); } return commonOrders; } diff --git a/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js b/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js index ed918f5e77b..8dff83fc30a 100644 --- a/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js +++ b/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js @@ -3,16 +3,13 @@ import SimpleSchema from "simpl-schema"; import ReactionError from "@reactioncommerce/reaction-error"; const inputSchema = new SimpleSchema({ - amount: { - type: Number, - exclusiveMin: true, - min: 0 + cart: { + type: Object, + blackbox: true }, - orderId: String, - paymentId: String, - reason: { - type: String, - optional: true + fulfillmentGroup: { + type: Object, + blackbox: true } }); @@ -25,34 +22,30 @@ const inputSchema = new SimpleSchema({ * a CommonOrder style object * @param {Object} context - an object containing the per-request state * @param {Object} input - request parameters - * @param {String} input.cartId - Cart ID - * @param {String} input.fulfillmentGroupId - ID of fulfillmentGroup to convert + * @param {String} input.cart - cart object + * @param {String} input.fulfillmentGroup - fulfillmentGroup object * @returns {Promise|undefined} - A CommonOrder document */ export default async function getCommonOrderForCartGroup(context, input = {}) { inputSchema.validate(input); const { collections } = context; - const { Cart } = collections; const { - cartId, - fulfillmentGroupId + cart, + fulfillmentGroup } = input; - if (!cartId) { - throw new ReactionError("invalid-param", "You must provide a cartId"); + if (!cart) { + throw new ReactionError("invalid-param", "You must provide a cart"); } - if (!fulfillmentGroupId) { - throw new ReactionError("invalid-param", "You must provide a fulfillmentGroupId"); + if (!fulfillmentGroup) { + throw new ReactionError("invalid-param", "You must provide a group"); } - const cart = await Cart.findOne({ _id: cartId }); - const group = cart.groups.find((grp) => grp._id === fulfillmentGroupId); - const { accountId, currencyCode } = cart; - let items = group.itemIds.map((itemId) => cart.items.find((item) => item._id === itemId)); + let items = fulfillmentGroup.itemIds.map((itemId) => cart.items.find((item) => item._id === itemId)); items = items.filter((item) => !!item); // remove nulls // Get productId's from items, and then use ID's to get full Catalog product @@ -106,7 +99,7 @@ export default async function getCommonOrderForCartGroup(context, input = {}) { }; })); - const { address, shipmentMethod, shopId, type: fulfillmentType } = group; + const { address, shipmentMethod, shopId, type: fulfillmentType } = fulfillmentGroup; const shop = await collections.Shops.findOne({ _id: shopId }); let fulfillmentPrices = { diff --git a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js index 46ad7e32b3a..f97de709020 100644 --- a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js +++ b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js @@ -1,5 +1,3 @@ -import { decodeCartOpaqueId, decodeFulfillmentGroupOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/cart"; - /** * @name Query.getCommonOrderForCartGroup * @method @@ -7,16 +5,16 @@ import { decodeCartOpaqueId, decodeFulfillmentGroupOpaqueId } from "@reactioncom * @summary Get a CommonOrder object for a cart fulfillment group * @param {Object} parentResult - unused * @param {ConnectionArgs} args - An object of all arguments that were sent by the client - * @param {String} args.cartId - ID of the cart - * @param {String} args.fulfillmentGroupId - ID of the fulfillment group + * @param {String} args.cart - cart object + * @param {String} args.fulfillmentGroup - group object * @param {Object} context - An object containing the per-request state * @returns {Promise|undefined} A CommonOrder object */ export default async function getCommonOrderForCartGroup(parentResult, args, context) { - const { cartId, fulfillmentGroupId } = args; + const { cart, fulfillmentGroup } = args; return context.queries.getCommonOrderForCartGroup(context, { - cartId: decodeCartOpaqueId(cartId), - fulfillmentGroupId: decodeFulfillmentGroupOpaqueId(fulfillmentGroupId) + cart, + fulfillmentGroup }); } From f6a233c329300862060b4d40ededf1a60f2ba118 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 17:22:58 -0700 Subject: [PATCH 10/17] fix: import shipping from core-services, not plugins Signed-off-by: Erik Kieckhafer --- imports/node-app/registerPlugins.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/imports/node-app/registerPlugins.js b/imports/node-app/registerPlugins.js index 126dab1e254..cb0d4b74df6 100644 --- a/imports/node-app/registerPlugins.js +++ b/imports/node-app/registerPlugins.js @@ -1,6 +1,9 @@ /* node-app imports */ +/* core-services */ +import registerShippingPlugin from "./core-services/shipping/index.js"; + +/* plugins */ import registerAddressPlugin from "./plugins/address/index.js"; -import registerShippingPlugin from "./plugins/shipping/index.js"; import registerSurchargesPlugin from "./plugins/surcharges/index.js"; import registerSystemInfoPlugin from "./plugins/system-info/index.js"; import registerTemplatesPlugin from "./plugins/templates/index.js"; From a2c71ef2ab47c350eea10b56029f52a2304b4390 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 21:28:32 -0700 Subject: [PATCH 11/17] tests: add mockCollection and mockContext test utils Signed-off-by: Erik Kieckhafer --- imports/utils/tests/mockCollection.js | 45 ++++++++++++++++++++ imports/utils/tests/mockContext.js | 60 +++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 imports/utils/tests/mockCollection.js create mode 100644 imports/utils/tests/mockContext.js diff --git a/imports/utils/tests/mockCollection.js b/imports/utils/tests/mockCollection.js new file mode 100644 index 00000000000..4546d344e4a --- /dev/null +++ b/imports/utils/tests/mockCollection.js @@ -0,0 +1,45 @@ +/** + * @summary Returns a mock collection instance with the given name + * @param {String} collectionName The collection name + * @returns {Object} Mock collection instance + */ +export default function mockCollection(collectionName) { + return { + insert() { + throw new Error("insert mongo method is deprecated, use insertOne or insertMany"); + }, + remove() { + throw new Error("remove mongo method is deprecated, use deleteOne or deleteMany"); + }, + update() { + throw new Error("update mongo method is deprecated, use updateOne or updateMany"); + }, + bulkWrite: jest.fn().mockName(`${collectionName}.bulkWrite`).mockReturnValue(Promise.resolve({ + nMatched: 1, + nModified: 1, + result: { + writeErrors: [] + } + })), + deleteOne: jest.fn().mockName(`${collectionName}.deleteOne`).mockReturnValue(Promise.resolve({ + deletedCount: 1 + })), + deleteMany: jest.fn().mockName(`${collectionName}.deleteMany`), + find: jest + .fn() + .mockName(`${collectionName}.find`) + .mockReturnThis(), + findOne: jest.fn().mockName(`${collectionName}.findOne`), + findOneAndDelete: jest.fn().mockName(`${collectionName}.findOneAndDelete`), + findOneAndUpdate: jest.fn().mockName(`${collectionName}.findOneAndUpdate`), + fetch: jest.fn().mockName(`${collectionName}.fetch`), + insertOne: jest.fn().mockName(`${collectionName}.insertOne`), + insertMany: jest.fn().mockName(`${collectionName}.insertMany`), + toArray: jest.fn().mockName(`${collectionName}.toArray`), + updateOne: jest.fn().mockName(`${collectionName}.updateOne`).mockReturnValue(Promise.resolve({ + matchedCount: 1, + modifiedCount: 1 + })), + updateMany: jest.fn().mockName(`${collectionName}.updateMany`) + }; +} diff --git a/imports/utils/tests/mockContext.js b/imports/utils/tests/mockContext.js new file mode 100644 index 00000000000..99f781659a3 --- /dev/null +++ b/imports/utils/tests/mockContext.js @@ -0,0 +1,60 @@ +import mockCollection from "./mockCollection.js"; + +const mockContext = { + accountId: "FAKE_ACCOUNT_ID", + appEvents: { + emit() { }, + on() { } + }, + collections: {}, + getAbsoluteUrl: jest.fn().mockName("getAbsoluteUrl").mockImplementation((path) => { + const adjustedPath = path[0] === "/" ? path : `/${path}`; + return `https://app.mock${adjustedPath}`; + }), + getFunctionsOfType: jest.fn().mockName("getFunctionsOfType").mockReturnValue([]), + mutations: {}, + queries: {}, + userHasPermission: jest.fn().mockName("userHasPermission"), + userId: "FAKE_USER_ID" +}; + +[ + "Accounts", + "Assets", + "Cart", + "Catalog", + "Emails", + "ExampleIOUPaymentRefunds", + "Groups", + "MediaRecords", + "NavigationItems", + "NavigationTrees", + "Notifications", + "Orders", + "Packages", + "Products", + "Revisions", + "roles", + "SellerShops", + "Shipping", + "Shops", + "SimpleInventory", + "Tags", + "Templates", + "Themes", + "users" +].forEach((collectionName) => { + mockContext.collections[collectionName] = mockCollection(collectionName); +}); + +mockContext.collections.Media = { + find: jest.fn().mockName("Media.find"), + findLocal: jest.fn().mockName("Media.findLocal"), + findOne: jest.fn().mockName("Media.findOne"), + findOneLocal: jest.fn().mockName("Media.findOneLocal"), + insert: jest.fn().mockName("Media.insert"), + update: jest.fn().mockName("Media.update"), + remove: jest.fn().mockName("Media.remove") +}; + +export default mockContext; From d38ff75f5473b96a4811a8e2450cf6158af3c17b Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 22:07:03 -0700 Subject: [PATCH 12/17] refactor: revert xformCommGroupToCommonORder removal Signed-off-by: Erik Kieckhafer --- .../updateFulfillmentOptionsForGroup.js | 2 +- .../mutations/transformAndValidateCart.js | 3 +- .../queries/getCommonOrderForCartGroup.js | 167 ++---------------- .../Query/getCommonOrderForCartGroup.js | 12 +- .../server/no-meteor/schemas/cart.graphql | 5 + .../util/xformCartGroupToCommonOrder.js | 149 ++++++++++++++++ 6 files changed, 179 insertions(+), 159 deletions(-) create mode 100644 imports/plugins/core/cart/server/no-meteor/util/xformCartGroupToCommonOrder.js diff --git a/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js index 05b97814c9c..1e9cba970c9 100644 --- a/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js +++ b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.js @@ -70,7 +70,7 @@ export default async function updateFulfillmentOptionsForGroup(context, input) { const fulfillmentGroup = (cart.shipping || []).find((group) => group._id === fulfillmentGroupId); if (!fulfillmentGroup) throw new ReactionError("not-found", `Fulfillment group with ID ${fulfillmentGroupId} not found in cart with ID ${cartId}`); - const commonOrder = await context.queries.getCommonOrderForCartGroup(context, { cart, fulfillmentGroup }); + const commonOrder = await context.queries.getCommonOrderForCartGroup(context, { cartId: cart._id, fulfillmentGroupId: fulfillmentGroup._id }); // In the future we want to do this async and subscribe to the results const rates = await context.queries.getFulfillmentMethodsWithQuotes(commonOrder, context); diff --git a/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js b/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js index 9dd0fa8c297..0b8cfe78d3e 100644 --- a/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js +++ b/imports/plugins/core/cart/server/no-meteor/mutations/transformAndValidateCart.js @@ -2,6 +2,7 @@ import Logger from "@reactioncommerce/logger"; import { Cart as CartSchema } from "/imports/collections/schemas"; import forEachPromise from "/imports/utils/forEachPromise"; import updateCartFulfillmentGroups from "../util/updateCartFulfillmentGroups"; +import xformCartGroupToCommonOrder from "../util/xformCartGroupToCommonOrder"; import { cartTransforms } from "../registration"; const logCtx = { name: "cart", file: "transformAndValidateCart" }; @@ -28,7 +29,7 @@ export default async function transformAndValidateCart(context, cart) { async function getCommonOrders({ shouldRebuild = false } = {}) { if (!commonOrders || shouldRebuild) { commonOrders = await Promise.all(cart.shipping.map((group) => - context.queries.getCommonOrderForCartGroup(context, { cart, fulfillmentGroup: group }))); + xformCartGroupToCommonOrder(cart, group, context))); } return commonOrders; } diff --git a/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js b/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js index 8dff83fc30a..5bc8577ce1d 100644 --- a/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js +++ b/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js @@ -1,16 +1,10 @@ -import { toFixed } from "accounting-js"; import SimpleSchema from "simpl-schema"; import ReactionError from "@reactioncommerce/reaction-error"; +import xformCartGroupToCommonOrder from "../util/xformCartGroupToCommonOrder"; const inputSchema = new SimpleSchema({ - cart: { - type: Object, - blackbox: true - }, - fulfillmentGroup: { - type: Object, - blackbox: true - } + cartId: String, + fulfillmentGroupId: String }); /** @@ -22,161 +16,30 @@ const inputSchema = new SimpleSchema({ * a CommonOrder style object * @param {Object} context - an object containing the per-request state * @param {Object} input - request parameters - * @param {String} input.cart - cart object - * @param {String} input.fulfillmentGroup - fulfillmentGroup object + * @param {String} input.cartId - cart ID to create CommonOrder from + * @param {String} input.fulfillmentGroupId - fulfillment group ID to create CommonOrder from * @returns {Promise|undefined} - A CommonOrder document */ export default async function getCommonOrderForCartGroup(context, input = {}) { inputSchema.validate(input); const { collections } = context; + const { Cart } = collections; const { - cart, - fulfillmentGroup + cartId, + fulfillmentGroupId } = input; - if (!cart) { - throw new ReactionError("invalid-param", "You must provide a cart"); - } - - if (!fulfillmentGroup) { - throw new ReactionError("invalid-param", "You must provide a group"); + if (!cartId) { + throw new ReactionError("invalid-param", "You must provide a cart ID"); } - const { accountId, currencyCode } = cart; - - let items = fulfillmentGroup.itemIds.map((itemId) => cart.items.find((item) => item._id === itemId)); - items = items.filter((item) => !!item); // remove nulls - - // Get productId's from items, and then use ID's to get full Catalog product - // to provide missing pricing information - const catalogItemIds = items.map((item) => item.productId); - const catalogItemsInGroup = await collections.Catalog.find({ "product.productId": { $in: catalogItemIds } }).toArray(); - - // We also need to add `subtotal` on each item, based on the current price of that item in - // the catalog. `getFulfillmentGroupTaxes` uses subtotal prop to calculate the tax. - // ** If you add any data here, be sure to add the same data to the matching xformOrderGroupToCommonOrder xform - items = await Promise.all(items.map(async (item) => { - let itemPrice = item.price && item.price.amount; - - // Get the catalog version of the item to get pricing data from it - if (catalogItemsInGroup) { - const catalogProduct = catalogItemsInGroup.find((catalogItem) => catalogItem.product.productId === item.productId); - if (catalogProduct) { - const { variant: catalogVariant } = context.queries.findVariantInCatalogProduct(catalogProduct.product, item.variantId); - if (catalogVariant === null) { - throw new ReactionError("not-found", "Catalog variant not found"); - } - const variantPrice = await context.queries.getVariantPrice(context, catalogVariant, currencyCode); - if (variantPrice === null) { - throw new ReactionError("not-found", "Variant price not found"); - } - itemPrice = variantPrice.price; - } - } - - return { - _id: item._id, - attributes: item.attributes, - isTaxable: item.isTaxable, - parcel: item.parcel, - price: { - amount: itemPrice, - currencyCode - }, - productId: item.productId, - productVendor: item.productVendor, - quantity: item.quantity, - shopId: item.shopId, - subtotal: { - amount: +toFixed(itemPrice * item.quantity, 3), - currencyCode - }, - taxCode: item.taxCode, - title: item.title, - variantId: item.variantId, - variantTitle: item.variantTitle - }; - })); - - const { address, shipmentMethod, shopId, type: fulfillmentType } = fulfillmentGroup; - const shop = await collections.Shops.findOne({ _id: shopId }); - - let fulfillmentPrices = { - handling: null, - shipping: null, - total: null - }; - let fulfillmentMethodId; - - if (shipmentMethod) { - fulfillmentPrices = { - handling: { - amount: shipmentMethod.handling || 0, - currencyCode - }, - shipping: { - amount: shipmentMethod.rate, - currencyCode - }, - total: { - amount: +toFixed((shipmentMethod.handling || 0) + shipmentMethod.rate, 3), - currencyCode - } - }; - - fulfillmentMethodId = shipmentMethod._id; + if (!fulfillmentGroupId) { + throw new ReactionError("invalid-param", "You must provide a fulfillment group ID"); } - // TODO: In the future, we should update this with a discounts update - // Discounts are stored as the sum of all discounts, per cart. This will need to be updated when we refactor discounts to go by group. - const discountTotal = cart.discount || 0; - const groupItemTotal = +toFixed(items.reduce((sum, item) => (sum + item.subtotal.amount), 0), 3); - // orderItemTotal will need to be updated to be the actual total when we eventually have more than one group available - const orderItemTotal = groupItemTotal; - - const totals = { - groupDiscountTotal: { - amount: discountTotal, - currencyCode: cart.currencyCode - }, - groupItemTotal: { - amount: groupItemTotal, - currencyCode: cart.currencyCode - }, - groupTotal: { - amount: +toFixed(groupItemTotal - discountTotal, 3), - currencyCode: cart.currencyCode - }, - orderDiscountTotal: { - amount: discountTotal, - currencyCode: cart.currencyCode - }, - orderItemTotal: { - amount: orderItemTotal, - currencyCode: cart.currencyCode - }, - orderTotal: { - amount: +toFixed(orderItemTotal - discountTotal, 3), - currencyCode: cart.currencyCode - } - }; - + const cart = await Cart.findOne({ _id: cartId }); + const group = cart.shipping.find((grp) => grp._id === fulfillmentGroupId); - return { - accountId, - billingAddress: null, - cartId: cart._id, - currencyCode: cart.currencyCode, - fulfillmentMethodId, - fulfillmentPrices, - fulfillmentType, - items, - orderId: null, - originAddress: (shop && Array.isArray(shop.addressBook) && shop.addressBook[0]) || null, - shippingAddress: address || null, - shopId, - sourceType: "cart", - totals - }; + return xformCartGroupToCommonOrder(cart, group, context); } diff --git a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js index f97de709020..1ef318b7c31 100644 --- a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js +++ b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js @@ -1,3 +1,5 @@ +import { decodeCartOpaqueId, decodeFulfillmentGroupOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/cart"; + /** * @name Query.getCommonOrderForCartGroup * @method @@ -5,16 +7,16 @@ * @summary Get a CommonOrder object for a cart fulfillment group * @param {Object} parentResult - unused * @param {ConnectionArgs} args - An object of all arguments that were sent by the client - * @param {String} args.cart - cart object - * @param {String} args.fulfillmentGroup - group object + * @param {String} args.cartId - cart ID to create CommonOrder from + * @param {String} args.fulfillmentGroupId - fulfillment group ID to create CommonOrder from * @param {Object} context - An object containing the per-request state * @returns {Promise|undefined} A CommonOrder object */ export default async function getCommonOrderForCartGroup(parentResult, args, context) { - const { cart, fulfillmentGroup } = args; + const { cartId, fulfillmentGroupId } = args; return context.queries.getCommonOrderForCartGroup(context, { - cart, - fulfillmentGroup + cartId: decodeCartOpaqueId(cartId), + fulfillmentGroupId: decodeFulfillmentGroupOpaqueId(fulfillmentGroupId) }); } diff --git a/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql b/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql index 677cbe39f7e..a10652dccf3 100644 --- a/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql +++ b/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql @@ -230,6 +230,7 @@ type CartItem implements Node { variantTitle: String } +"A normalized order object used by `cart` and `order`" type CommonOrder { "Account that owns the cart" accountId: ID! @@ -270,9 +271,11 @@ type CommonOrder { "The source of the data used to create this CommonOrder" sourceType: CommonOrderSource, + "Total pricing information for the CommonOrder" totals: CommonOrderTotals } +"A single item in a CommonOrder. The item contains information about an intended purchase." type CommonOrderItem { "The cart item ID" _id: ID! @@ -320,6 +323,7 @@ type CommonOrderItem { variantTitle: String } +"Pricing information for the CommonOrder" type CommonOrderTotals { "Discount total for the group" groupDiscountTotal: Money @@ -340,6 +344,7 @@ type CommonOrderTotals { orderTotal: Money } +"Pricing information for a fulfillment group" type FulfillmentPrices { "Handling price for the fulfillment method" handling: Money diff --git a/imports/plugins/core/cart/server/no-meteor/util/xformCartGroupToCommonOrder.js b/imports/plugins/core/cart/server/no-meteor/util/xformCartGroupToCommonOrder.js new file mode 100644 index 00000000000..0dac3d39bbd --- /dev/null +++ b/imports/plugins/core/cart/server/no-meteor/util/xformCartGroupToCommonOrder.js @@ -0,0 +1,149 @@ +import { toFixed } from "accounting-js"; +import ReactionError from "@reactioncommerce/reaction-error"; + + +/** + * @param {Object} cart A cart + * @param {Object} group The cart fulfillment group + * @param {Object} context App context + * @returns {Object} Valid CommonOrder from a cart group + */ +export default async function xformCartGroupToCommonOrder(cart, group, context) { + const { collections } = context; + const { accountId, currencyCode } = cart; + + let items = group.itemIds.map((itemId) => cart.items.find((item) => item._id === itemId)); + items = items.filter((item) => !!item); // remove nulls + + // Get productId's from items, and then use ID's to get full Catalog product + // to provide missing pricing information + const catalogItemIds = items.map((item) => item.productId); + const catalogItemsInGroup = await collections.Catalog.find({ "product.productId": { $in: catalogItemIds } }).toArray(); + + // We also need to add `subtotal` on each item, based on the current price of that item in + // the catalog. `getFulfillmentGroupTaxes` uses subtotal prop to calculate the tax. + // ** If you add any data here, be sure to add the same data to the matching xformOrderGroupToCommonOrder xform + items = await Promise.all(items.map(async (item) => { + let itemPrice = item.price && item.price.amount; + + // Get the catalog version of the item to get pricing data from it + if (catalogItemsInGroup) { + const catalogProduct = catalogItemsInGroup.find((catalogItem) => catalogItem.product.productId === item.productId); + if (catalogProduct) { + const { variant: catalogVariant } = context.queries.findVariantInCatalogProduct(catalogProduct.product, item.variantId); + if (catalogVariant === null) { + throw new ReactionError("not-found", "Catalog variant not found"); + } + const variantPrice = await context.queries.getVariantPrice(context, catalogVariant, currencyCode); + if (variantPrice === null) { + throw new ReactionError("not-found", "Variant price not found"); + } + itemPrice = variantPrice.price; + } + } + + return { + _id: item._id, + attributes: item.attributes, + isTaxable: item.isTaxable, + parcel: item.parcel, + price: { + amount: itemPrice, + currencyCode + }, + productId: item.productId, + productVendor: item.productVendor, + quantity: item.quantity, + shopId: item.shopId, + subtotal: { + amount: +toFixed(itemPrice * item.quantity, 3), + currencyCode + }, + taxCode: item.taxCode, + title: item.title, + variantId: item.variantId, + variantTitle: item.variantTitle + }; + })); + + const { address, shipmentMethod, shopId, type: fulfillmentType } = group; + const shop = await collections.Shops.findOne({ _id: shopId }); + + let fulfillmentPrices = { + handling: null, + shipping: null, + total: null + }; + let fulfillmentMethodId; + + if (shipmentMethod) { + fulfillmentPrices = { + handling: { + amount: shipmentMethod.handling || 0, + currencyCode + }, + shipping: { + amount: shipmentMethod.rate, + currencyCode + }, + total: { + amount: +toFixed((shipmentMethod.handling || 0) + shipmentMethod.rate, 3), + currencyCode + } + }; + + fulfillmentMethodId = shipmentMethod._id; + } + + // TODO: In the future, we should update this with a discounts update + // Discounts are stored as the sum of all discounts, per cart. This will need to be updated when we refactor discounts to go by group. + const discountTotal = cart.discount || 0; + const groupItemTotal = +toFixed(items.reduce((sum, item) => (sum + item.subtotal.amount), 0), 3); + // orderItemTotal will need to be updated to be the actual total when we eventually have more than one group available + const orderItemTotal = groupItemTotal; + + const totals = { + groupDiscountTotal: { + amount: discountTotal, + currencyCode: cart.currencyCode + }, + groupItemTotal: { + amount: groupItemTotal, + currencyCode: cart.currencyCode + }, + groupTotal: { + amount: +toFixed(groupItemTotal - discountTotal, 3), + currencyCode: cart.currencyCode + }, + orderDiscountTotal: { + amount: discountTotal, + currencyCode: cart.currencyCode + }, + orderItemTotal: { + amount: orderItemTotal, + currencyCode: cart.currencyCode + }, + orderTotal: { + amount: +toFixed(orderItemTotal - discountTotal, 3), + currencyCode: cart.currencyCode + } + }; + + + return { + accountId, + billingAddress: null, + cartId: cart._id, + currencyCode: cart.currencyCode, + fulfillmentMethodId, + fulfillmentPrices, + fulfillmentType, + items, + orderId: null, + originAddress: (shop && Array.isArray(shop.addressBook) && shop.addressBook[0]) || null, + shippingAddress: address || null, + shopId, + sourceType: "cart", + totals + }; +} From ca495053fdee0606ac1ae18285c507a248aa9549 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 22:07:15 -0700 Subject: [PATCH 13/17] chore: update package-lock.json Signed-off-by: Erik Kieckhafer --- package-lock.json | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index e16eb85c798..8ee79b84310 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3209,7 +3209,7 @@ }, "@types/accepts": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "resolved": "http://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", "requires": { "@types/node": "*" @@ -11689,7 +11689,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -11697,8 +11696,7 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", @@ -11802,8 +11800,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", From 4eb6cc30787a7e179f8856302a78bebfe4373858 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Mon, 30 Sep 2019 22:25:56 -0700 Subject: [PATCH 14/17] tests:add new code to tests Signed-off-by: Erik Kieckhafer --- .../mutations/updateFulfillmentOptionsForGroup.test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.test.js b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.test.js index 019360ad029..043aae57cdb 100644 --- a/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.test.js +++ b/imports/node-app/core-services/shipping/mutations/updateFulfillmentOptionsForGroup.test.js @@ -26,10 +26,12 @@ jest.mock("../util/getCartById", () => jest.fn().mockImplementation(() => Promis const fakeCart = Factory.Cart.makeOne(); const fakeQuote = Factory.ShipmentQuote.makeOne(); const mockGetFulfillmentMethodsWithQuotes = jest.fn().mockName("getFulfillmentMethodsWithQuotes"); +const mockGetCommonOrderForCartGroup = jest.fn().mockName("getCommonOrderForCartGroup"); beforeAll(() => { mockContext.queries = { - getFulfillmentMethodsWithQuotes: mockGetFulfillmentMethodsWithQuotes + getFulfillmentMethodsWithQuotes: mockGetFulfillmentMethodsWithQuotes, + getCommonOrderForCartGroup: mockGetCommonOrderForCartGroup }; if (!mockContext.mutations.saveCart) { mockContext.mutations.saveCart = jest.fn().mockName("context.mutations.saveCart").mockImplementation(async (_, cart) => cart); From 377174b2264ca770834177c71a26666861aacdf4 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Tue, 1 Oct 2019 10:39:34 -0700 Subject: [PATCH 15/17] refactor: remove query from resolver Signed-off-by: Erik Kieckhafer --- .../Query/getCommonOrderForCartGroup.js | 22 ------------------- .../server/no-meteor/resolvers/Query/index.js | 4 +--- 2 files changed, 1 insertion(+), 25 deletions(-) delete mode 100644 imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js diff --git a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js deleted file mode 100644 index 1ef318b7c31..00000000000 --- a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/getCommonOrderForCartGroup.js +++ /dev/null @@ -1,22 +0,0 @@ -import { decodeCartOpaqueId, decodeFulfillmentGroupOpaqueId } from "@reactioncommerce/reaction-graphql-xforms/cart"; - -/** - * @name Query.getCommonOrderForCartGroup - * @method - * @memberof Cart/GraphQL - * @summary Get a CommonOrder object for a cart fulfillment group - * @param {Object} parentResult - unused - * @param {ConnectionArgs} args - An object of all arguments that were sent by the client - * @param {String} args.cartId - cart ID to create CommonOrder from - * @param {String} args.fulfillmentGroupId - fulfillment group ID to create CommonOrder from - * @param {Object} context - An object containing the per-request state - * @returns {Promise|undefined} A CommonOrder object - */ -export default async function getCommonOrderForCartGroup(parentResult, args, context) { - const { cartId, fulfillmentGroupId } = args; - - return context.queries.getCommonOrderForCartGroup(context, { - cartId: decodeCartOpaqueId(cartId), - fulfillmentGroupId: decodeFulfillmentGroupOpaqueId(fulfillmentGroupId) - }); -} diff --git a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/index.js b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/index.js index e4b4d7ab327..dc89dc7e423 100644 --- a/imports/plugins/core/cart/server/no-meteor/resolvers/Query/index.js +++ b/imports/plugins/core/cart/server/no-meteor/resolvers/Query/index.js @@ -1,9 +1,7 @@ import accountCartByAccountId from "./accountCartByAccountId"; import anonymousCartByCartId from "./anonymousCartByCartId"; -import getCommonOrderForCartGroup from "./getCommonOrderForCartGroup"; export default { accountCartByAccountId, - anonymousCartByCartId, - getCommonOrderForCartGroup + anonymousCartByCartId }; From ba89486e2dc342ce65ec1c5bc384bd0c188dd540 Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Tue, 1 Oct 2019 10:39:46 -0700 Subject: [PATCH 16/17] refactor: update error messaging Signed-off-by: Erik Kieckhafer --- .../no-meteor/queries/getCommonOrderForCartGroup.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js b/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js index 5bc8577ce1d..6b961f6ddc8 100644 --- a/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js +++ b/imports/plugins/core/cart/server/no-meteor/queries/getCommonOrderForCartGroup.js @@ -30,16 +30,17 @@ export default async function getCommonOrderForCartGroup(context, input = {}) { fulfillmentGroupId } = input; - if (!cartId) { - throw new ReactionError("invalid-param", "You must provide a cart ID"); - } + const cart = await Cart.findOne({ _id: cartId }); - if (!fulfillmentGroupId) { - throw new ReactionError("invalid-param", "You must provide a fulfillment group ID"); + if (!cart) { + throw new ReactionError("not-found", "Cart not found"); } - const cart = await Cart.findOne({ _id: cartId }); const group = cart.shipping.find((grp) => grp._id === fulfillmentGroupId); + if (!group) { + throw new ReactionError("not-found", "Group not found"); + } + return xformCartGroupToCommonOrder(cart, group, context); } From 3b17964b4052aa5464263afe67425b18337858ea Mon Sep 17 00:00:00 2001 From: Erik Kieckhafer Date: Tue, 1 Oct 2019 10:48:28 -0700 Subject: [PATCH 17/17] refactor: remove unused CommonOrder schema Signed-off-by: Erik Kieckhafer --- .../server/no-meteor/schemas/cart.graphql | 144 ------------------ 1 file changed, 144 deletions(-) diff --git a/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql b/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql index a10652dccf3..df01ad70a9d 100644 --- a/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql +++ b/imports/plugins/core/cart/server/no-meteor/schemas/cart.graphql @@ -76,15 +76,6 @@ enum CartItemsSortByField { addedAt } -"The source of data used to create the CommonOrder" -enum CommonOrderSource { - "A cart" - cart - - "An order" - order -} - """ Wraps a list of `CartItem`s, providing pagination cursors and information. @@ -230,132 +221,6 @@ type CartItem implements Node { variantTitle: String } -"A normalized order object used by `cart` and `order`" -type CommonOrder { - "Account that owns the cart" - accountId: ID! - - "The billing address for this CommonOrder" - billingAddress: Address - - "The cart ID." - cartId: ID!, - - "Code for the currency this cart uses" - currencyCode: String! - - "The fulfillment method ID from the cart" - fulfillmentMethodId: ID! - - "Prices for handling, shipping, and total for this fulfillment method" - fulfillmentPrices: FulfillmentPrices - - "Fulfillment method type" - fulfillmentType: FulfillmentType - - "Items in this group" - items: [CommonOrderItem] - - "The order ID" - orderId: ID - - "Address of shop, or where shipment originates" - originAddress: Address - - "Shipping address for this CommonOrder" - shippingAddress: Address - - "The shop ID" - shopId: ID - - "The source of the data used to create this CommonOrder" - sourceType: CommonOrderSource, - - "Total pricing information for the CommonOrder" - totals: CommonOrderTotals -} - -"A single item in a CommonOrder. The item contains information about an intended purchase." -type CommonOrderItem { - "The cart item ID" - _id: ID! - - """ - FUTURE. Additional attributes of the chosen item. For example, if this item is for a product, socks, where "blue" and "small" - options were chosen for some configurable attributes, then "color:blue" and "size:small" will be indicated here. - """ - attributes: [CartItemAttribute] - - "Is this item taxable?" - isTaxable: Boolean - - "Packing information such as item weight, height, length, and depth. Used for calculating shipping rates." - parcel: ShippingParcel - - "The current price of the item" - price: Money! - - "Product ID this item was created from" - productId: ID - - "The product vendor" - productVendor: String - - "The quantity of this item that has been added to the cart. This must be a positive integer. Remove this `CartItem` from it's associated cart if you want `0` of this item." - quantity: Int! - - "The shop id" - shopId: ID - - "The current price of the item multiplied by the quantity" - subtotal: Money! - - "Taxcode to apply to this item" - taxCode: String! - - "A title for use in cart/orders that conveys the selected product's title + chosen options" - title: String! - - "Variant ID this item was created from" - variantId: ID - - "The selected variant title" - variantTitle: String -} - -"Pricing information for the CommonOrder" -type CommonOrderTotals { - "Discount total for the group" - groupDiscountTotal: Money - - "Item total for the group" - groupItemTotal: Money - - "Group total" - groupTotal: Money - - "Discount total for the order" - orderDiscountTotal: Money - - "Item total for the order" - orderItemTotal: Money - - "Total price for the order" - orderTotal: Money -} - -"Pricing information for a fulfillment group" -type FulfillmentPrices { - "Handling price for the fulfillment method" - handling: Money - - "Shipping price for the fulfillment method" - shipping: Money - - "Total price for the fulfillment method" - total: Money -} - "Supported cart reconciliation modes" enum CartReconciliationMode { "Delete the anonymous cart and use the account cart." @@ -399,15 +264,6 @@ extend type Query { "Shop that owns the cart" shopId: ID! ): Cart - - "Get a `CommonOrder` style object for a cart group" - getCommonOrderForCartGroup( - "The cart ID." - cartId: ID! - - "The fulfillment group ID." - fulfillmentGroupId: ID! - ): CommonOrder } ####################