feat(medusa,brightpearl,segment,webshipper): claims (#163)

* chore: create tests

* chore: models

* fix: passing initial tests

* test: adds integration test

* test: clean up integration implementation

* fix: claims

* fix: brightpearl + webshipper

* tests: passing

* fix: update claim items

* fix: adds gitignore

* fix: pr comments

* fix: single migration

* fix(medusa-plugin-segment): adds item claimed event to segment
This commit is contained in:
Sebastian Rindom authored and GitHub committed 2021-02-03 09:49:12 +01:00
1 parent 0e0dfea571
commit 690d339667
60 files changed
+9429 -189

No files matched your search

+30
View File
@@ -0,0 +1,30 @@
const path = require("path");
const { spawn } = require("child_process");
const { setPort } = require("./use-api");
module.exports = ({ cwd }) => {
const serverPath = path.join(__dirname, "test-server.js");
return new Promise((resolve, reject) => {
const medusaProcess = spawn("node", [path.resolve(serverPath)], {
cwd,
env: {
...process.env,
NODE_ENV: "development",
JWT_SECRET: "test",
COOKIE_SECRET: "test",
},
stdio: ["ignore", "ignore", "inherit", "ipc"],
});
medusaProcess.on("uncaughtException", (err) => {
medusaProcess.kill();
});
medusaProcess.on("message", (port) => {
setPort(port);
resolve(medusaProcess);
});
});
};
+32
View File
@@ -0,0 +1,32 @@
const path = require("path");
const express = require("express");
const getPort = require("get-port");
const loaders = require("@medusajs/medusa/dist/loaders").default;
const initialize = async () => {
const app = express();
const { dbConnection } = await loaders({
directory: path.resolve(process.cwd()),
expressApp: app,
});
const PORT = await getPort();
return {
db: dbConnection,
app,
port: PORT,
};
};
const setup = async () => {
const { app, port } = await initialize();
app.listen(port, (err) => {
process.send(port);
});
};
setup();
+21
View File
@@ -0,0 +1,21 @@
const axios = require("axios").default;
const ServerTestUtil = {
port_: null,
client_: null,
setPort: function (port) {
this.client_ = axios.create({ baseURL: `http://localhost:${port}` });
},
};
const instance = ServerTestUtil;
module.exports = {
setPort: function (port) {
instance.setPort(port);
},
useApi: function () {
return instance.client_;
},
};
+73
View File
@@ -0,0 +1,73 @@
const { dropDatabase, createDatabase } = require("pg-god");
const { createConnection } = require("typeorm");
const path = require("path");
const DbTestUtil = {
db_: null,
setDb: function (connection) {
this.db_ = connection;
},
clear: function () {
return this.db_.synchronize(true);
},
shutdown: async function () {
await this.db_.close();
return dropDatabase({ databaseName });
},
};
const instance = DbTestUtil;
module.exports = {
initDb: async function ({ cwd }) {
const migrationDir = path.resolve(
path.join(
cwd,
`node_modules`,
`@medusajs`,
`medusa`,
`dist`,
`migrations`
)
);
const databaseName = "medusa-integration";
await createDatabase({ databaseName });
const connection = await createConnection({
type: "postgres",
url: "postgres://localhost/medusa-integration",
migrations: [`${migrationDir}/*.js`],
});
await connection.runMigrations();
await connection.close();
const modelsLoader = require(path.join(
cwd,
`node_modules`,
`@medusajs`,
`medusa`,
`dist`,
`loaders`,
`models`
)).default;
const entities = modelsLoader({}, { register: false });
const dbConnection = await createConnection({
type: "postgres",
url: "postgres://localhost/medusa-integration",
entities,
});
instance.setDb(dbConnection);
return dbConnection;
},
useDb: function () {
return instance;
},
};
+41
View File
@@ -0,0 +1,41 @@
const ServerTestUtil = {
server_: null,
app_: null,
setApp: function (app) {
this.app_ = app;
},
start: async function () {
this.server_ = await new Promise((resolve, reject) => {
const s = this.app_.listen(PORT, (err) => {
if (err) {
reject(err);
}
});
resolve(s);
});
},
kill: function () {
return new Promise((resolve, _) => {
if (this.server_) {
this.server_.close(() => resolve());
}
resolve();
});
},
};
const instance = ServerTestUtil;
module.exports = {
setApp: function (app) {
instance.setApp(app);
return instance;
},
useServer: function () {
return instance;
},
};