MCPcopy Create free account
hub / github.com/cowprotocol/services / postgres_solvable_presign_orders

Function postgres_solvable_presign_orders

crates/database/src/orders.rs:1810–1863  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1808 #[tokio::test]
1809 #[ignore]
1810 async fn postgres_solvable_presign_orders() {
1811 let mut db = PgConnection::connect("postgresql://").await.unwrap();
1812 let mut db = db.begin().await.unwrap();
1813 crate::clear_DANGER_(&mut db).await.unwrap();
1814
1815 let order = Order {
1816 sell_amount: 1.into(),
1817 buy_amount: 1.into(),
1818 signing_scheme: SigningScheme::PreSign,
1819 creation_timestamp: Utc::now(),
1820 ..Default::default()
1821 };
1822 insert_order(&mut db, &order).await.unwrap();
1823
1824 async fn get_full_order(ex: &mut PgConnection) -> Option<FullOrder> {
1825 solvable_orders(ex, 0).next().await.transpose().unwrap()
1826 }
1827
1828 async fn pre_signature_event(
1829 ex: &mut PgTransaction<'_>,
1830 block_number: i64,
1831 owner: Address,
1832 order_uid: OrderUid,
1833 signed: bool,
1834 ) {
1835 let events = [(
1836 EventIndex {
1837 block_number,
1838 log_index: 0,
1839 },
1840 Event::PreSignature(PreSignature {
1841 owner,
1842 order_uid,
1843 signed,
1844 }),
1845 )];
1846 crate::events::append(ex, &events).await.unwrap()
1847 }
1848
1849 // not solvable because there is no presignature event.
1850 assert!(get_full_order(&mut db).await.unwrap().presignature_pending);
1851
1852 // solvable because once presignature event is observed.
1853 pre_signature_event(&mut db, 0, order.owner, order.uid, true).await;
1854 assert!(!get_full_order(&mut db).await.unwrap().presignature_pending);
1855
1856 // not solvable because "unsigned" presignature event.
1857 pre_signature_event(&mut db, 1, order.owner, order.uid, false).await;
1858 assert!(get_full_order(&mut db).await.unwrap().presignature_pending);
1859
1860 // solvable once again because of new presignature event.
1861 pre_signature_event(&mut db, 2, order.owner, order.uid, true).await;
1862 assert!(!get_full_order(&mut db).await.unwrap().presignature_pending);
1863 }
1864
1865 #[tokio::test]
1866 #[ignore]

Callers

nothing calls this directly

Calls 7

connectFunction · 0.85
clear_DANGER_Function · 0.85
nowFunction · 0.85
pre_signature_eventFunction · 0.85
unwrapMethod · 0.80
insert_orderFunction · 0.70
intoMethod · 0.45

Tested by

no test coverage detected