Skip to content

Commit

Permalink
Added check for Close when polling (#1403)
Browse files Browse the repository at this point in the history
* Added check for Close when polling
  • Loading branch information
angiejones committed Apr 27, 2024
1 parent 10fb407 commit 621eb88
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 30 deletions.
Expand Up @@ -73,6 +73,7 @@ describe('Wallet: Receive Quote', () => {
test('poll for quote message', async () => {
// :snippet-start: pollforQuoteJS
let quote;
let close;

//Wait for Quote message to appear in the exchange
while (!quote) {
Expand All @@ -85,13 +86,21 @@ describe('Wallet: Receive Quote', () => {
quote = exchange.find(msg => msg instanceof Quote);

if (!quote) {
// Wait 2 seconds before making another request
await new Promise(resolve => setTimeout(resolve, 2000));
// Make sure the exchange is still open
close = exchange.find(msg => msg instanceof Close);

if(close) { break; }
else {
// Wait 2 seconds before making another request
await new Promise(resolve => setTimeout(resolve, 2000));
}
}
}
// :snippet-end:

expect(quote.exchangeId).toBe(rfq.exchangeId);
expect(quote).toBeDefined()
expect.soft(quote.exchangeId).toBe(rfq.exchangeId);
expect(close).toBe(undefined);
});

test('cancel exchange', async () => {
Expand Down
Expand Up @@ -4,6 +4,7 @@ import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNull
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import tbdex.sdk.httpclient.TbdexHttpClient
Expand Down Expand Up @@ -51,27 +52,35 @@ class ReceiveQuoteTest {

@Test
fun `poll for quote message`() {
// :snippet-start: pollforQuoteKt
var quote: Quote? = null

//Wait for Quote message to appear in the exchange
while (quote == null) {
val exchange = TbdexHttpClient.getExchange(
pfiDid = rfq.metadata.to,
requesterDid = customerDid,
exchangeId = rfq.metadata.exchangeId
)

quote = exchange.find { it is Quote } as Quote?

if (quote == null) {
// Wait 2 seconds before making another request
Thread.sleep(2000)
}
// :snippet-start: pollforQuoteKt
var quote: Quote? = null
var close: Close? = null

//Wait for Quote message to appear in the exchange
while (quote == null) {
val exchange = TbdexHttpClient.getExchange(
pfiDid = rfq.metadata.to,
requesterDid = customerDid,
exchangeId = rfq.metadata.exchangeId
)

quote = exchange.find { it is Quote } as Quote?

if (quote == null) {
// Make sure the exchange is still open
close = exchange.find { it is Close } as Close?

if (close != null) { break }
else {
// Wait 2 seconds before making another request
Thread.sleep(2000)
}
}
// :snippet-end:
}

assertEquals(rfq.metadata.exchangeId, quote.metadata.exchangeId)
assertEquals(rfq.metadata.exchangeId, quote?.metadata?.exchangeId)
assertNull(close)
}

@Test
Expand Down
Expand Up @@ -36,6 +36,7 @@ final class ReceiveQuotes: XCTestCase {

// :snippet-start: pollForQuoteSwift
var quote: Quote? = nil
var close: Close? = nil

// Wait for Quote message to appear in the exchange
while quote == nil {
Expand All @@ -46,22 +47,29 @@ final class ReceiveQuotes: XCTestCase {
)

for message in exchange {
guard case let .quote(quoteMessage) = message else {
continue
if case let .quote(quoteMessage) = message {
quote = quoteMessage
break
} else if case let .close(closeMessage) = message {
close = closeMessage
break
}

quote = quoteMessage
break
}

if quote == nil {
// Wait 2 seconds before making another request
try await Task.sleep(nanoseconds: 2_000_000_000)
// Make sure the exchange is still open
if close != nil { break }
else {
// Wait 2 seconds before making another request
try await Task.sleep(nanoseconds: 2_000_000_000)
}
}
}

// :snippet-end:
XCTAssertNotNil(quote, "No quote found")
XCTAssertEqual(quote?.metadata.exchangeID, exchangeID, "The exchangeID of the found quote does not match")
XCTAssertNotNil(quote)
XCTAssertEqual(quote?.metadata.exchangeID, exchangeID)
XCTAssertNil(close)
}

func testCloseExchange() async throws {
Expand Down

0 comments on commit 621eb88

Please sign in to comment.