Browse Source

update bad verbiage on offer page, fix offer test

Trent Larson 3 months ago
parent
commit
d96aa01107
  1. 22
      src/views/OfferDetailsView.vue
  2. 25
      test-playwright/50-record-offer.spec.ts

22
src/views/OfferDetailsView.vue

@ -18,7 +18,7 @@
</div> </div>
<!-- Heading --> <!-- Heading -->
<h1 class="text-4xl text-center font-light px-4 mb-4">What Was Offered</h1> <h1 class="text-4xl text-center font-light px-4 mb-4">What Is Offered</h1>
<h1 class="text-xl font-bold text-center mb-4"> <h1 class="text-xl font-bold text-center mb-4">
<span> <span>
@ -34,7 +34,7 @@
</h1> </h1>
<textarea <textarea
class="block w-full rounded border border-slate-400 mb-2 px-3 py-2" class="block w-full rounded border border-slate-400 mb-2 px-3 py-2"
placeholder="What was offered" placeholder="What is offered"
v-model="itemDescription" v-model="itemDescription"
data-testId="itemDescription" data-testId="itemDescription"
/> />
@ -107,7 +107,7 @@
<label class="text-sm mt-1"> <label class="text-sm mt-1">
{{ {{
projectId projectId
? "This was given to " + projectName ? "This is offered to " + projectName
: "No project was chosen" : "No project was chosen"
}} }}
</label> </label>
@ -129,7 +129,7 @@
<label class="text-sm mt-1"> <label class="text-sm mt-1">
{{ {{
recipientDid recipientDid
? "This was given to " + recipientName ? "This is offered to " + recipientName
: "No recipient was chosen." : "No recipient was chosen."
}} }}
</label> </label>
@ -421,7 +421,7 @@ export default class OfferDetailsView extends Vue {
{ {
group: "alert", group: "alert",
type: "toast", type: "toast",
text: "Recording the give...", text: "Recording the offer...",
title: "", title: "",
}, },
1000, 1000,
@ -527,13 +527,13 @@ export default class OfferDetailsView extends Vue {
if (result.type === "error" || this.isCreationError(result.response)) { if (result.type === "error" || this.isCreationError(result.response)) {
const errorMessage = this.getCreationErrorMessage(result); const errorMessage = this.getCreationErrorMessage(result);
console.error("Error with give creation result:", result); console.error("Error with offer creation result:", result);
this.$notify( this.$notify(
{ {
group: "alert", group: "alert",
type: "danger", type: "danger",
title: "Error", title: "Error",
text: errorMessage || "There was an error creating the give.", text: errorMessage || "There was an error creating the offer.",
}, },
-1, -1,
); );
@ -556,11 +556,11 @@ export default class OfferDetailsView extends Vue {
} }
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
} catch (error: any) { } catch (error: any) {
console.error("Error with give recordation caught:", error); console.error("Error with offer recordation caught:", error);
const errorMessage = const errorMessage =
error.userMessage || error.userMessage ||
error.response?.data?.error?.message || error.response?.data?.error?.message ||
"There was an error recording the give."; "There was an error recording the offer.";
this.$notify( this.$notify(
{ {
group: "alert", group: "alert",
@ -578,7 +578,7 @@ export default class OfferDetailsView extends Vue {
? this.recipientDid ? this.recipientDid
: undefined; : undefined;
const projectId = this.offeredToProject ? this.projectId : undefined; const projectId = this.offeredToProject ? this.projectId : undefined;
const giveClaim = hydrateOffer( const offerClaim = hydrateOffer(
this.prevCredToEdit?.claim as OfferVerifiableCredential, this.prevCredToEdit?.claim as OfferVerifiableCredential,
this.activeDid, this.activeDid,
recipientDid, recipientDid,
@ -590,7 +590,7 @@ export default class OfferDetailsView extends Vue {
this.validThroughDateInput, this.validThroughDateInput,
this.prevCredToEdit?.id as string, this.prevCredToEdit?.id as string,
); );
const claimStr = JSON.stringify(giveClaim); const claimStr = JSON.stringify(offerClaim);
return claimStr; return claimStr;
} }

25
test-playwright/50-record-offer.spec.ts

@ -5,7 +5,8 @@ test('Record an offer', async ({ page }) => {
// Generate a random string of 3 characters, skipping the "0." at the beginning // Generate a random string of 3 characters, skipping the "0." at the beginning
const randomString = Math.random().toString(36).substring(2, 5); const randomString = Math.random().toString(36).substring(2, 5);
// Standard title prefix // Standard title prefix
const finalTitle = `Offering of ${randomString}`; const description = `Offering of ${randomString}`;
const updatedDescription = `Updated ${description}`;
const randomNonZeroNumber = Math.floor(Math.random() * 998) + 1; const randomNonZeroNumber = Math.floor(Math.random() * 998) + 1;
// Create new ID for default user // Create new ID for default user
@ -17,46 +18,46 @@ test('Record an offer', async ({ page }) => {
// Record an offer // Record an offer
await page.getByTestId('offerButton').click(); await page.getByTestId('offerButton').click();
await page.getByTestId('inputDescription').fill(finalTitle); await page.getByTestId('inputDescription').fill(description);
await page.getByTestId('inputOfferAmount').fill(randomNonZeroNumber.toString()); await page.getByTestId('inputOfferAmount').fill(randomNonZeroNumber.toString());
await page.getByRole('button', { name: 'Sign & Send' }).click(); await page.getByRole('button', { name: 'Sign & Send' }).click();
await expect(page.getByText('That offer was recorded.')).toBeVisible(); await expect(page.getByText('That offer was recorded.')).toBeVisible();
// go to the offer and check the values // go to the offer and check the values
await page.goto('./projects'); await page.goto('./projects');
await page.locator('li').filter({ hasText: finalTitle }).locator('a').first().click(); await page.locator('li').filter({ hasText: description }).locator('a').first().click();
await expect(page.getByRole('heading', { name: 'Verifiable Claim Details' })).toBeVisible(); await expect(page.getByRole('heading', { name: 'Verifiable Claim Details' })).toBeVisible();
await expect(page.getByText(finalTitle, { exact: true })).toBeVisible(); await expect(page.getByText(description, { exact: true })).toBeVisible();
const serverPagePromise = page.waitForEvent('popup'); const serverPagePromise = page.waitForEvent('popup');
await page.getByRole('link', { name: 'View on the Public Server' }).click(); await page.getByRole('link', { name: 'View on the Public Server' }).click();
const serverPage = await serverPagePromise; const serverPage = await serverPagePromise;
await serverPage.getByText(finalTitle); await serverPage.getByText(description);
await serverPage.getByText('did:none:HIDDEN'); await serverPage.getByText('did:none:HIDDEN');
// Now update that offer // Now update that offer
// find the edit page and check the old values again // find the edit page and check the old values again
await page.goto('./projects'); await page.goto('./projects');
await page.locator('li').filter({ hasText: finalTitle }).locator('a').first().click(); await page.locator('li').filter({ hasText: description }).locator('a').first().click();
await page.getByTestId('editClaimButton').click(); await page.getByTestId('editClaimButton').click();
await page.locator('heading', { hasText: 'What was offered' }).isVisible(); await page.locator('heading', { hasText: 'What is offered' }).isVisible();
const itemDesc = await page.getByTestId('itemDescription'); const itemDesc = await page.getByTestId('itemDescription');
await expect(itemDesc).toHaveValue(finalTitle); await expect(itemDesc).toHaveValue(description);
const amount = await page.getByTestId('inputOfferAmount'); const amount = await page.getByTestId('inputOfferAmount');
await expect(amount).toHaveValue(randomNonZeroNumber.toString()); await expect(amount).toHaveValue(randomNonZeroNumber.toString());
// update the values // update the values
await itemDesc.fill('Updated ' + finalTitle); await itemDesc.fill(updatedDescription);
await amount.fill(String(randomNonZeroNumber + 1)); await amount.fill(String(randomNonZeroNumber + 1));
await page.getByRole('button', { name: 'Sign & Send' }).click(); await page.getByRole('button', { name: 'Sign & Send' }).click();
// go to the offer claim again and check the updated values // go to the offer claim again and check the updated values
await page.goto('./projects'); await page.goto('./projects');
await page.locator('li').filter({ hasText: finalTitle }).locator('a').first().click(); await page.locator('li').filter({ hasText: description }).locator('a').first().click();
const newItemDesc = await page.getByTestId('description'); const newItemDesc = await page.getByTestId('description');
await expect(newItemDesc).toHaveText(finalTitle); await expect(newItemDesc).toHaveText(updatedDescription);
// go to edit page // go to edit page
await page.getByTestId('editClaimButton').click(); await page.getByTestId('editClaimButton').click();
const newAmount = await page.getByTestId('inputOfferAmount'); const newAmount = await page.getByTestId('inputOfferAmount');
await expect(newAmount).toHaveValue(randomNonZeroNumber.toString()); await expect(newAmount).toHaveValue((randomNonZeroNumber + 1).toString());
}); });

Loading…
Cancel
Save