|
21 | 21 | (def {CONTRACT_NAME} |
22 | 22 | (deploy |
23 | 23 | '(do |
24 | | - (def provenance {{}}) |
| 24 | + (def provenance []) |
25 | 25 | (defn version [] "{CONTRACT_VERSION}") |
26 | | - (export version) |
| 26 | + (defn register [asset-id] |
| 27 | + (let [record {{:owner *caller* :timestamp *timestamp* :asset-id (blob asset-id)}}] |
| 28 | + (def provenance (conj provenance record)) |
| 29 | + record |
| 30 | + ) |
| 31 | + ) |
| 32 | + (defn event-list [asset-id] |
| 33 | + (mapcat (fn [record] (when (= (blob asset-id) (record :asset-id)) [record])) provenance) |
| 34 | + ) |
| 35 | + (export event-list register version) |
27 | 36 | ) |
28 | 37 | ) |
29 | 38 | ) |
|
32 | 41 |
|
33 | 42 | def test_provenance_contract(convex, test_account): |
34 | 43 | auto_topup_account(convex, test_account) |
| 44 | + print(provenance_contract) |
35 | 45 | result = convex.send(provenance_contract, test_account) |
36 | 46 | assert(result['value']) |
37 | 47 | auto_topup_account(convex, test_account) |
38 | 48 | contract_address = result['value'] |
39 | 49 | assert(contract_address) |
40 | 50 | print(contract_address) |
| 51 | + |
| 52 | + asset_id = '0x' + secrets.token_hex(32) |
| 53 | + event_count = 4 |
| 54 | + for index in range(0, event_count): |
| 55 | + result = convex.send(f'(call {contract_address} (register {asset_id}))', test_account) |
| 56 | + assert(result) |
| 57 | + record = result['value'] |
| 58 | + assert(record['asset-id'] == asset_id) |
| 59 | + |
| 60 | + |
| 61 | + result = convex.query(f'(call {contract_address} (event-list {asset_id}))', test_account) |
| 62 | + assert(result) |
| 63 | + event_list = result['value'] |
| 64 | + assert(event_list) |
| 65 | + assert(len(event_list) == event_count) |
| 66 | + for event_item in event_list: |
| 67 | + assert(event_item['asset-id'] == asset_id) |
| 68 | + |
| 69 | + |
0 commit comments