diff --git a/Cargo.lock b/Cargo.lock index 0053b313d..f6ca713cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1381,6 +1381,18 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "const-hex" version = "1.10.0" @@ -1935,6 +1947,12 @@ dependencies = [ "log", ] +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + [[package]] name = "encoding_rs" version = "0.8.33" @@ -3386,6 +3404,19 @@ dependencies = [ "generic-array", ] +[[package]] +name = "insta" +version = "1.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc" +dependencies = [ + "console", + "lazy_static", + "linked-hash-map", + "similar", + "yaml-rust", +] + [[package]] name = "instant" version = "0.1.12" @@ -4732,6 +4763,7 @@ dependencies = [ "csv", "cynic", "cynic-codegen", + "insta", "rain_orderbook_bindings", "reqwest", "serde", @@ -5696,6 +5728,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +[[package]] +name = "similar" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21" + [[package]] name = "simple_asn1" version = "0.6.2" @@ -6995,6 +7033,15 @@ dependencies = [ "tap", ] +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + [[package]] name = "yansi" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index 0dd39da03..987c9bbae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,6 +41,7 @@ rain_interpreter_parser = { path = "lib/rain.interpreter/crates/parser" } csv = "1.3.0" forker = { git = "https://github.com/rainlanguage/forker", rev = "0649c401d8ec489b13bf7bc4a8a05f0950b4b5e0" } revm-inspectors = "=0.1.0" +insta = { version = "1.34.0" } [workspace.dependencies.rain_orderbook_bindings] path = "crates/bindings" diff --git a/crates/subgraph/Cargo.toml b/crates/subgraph/Cargo.toml index 15d6855df..34f261e86 100644 --- a/crates/subgraph/Cargo.toml +++ b/crates/subgraph/Cargo.toml @@ -18,5 +18,8 @@ alloy-primitives = { workspace = true } rain_orderbook_bindings = { workspace = true } csv = { workspace = true } +[dev-dependencies] +insta = { workspace = true } + [build-dependencies] cynic-codegen = { workspace = true } diff --git a/crates/subgraph/tests/order_test.rs b/crates/subgraph/tests/order_test.rs index 0ec12f9ba..e192e5c7d 100644 --- a/crates/subgraph/tests/order_test.rs +++ b/crates/subgraph/tests/order_test.rs @@ -1,4 +1,5 @@ use cynic::Id; +use insta::assert_snapshot; use rain_orderbook_subgraph_client::types::order_detail::{ OrderDetailQuery, OrderDetailQueryVariables, }; @@ -10,67 +11,5 @@ fn orders_query_gql_output() { let id = Id::new("1234"); let request_body = OrderDetailQuery::build(OrderDetailQueryVariables { id: &id }); - let expected_query = "query OrderDetailQuery($id: ID!) { - order(id: $id) { - id - owner { - id - } - orderActive - interpreter - interpreterStore - expressionDeployer - expression - timestamp - handleIO - validInputs { - tokenVault { - id - vaultId - vault { - owner { - id - } - } - token { - id - name - symbol - decimals - } - } - } - validOutputs { - tokenVault { - id - vaultId - vault { - owner { - id - } - } - token { - id - name - symbol - decimals - } - } - } - meta { - metaBytes - content { - id - payload - magicNumber - contentType - contentEncoding - contentLanguage - } - } - } -} - -"; - assert_eq!(request_body.query, expected_query); + assert_snapshot!(request_body.query); } diff --git a/crates/subgraph/tests/orders_test.rs b/crates/subgraph/tests/orders_test.rs index ff0744bd4..afae46eae 100644 --- a/crates/subgraph/tests/orders_test.rs +++ b/crates/subgraph/tests/orders_test.rs @@ -1,3 +1,4 @@ +use insta::assert_snapshot; use rain_orderbook_subgraph_client::types::orders_list::{ OrdersListQuery, OrdersListQueryVariables, }; @@ -11,53 +12,5 @@ fn orders_query_gql_output() { first: Some(10), }); - let expected_query = "query OrdersListQuery($first: Int, $skip: Int) { - orders(orderBy: timestamp, orderDirection: desc, skip: $skip, first: $first) { - id - timestamp - handleIO - orderJSONString - owner { - id - } - orderActive - expression - interpreter - interpreterStore - transaction { - id - } - validInputs { - token { - id - symbol - decimals - } - tokenVault { - id - balance - } - vault { - id - } - } - validOutputs { - token { - id - symbol - decimals - } - tokenVault { - id - balance - } - vault { - id - } - } - } -} - -"; - assert_eq!(request_body.query, expected_query); + assert_snapshot!(request_body.query); } diff --git a/crates/subgraph/tests/snapshots/order_test__orders_query_gql_output.snap b/crates/subgraph/tests/snapshots/order_test__orders_query_gql_output.snap new file mode 100644 index 000000000..eb395a8ce --- /dev/null +++ b/crates/subgraph/tests/snapshots/order_test__orders_query_gql_output.snap @@ -0,0 +1,66 @@ +--- +source: crates/subgraph/tests/order_test.rs +expression: request_body.query +--- +query OrderDetailQuery($id: ID!) { + order(id: $id) { + id + owner { + id + } + orderActive + interpreter + interpreterStore + expressionDeployer + expression + timestamp + handleIO + validInputs { + tokenVault { + id + vaultId + vault { + owner { + id + } + } + token { + id + name + symbol + decimals + } + } + } + validOutputs { + tokenVault { + id + vaultId + vault { + owner { + id + } + } + token { + id + name + symbol + decimals + } + } + } + meta { + metaBytes + content { + id + payload + magicNumber + contentType + contentEncoding + contentLanguage + } + } + } +} + + diff --git a/crates/subgraph/tests/snapshots/orders_test__orders_query_gql_output.snap b/crates/subgraph/tests/snapshots/orders_test__orders_query_gql_output.snap new file mode 100644 index 000000000..e699c1eca --- /dev/null +++ b/crates/subgraph/tests/snapshots/orders_test__orders_query_gql_output.snap @@ -0,0 +1,52 @@ +--- +source: crates/subgraph/tests/orders_test.rs +expression: request_body.query +--- +query OrdersListQuery($first: Int, $skip: Int) { + orders(orderBy: timestamp, orderDirection: desc, skip: $skip, first: $first) { + id + timestamp + handleIO + orderJSONString + owner { + id + } + orderActive + expression + interpreter + interpreterStore + transaction { + id + } + validInputs { + token { + id + symbol + decimals + } + tokenVault { + id + balance + } + vault { + id + } + } + validOutputs { + token { + id + symbol + decimals + } + tokenVault { + id + balance + } + vault { + id + } + } + } +} + + diff --git a/crates/subgraph/tests/snapshots/vault_test__vaults_query_gql_output.snap b/crates/subgraph/tests/snapshots/vault_test__vaults_query_gql_output.snap new file mode 100644 index 000000000..efd59f48d --- /dev/null +++ b/crates/subgraph/tests/snapshots/vault_test__vaults_query_gql_output.snap @@ -0,0 +1,55 @@ +--- +source: crates/subgraph/tests/vault_test.rs +expression: request_body.query +--- +query VaultDetailQuery($id: ID!) { + tokenVault(id: $id) { + id + owner { + id + } + balance + balanceDisplay + token { + id + name + symbol + decimals + } + vaultId + vault { + id + deposits(where: {tokenVault_: {id: $id, }, }) { + id + transaction { + id + } + timestamp + sender { + id + } + amount + amountDisplay + } + withdraws(where: {tokenVault_: {id: $id, }, }) { + id + sender { + id + } + transaction { + id + } + timestamp + amount + amountDisplay + requestedAmount + requestedAmountDisplay + tokenVault { + balanceDisplay + } + } + } + } +} + + diff --git a/crates/subgraph/tests/snapshots/vaults_test__vaults_query_gql_output.snap b/crates/subgraph/tests/snapshots/vaults_test__vaults_query_gql_output.snap new file mode 100644 index 000000000..942ae3a1c --- /dev/null +++ b/crates/subgraph/tests/snapshots/vaults_test__vaults_query_gql_output.snap @@ -0,0 +1,23 @@ +--- +source: crates/subgraph/tests/vaults_test.rs +expression: request_body.query +--- +query VaultsListQuery($first: Int, $skip: Int) { + tokenVaults(orderBy: owner__id, orderDirection: desc, skip: $skip, first: $first) { + id + owner { + id + } + vaultId + token { + id + name + symbol + decimals + } + balanceDisplay + balance + } +} + + diff --git a/crates/subgraph/tests/vault_test.rs b/crates/subgraph/tests/vault_test.rs index 3255c5761..819348ad1 100644 --- a/crates/subgraph/tests/vault_test.rs +++ b/crates/subgraph/tests/vault_test.rs @@ -1,4 +1,5 @@ use cynic::Id; +use insta::assert_snapshot; use rain_orderbook_subgraph_client::types::vault_detail::{ VaultDetailQuery, VaultDetailQueryVariables, }; @@ -10,56 +11,5 @@ fn vaults_query_gql_output() { let id = Id::new("1234"); let request_body = VaultDetailQuery::build(VaultDetailQueryVariables { id: &id }); - let expected_query = "query VaultDetailQuery($id: ID!) { - tokenVault(id: $id) { - id - owner { - id - } - balance - balanceDisplay - token { - id - name - symbol - decimals - } - vaultId - vault { - id - deposits(where: {tokenVault_: {id: $id, }, }) { - id - transaction { - id - } - timestamp - sender { - id - } - amount - amountDisplay - } - withdraws(where: {tokenVault_: {id: $id, }, }) { - id - sender { - id - } - transaction { - id - } - timestamp - amount - amountDisplay - requestedAmount - requestedAmountDisplay - tokenVault { - balanceDisplay - } - } - } - } -} - -"; - assert_eq!(request_body.query, expected_query); + assert_snapshot!(request_body.query); } diff --git a/crates/subgraph/tests/vaults_test.rs b/crates/subgraph/tests/vaults_test.rs index ecb74ef61..8caf145ea 100644 --- a/crates/subgraph/tests/vaults_test.rs +++ b/crates/subgraph/tests/vaults_test.rs @@ -1,3 +1,4 @@ +use insta::assert_snapshot; use rain_orderbook_subgraph_client::types::vaults_list::{ VaultsListQuery, VaultsListQueryVariables, }; @@ -11,24 +12,5 @@ fn vaults_query_gql_output() { first: Some(10), }); - let expected_query = "query VaultsListQuery($first: Int, $skip: Int) { - tokenVaults(orderBy: owner__id, orderDirection: desc, skip: $skip, first: $first) { - id - owner { - id - } - vaultId - token { - id - name - symbol - decimals - } - balanceDisplay - balance - } -} - -"; - assert_eq!(request_body.query, expected_query); + assert_snapshot!(request_body.query); } diff --git a/flake.nix b/flake.nix index 266a0ec62..d62578d2b 100644 --- a/flake.nix +++ b/flake.nix @@ -26,6 +26,7 @@ typeshare crates/subgraph/src/types/vaults_list.rs --lang=typescript --output-file=tauri-app/src/lib/typeshare/vaultsList.ts; typeshare crates/subgraph/src/types/order_detail.rs --lang=typescript --output-file=tauri-app/src/lib/typeshare/orderDetail.ts; typeshare crates/subgraph/src/types/orders_list.rs --lang=typescript --output-file=tauri-app/src/lib/typeshare/ordersList.ts; + typeshare crates/subgraph/src/types/orders_list_for_vault.rs --lang=typescript --output-file=tauri-app/src/lib/typeshare/ordersListForVault.ts; typeshare tauri-app/src-tauri/src/toast.rs --lang=typescript --output-file=tauri-app/src/lib/typeshare/toast.ts; typeshare tauri-app/src-tauri/src/transaction_status.rs --lang=typescript --output-file=tauri-app/src/lib/typeshare/transactionStatus.ts;