const { test, expect, hardcodedSessionUuid } = require('./test-setup'); const SessionCreated = require('../src/models/SessionCreated'); const SessionRelatedToPublickey = require('../src/models/SessionRelatedToPublickey'); const NymSet = require('../src/models/NymSet'); const ContactDetailsSet = require('../src/models/ContactDetailsSet'); const OfferDetailsSet = require('../src/models/OfferDetailsSet'); test('Mock records are present', async () => { for (const someModel of [ SessionCreated, SessionRelatedToPublickey, NymSet, ContactDetailsSet, ]) { expect(await someModel.findOne()).toBeTruthy(); } }); test('Hardcoded session cookie is there', async ({ context }) => { const page = await context.newPage(); const cookiesInPage = await page.context().cookies(); expect(cookiesInPage).toHaveLength(1); expect(cookiesInPage[0].name).toBe('sessionUuid'); expect(cookiesInPage[0].value).toBe(hardcodedSessionUuid); }); test('Offers is reachable', async ({ context }) => { const page = await context.newPage(); await page.goto('http://localhost/offers'); const createOfferButton = page.locator('#button-start-create-offer'); await expect(createOfferButton).toBeVisible(); await expect(createOfferButton).toContainText('Crear nueva oferta'); }); test('Create an offer with a few options creates in DB', async ({ context, }) => { const page = await context.newPage(); await page.goto('http://localhost/offers'); await page.getByRole('button', { name: 'Crear nueva oferta' }).click(); await page.getByRole('button', { name: 'Quiero vender Bitcoin' }).click(); await page.getByRole('button', { name: 'Quiero comprar Bitcoin' }).click(); await page.getByRole('button', { name: '+' }).click(); await page.getByRole('button', { name: '+' }).click(); await page.getByRole('button', { name: '+' }).click(); await page.getByRole('button', { name: '-' }).click(); await expect(page.locator('#premium-value')).toContainText('2%'); await page.locator('#input-eur-amount').click(); await page.locator('#input-eur-amount').press('ControlOrMeta+a'); await page.locator('#input-eur-amount').fill('50'); await expect(page.locator('#input-eur-amount')).toHaveValue('50'); await page .getByText( 'Añade los detalles de tu oferta Quiero comprar Bitcoin Quiero vender Bitcoin' ) .click(); await page .getByRole('textbox', { name: '¿Dónde? Ej."Eixample", "La' }) .click(); await page .getByRole('textbox', { name: '¿Dónde? Ej."Eixample", "La' }) .fill('En algún lugar'); await page .getByRole('textbox', { name: '¿Cuándo? Ej."Cualquier hora' }) .click(); await page .getByRole('textbox', { name: '¿Cuándo? Ej."Cualquier hora' }) .fill('En algún momento'); await page.locator('#onchain-checkbox').uncheck(); await expect(page.locator('#onchain-checkbox')).not.toBeChecked(); await expect(page.locator('#lightning-checkbox')).toBeChecked(); await page.locator('#my-trusted-trusted-checkbox').uncheck(); await page.locator('#all-members-checkbox').check(); await page.locator('#my-trusted-trusted-checkbox').check(); await expect(page.locator('#my-trusted-trusted-checkbox')).toBeChecked(); await page.locator('#all-members-checkbox').uncheck(); await expect(page.locator('#all-members-checkbox')).not.toBeChecked(); await page.locator('#large-bills-checkbox').check(); await expect(page.locator('#large-bills-checkbox')).toBeChecked(); await page.getByRole('button', { name: 'Publicar oferta' }).click(); await page.locator('#close-offer-controls-x').click(); await expect(page.locator('#offers-root')).toMatchAriaSnapshot( `- button "Crear nueva oferta"` ); const createdOfferDetailsSetRecord = await OfferDetailsSet.findOne(); expect(createdOfferDetailsSetRecord.wants).toBe('BTC'); expect(createdOfferDetailsSetRecord.premium).toBe('0.02'); expect(createdOfferDetailsSetRecord.trade_amount_eur).toBe(50); expect(createdOfferDetailsSetRecord.location_details).toBe('En algún lugar'); expect(createdOfferDetailsSetRecord.time_availability_details).toBe( 'En algún momento' ); expect(createdOfferDetailsSetRecord.show_offer_to_trusted).toBe(true); expect(createdOfferDetailsSetRecord.show_offer_to_trusted_trusted).toBe(true); expect(createdOfferDetailsSetRecord.show_offer_to_all_members).toBe(false); expect(createdOfferDetailsSetRecord.is_onchain_accepted).toBe(false); expect(createdOfferDetailsSetRecord.is_lightning_accepted).toBe(true); expect(createdOfferDetailsSetRecord.are_big_notes_accepted).toBe(true); });