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;
  }
  userId() {
    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('User can initiate the process to purchase books', (assert) => {
  const command = new PurchaseBooksCommand('123' /*userId*/, 5 /*quantity*/);
  const transactionId = new BookStoreCommandHandler().handle(command);
  assert.ok(typeof transactionId === 'string');
});