Prevent duplicate Stripe invoice queue submissions
This commit is contained in:
+6
-1
@@ -34,6 +34,7 @@ const showStripeStatusSummary = computed(() => isPaid.value && (isDraft.value ||
|
||||
const isStripeTransferBusy = computed(() => stripeTransferQueue.disableSubmit.value);
|
||||
const isStripeTransferQueuedOrProcessing = computed(() => stripeTransferQueue.isQueuedOrProcessing.value);
|
||||
const isStripeTransferCompleted = computed(() => stripeTransferQueue.isCompleted.value);
|
||||
const canBookStripeInvoice = computed(() => !isStripeTransferBusy.value && !isStripeTransferCompleted.value);
|
||||
const isStripeTransferFailed = computed(() => stripeTransferQueue.isFailed.value);
|
||||
const stripeTransferProgressPercent = computed(() => stripeTransferQueue.progressPercent.value);
|
||||
const stripeTransferProgressMessage = computed(() => stripeTransferQueue.progressMessage.value);
|
||||
@@ -61,6 +62,10 @@ const stripeTransferResultMessage = computed(() => {
|
||||
});
|
||||
|
||||
const onBookStripeInvoice = async () => {
|
||||
if (!canBookStripeInvoice.value) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await stripeTransferQueue.enqueue({});
|
||||
} catch (error) {
|
||||
@@ -324,7 +329,7 @@ const stripePayment = computed(() => {
|
||||
<div class="buttons">
|
||||
<button
|
||||
class="button is-small is-light"
|
||||
:disabled="isStripeTransferBusy"
|
||||
:disabled="!canBookStripeInvoice"
|
||||
data-testid="collected-stripe-book-invoice"
|
||||
@click="onBookStripeInvoice"
|
||||
>
|
||||
|
||||
@@ -24,8 +24,17 @@ describe("collected invoice stripe queue wiring", () => {
|
||||
it("renders progress and retry states for queued transfers", () => {
|
||||
expect(stripeManageSource).toContain("isStripeTransferQueuedOrProcessing");
|
||||
expect(stripeManageSource).toContain("isStripeTransferFailed");
|
||||
expect(stripeManageSource).toContain(
|
||||
"const canBookStripeInvoice = computed(() => !isStripeTransferBusy.value && !isStripeTransferCompleted.value);"
|
||||
);
|
||||
expect(stripeManageSource).toContain('data-testid="collected-stripe-progress"');
|
||||
expect(stripeManageSource).toContain('data-testid="collected-stripe-retry"');
|
||||
expect(stripeManageSource).toContain('data-testid="collected-stripe-book-invoice"');
|
||||
});
|
||||
|
||||
it("prevents duplicate queue submissions after a completed Stripe transfer", () => {
|
||||
expect(stripeManageSource).toContain("if (!canBookStripeInvoice.value)");
|
||||
expect(stripeManageSource).toContain(':disabled="!canBookStripeInvoice"');
|
||||
expect(stripeManageSource).toContain("isStripeTransferCompleted.value");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user