fix: region sync
This commit is contained in:
@@ -1,13 +1,13 @@
|
|||||||
let ignore = [`**/dist`]
|
let ignore = [`**/dist`];
|
||||||
|
|
||||||
// Jest needs to compile this code, but generally we don't want this copied
|
// Jest needs to compile this code, but generally we don't want this copied
|
||||||
// to output folders
|
// to output folders
|
||||||
if (process.env.NODE_ENV !== `test`) {
|
if (process.env.NODE_ENV !== `test`) {
|
||||||
ignore.push(`**/__tests__`)
|
ignore.push(`**/__tests__`);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
sourceMaps: true,
|
sourceMaps: true,
|
||||||
presets: ["babel-preset-medusa-package"],
|
presets: ["babel-preset-medusa-package"],
|
||||||
ignore,
|
ignore,
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
export const MockEntry = {
|
|
||||||
update: jest.fn(() => Promise.resolve(MockEntry)),
|
|
||||||
publish: jest.fn(() => Promise.resolve({ sys: { id: "test" } })),
|
|
||||||
}
|
|
||||||
|
|
||||||
export const MockAsset = {
|
|
||||||
processForAllLocales: jest.fn(() => Promise.resolve(MockAsset)),
|
|
||||||
publish: jest.fn(() => Promise.resolve({ sys: { id: "test" } })),
|
|
||||||
}
|
|
||||||
|
|
||||||
export const MockEnvironment = {
|
|
||||||
createAsset: jest.fn((d) => Promise.resolve(MockAsset)),
|
|
||||||
createEntryWithId: jest.fn(() => Promise.resolve(MockEntry)),
|
|
||||||
getEntry: jest.fn(() => Promise.resolve(MockEntry)),
|
|
||||||
getContentType: jest.fn(() => Promise.resolve({})),
|
|
||||||
}
|
|
||||||
|
|
||||||
export const MockSpace = {
|
|
||||||
getEnvironment: jest.fn(() => Promise.resolve(MockEnvironment)),
|
|
||||||
}
|
|
||||||
|
|
||||||
export const MockClient = {
|
|
||||||
getSpace: jest.fn(() => Promise.resolve(MockSpace)),
|
|
||||||
}
|
|
||||||
|
|
||||||
export const createClient = jest.fn(() => MockClient)
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
import ContentfulService from "../contentful"
|
|
||||||
import { MockEnvironment } from "../../../__mocks__/contentful-management"
|
|
||||||
|
|
||||||
jest.mock("contentful-management")
|
|
||||||
|
|
||||||
describe("contentfulService", () => {
|
|
||||||
const redisClient = {
|
|
||||||
set: jest.fn(),
|
|
||||||
get: jest.fn(),
|
|
||||||
}
|
|
||||||
|
|
||||||
const ProductVariantService = {
|
|
||||||
retrieve: jest.fn(() =>
|
|
||||||
Promise.resolve({
|
|
||||||
id: "variant_medusa",
|
|
||||||
title: "testvar",
|
|
||||||
})
|
|
||||||
),
|
|
||||||
}
|
|
||||||
|
|
||||||
const ProductService = {
|
|
||||||
retrieve: jest.fn(() =>
|
|
||||||
Promise.resolve({
|
|
||||||
id: "product_medusa",
|
|
||||||
title: "test",
|
|
||||||
subtitle: "subtest",
|
|
||||||
description: "something long",
|
|
||||||
variants: [
|
|
||||||
{
|
|
||||||
id: "variant_medusa",
|
|
||||||
title: "testvar",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
),
|
|
||||||
}
|
|
||||||
|
|
||||||
describe("createProductInContentful", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
jest.clearAllMocks()
|
|
||||||
})
|
|
||||||
|
|
||||||
it("resolves", async () => {
|
|
||||||
const contentfulService = new ContentfulService(
|
|
||||||
{
|
|
||||||
redisClient,
|
|
||||||
productVariantService: ProductVariantService,
|
|
||||||
productService: ProductService,
|
|
||||||
},
|
|
||||||
{}
|
|
||||||
)
|
|
||||||
|
|
||||||
await contentfulService.updateProductInContentful({
|
|
||||||
id: "testId",
|
|
||||||
fields: ["title"],
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
describe("createImageAssets", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
jest.clearAllMocks()
|
|
||||||
})
|
|
||||||
|
|
||||||
it("successfully creates assets", async () => {
|
|
||||||
const contentfulService = new ContentfulService(
|
|
||||||
{
|
|
||||||
redisClient,
|
|
||||||
},
|
|
||||||
{}
|
|
||||||
)
|
|
||||||
|
|
||||||
await contentfulService.createImageAssets({
|
|
||||||
title: "testprod",
|
|
||||||
images: [{ url: "test123" }],
|
|
||||||
})
|
|
||||||
|
|
||||||
expect(MockEnvironment.createAsset).toHaveBeenCalledTimes(1)
|
|
||||||
expect(MockEnvironment.createAsset).toHaveBeenCalledWith({
|
|
||||||
fields: {
|
|
||||||
title: {
|
|
||||||
"en-US": `testprod - 0`,
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
"en-US": "",
|
|
||||||
},
|
|
||||||
file: {
|
|
||||||
"en-US": {
|
|
||||||
contentType: "image/xyz",
|
|
||||||
fileName: "test123",
|
|
||||||
upload: "test123",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -6,7 +6,13 @@ const IGNORE_THRESHOLD = 2 // seconds
|
|||||||
|
|
||||||
class ContentfulService extends BaseService {
|
class ContentfulService extends BaseService {
|
||||||
constructor(
|
constructor(
|
||||||
{ productService, redisClient, productVariantService, eventBusService },
|
{
|
||||||
|
regionService,
|
||||||
|
productService,
|
||||||
|
redisClient,
|
||||||
|
productVariantService,
|
||||||
|
eventBusService,
|
||||||
|
},
|
||||||
options
|
options
|
||||||
) {
|
) {
|
||||||
super()
|
super()
|
||||||
@@ -15,6 +21,8 @@ class ContentfulService extends BaseService {
|
|||||||
|
|
||||||
this.productVariantService_ = productVariantService
|
this.productVariantService_ = productVariantService
|
||||||
|
|
||||||
|
this.regionService_ = regionService
|
||||||
|
|
||||||
this.eventBus_ = eventBusService
|
this.eventBus_ = eventBusService
|
||||||
|
|
||||||
this.options_ = options
|
this.options_ = options
|
||||||
@@ -306,28 +314,31 @@ class ContentfulService extends BaseService {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const r = await this.regionService_.retrieve(data.id, {
|
const r = await this.regionService_.retrieve(region.id, {
|
||||||
relations: ["countries", "payment_providers", "fulfillment_providers"],
|
relations: ["countries", "payment_providers", "fulfillment_providers"],
|
||||||
})
|
})
|
||||||
|
|
||||||
const environment = await this.getContentfulEnvironment_()
|
const environment = await this.getContentfulEnvironment_()
|
||||||
|
|
||||||
const fields = {
|
const fields = {
|
||||||
|
[this.getCustomField("medusaId", "product")]: {
|
||||||
|
"en-US": r.id,
|
||||||
|
},
|
||||||
[this.getCustomField("name", "region")]: {
|
[this.getCustomField("name", "region")]: {
|
||||||
"en-US": r.name,
|
"en-US": r.name,
|
||||||
},
|
},
|
||||||
[this.getCustomField("countries", "region")]: {
|
[this.getCustomField("countries", "region")]: {
|
||||||
"en-US": r.countries,
|
"en-US": r.countries,
|
||||||
},
|
},
|
||||||
[this.getCustomField("payment_providers", "region")]: {
|
[this.getCustomField("paymentProviders", "region")]: {
|
||||||
"en-US": r.payment_providers,
|
"en-US": r.payment_providers,
|
||||||
},
|
},
|
||||||
[this.getCustomField("fulfillment_providers", "region")]: {
|
[this.getCustomField("fulfillmentProviders", "region")]: {
|
||||||
"en-US": r.fulfillment_providers,
|
"en-US": r.fulfillment_providers,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await environment.createEntryWithId("region", p.id, {
|
const result = await environment.createEntryWithId("region", r.id, {
|
||||||
fields,
|
fields,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -385,10 +396,10 @@ class ContentfulService extends BaseService {
|
|||||||
[this.getCustomField("countries", "region")]: {
|
[this.getCustomField("countries", "region")]: {
|
||||||
"en-US": r.countries,
|
"en-US": r.countries,
|
||||||
},
|
},
|
||||||
[this.getCustomField("payment_providers", "region")]: {
|
[this.getCustomField("paymentProviders", "region")]: {
|
||||||
"en-US": r.payment_providers,
|
"en-US": r.payment_providers,
|
||||||
},
|
},
|
||||||
[this.getCustomField("fulfillment_providers", "region")]: {
|
[this.getCustomField("fulfillmentProviders", "region")]: {
|
||||||
"en-US": r.fulfillment_providers,
|
"en-US": r.fulfillment_providers,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,14 @@ class ContentfulSubscriber {
|
|||||||
this.contentfulService_ = contentfulService
|
this.contentfulService_ = contentfulService
|
||||||
this.eventBus_ = eventBusService
|
this.eventBus_ = eventBusService
|
||||||
|
|
||||||
|
this.eventBus_.subscribe("region.created", async (data) => {
|
||||||
|
await this.contentfulService_.createRegionInContentful(data)
|
||||||
|
})
|
||||||
|
|
||||||
|
this.eventBus_.subscribe("region.updated", async (data) => {
|
||||||
|
await this.contentfulService_.updateRegionInContentful(data)
|
||||||
|
})
|
||||||
|
|
||||||
this.eventBus_.subscribe("product-variant.updated", async (data) => {
|
this.eventBus_.subscribe("product-variant.updated", async (data) => {
|
||||||
await this.contentfulService_.updateProductVariantInContentful(data)
|
await this.contentfulService_.updateProductVariantInContentful(data)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,6 +1,14 @@
|
|||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
import RegionService from "../region"
|
import RegionService from "../region"
|
||||||
|
|
||||||
|
const eventBusService = {
|
||||||
|
emit: jest.fn(),
|
||||||
|
withTransaction: function() {
|
||||||
|
return this
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
describe("RegionService", () => {
|
describe("RegionService", () => {
|
||||||
describe("create", () => {
|
describe("create", () => {
|
||||||
const regionRepository = MockRepository({})
|
const regionRepository = MockRepository({})
|
||||||
@@ -58,6 +66,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
fulfillmentProviderRepository: fpRepository,
|
fulfillmentProviderRepository: fpRepository,
|
||||||
paymentProviderRepository: ppRepository,
|
paymentProviderRepository: ppRepository,
|
||||||
currencyRepository,
|
currencyRepository,
|
||||||
@@ -168,6 +177,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
regionRepository,
|
regionRepository,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -237,6 +247,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
fulfillmentProviderRepository: fpRepository,
|
fulfillmentProviderRepository: fpRepository,
|
||||||
paymentProviderRepository: ppRepository,
|
paymentProviderRepository: ppRepository,
|
||||||
regionRepository,
|
regionRepository,
|
||||||
@@ -335,6 +346,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
fulfillmentProviderRepository: fpRepository,
|
fulfillmentProviderRepository: fpRepository,
|
||||||
paymentProviderRepository: ppRepository,
|
paymentProviderRepository: ppRepository,
|
||||||
regionRepository,
|
regionRepository,
|
||||||
@@ -380,6 +392,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
regionRepository,
|
regionRepository,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -429,6 +442,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
regionRepository,
|
regionRepository,
|
||||||
countryRepository,
|
countryRepository,
|
||||||
})
|
})
|
||||||
@@ -473,6 +487,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
regionRepository,
|
regionRepository,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -522,6 +537,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
fulfillmentProviderRepository: fpRepository,
|
fulfillmentProviderRepository: fpRepository,
|
||||||
paymentProviderRepository: ppRepository,
|
paymentProviderRepository: ppRepository,
|
||||||
regionRepository,
|
regionRepository,
|
||||||
@@ -582,6 +598,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
fulfillmentProviderRepository: fpRepository,
|
fulfillmentProviderRepository: fpRepository,
|
||||||
regionRepository,
|
regionRepository,
|
||||||
})
|
})
|
||||||
@@ -631,6 +648,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
regionRepository,
|
regionRepository,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -665,6 +683,7 @@ describe("RegionService", () => {
|
|||||||
|
|
||||||
const regionService = new RegionService({
|
const regionService = new RegionService({
|
||||||
manager: MockManager,
|
manager: MockManager,
|
||||||
|
eventBusService,
|
||||||
regionRepository,
|
regionRepository,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user