Skip to content
Snippets Groups Projects
grpcTests.js 4.31 KiB
Newer Older
Jack Hu's avatar
Jack Hu committed
const grpc = require("@grpc/grpc-js");
const protoLoader = require("@grpc/proto-loader");

const PROTO_PATH = "./app.proto";

const packageDefinition = protoLoader.loadSync(PROTO_PATH, {
  keepCase: true,
  longs: String,
  enums: String,
  defaults: true,
  oneofs: true,
});

const app = grpc.loadPackageDefinition(packageDefinition);

const getTests = (endpoint, user, product) => {
  const client = new app.App(endpoint, grpc.credentials.createInsecure());

  return [
    {
      name: "randomProduct",
      run: async () => {
        const response = await new Promise((resolve, reject) => {
          client.getRandomProduct({}, function (_err, response) {
            if (_err) reject(_err);
            resolve(response);
          });
        });

        return [0, response];
      },
    },
    {
      name: "product",
      run: async () => {
        const response = await new Promise((resolve, reject) => {
          client.getProduct(
            { product_id: product },
            function (_err, response) {
              if (_err) reject(_err);
              resolve(response);
            },
          );
        });

        return [0, response];
      },
    },
    {
      name: "allProducts",
      run: async () => {
        const response = await new Promise((resolve, reject) => {
          client.getAllProducts({}, function (_err, response) {
            if (_err) reject(_err);
            resolve(response);
          });
        });

        return [0, response];
      },
    },
    {
      name: "categories",
      run: async () => {
        const response = await new Promise((resolve, reject) => {
          client.getAllCategories({}, function (_err, response) {
            if (_err) reject(_err);
            resolve(response);
          });
        });

        return [0, response];
      },
    },
    {
      name: "allOrders",
      run: async () => {
        const response = await new Promise((resolve, reject) => {
          client.getAllOrders({}, function (_err, response) {
            if (_err) reject(_err);
            resolve(response);
          });
        });

        return [0, response];
      },
    },
    {
      name: "ordersByUser",
      run: async () => {
        const response = await new Promise((resolve, reject) => {
          client.getAllUserOrders(
            { id: user },
            function (_err, response) {
              if (_err) reject(_err);
              resolve(response);
            },
          );
        });

        return [0, response];
      },
    },
    {
      name: "user",
      run: async () => {
        const response = await new Promise((resolve, reject) => {
          client.getUser(
            { id: user },
            function (_err, response) {
              if (_err) reject(_err);
              resolve(response);
            },
          );
        });

        return [0, response];
      },
    },
    {
      name: "allUsers",
      run: async () => {
        const response = await new Promise((resolve, reject) => {
          client.getAllUsers({}, function (_err, response) {
            if (_err) reject(_err);
            resolve(response);
          });
        });

        return [0, response];
      },
    },
    {
      name: "postOrder",
      run: async () => {
        {
          const response = await new Promise((resolve, reject) => {
            client.postOrder(
              {
                user_id: user,
                products: [
                  {
                    product_id: product,
                    quantity: 2,
                  },
                ],
                total_amount: 600.0,
              },
              function (_err, response) {
                if (_err) reject(_err);
                resolve(response);
              },
            );
          });

          return [0, response];
        }
      },
    },
    {
      name: "patchUser",
      run: async () => {
        const response = await new Promise((resolve, reject) => {
          client.patchAccountDetails(
            {
              id: user,
              email: "update@test.com",
              name: "update test",
            },
            function (_err, response) {
              if (_err) reject(_err);
              resolve(response);
            },
          );
        });

        return [0, response];
      },
    },
  ];
};

module.exports = { getTests };