JSFiddle - React, Tailwind, and code Playground

by Fagner Brack

HTML

<script src="https://code.jquery.com/qunit/qunit-2.8.0.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.8.0.css">
<div id="qunit"></div>
<div id="qunit-fixture"></div>

JavaScript

class PurchaseBooksCommand {
  constructor(userId, quantity) {
    this.internalQuantity = quantity;
    this.internalUserId = userId;
  }
  clientId() {
    return this.internalUserId;
  }
  quantity() {
    return this.internalQuantity;
  }
}

class BookStoreCommandHandler {
  handle(command) {
    // Handle the command
    const transaction = new BookTransaction(
      command.userId(),
      command.quantity()
    );
    return transaction.id();
  }
}

class BookTransaction {
  id() {
    return 'any_generated_transaction_id';
  }
}

QUnit.test('Command to purchase books', (assert) => {
  const quantity = 5;
  const userId = '123';
  const command = new PurchaseBooksCommand(userId, quantity);
  assert.strictEqual(command.userId(), '123');
  assert.strictEqual(command.quantity(), 5);
});

QUnit.test('Handling of purchase books command', (assert) => {
  const command = new PurchaseBooksCommand('123' /*userId*/, 5 /*quantity*/);
  const transactionId = new BookStoreCommandHandler().handle(command);
  assert.ok(typeof transactionId === 'string');
});