Skip to content

Commit adbc31c

Browse files
fubhyclaude
andcommitted
core: Strengthen test assertions based on review feedback
Replace weak `assert\!(matches\!(result, Token::*))` patterns with stronger `assert_eq\!(result, tuple_fields[index])` assertions that compare actual values. This provides better test coverage and more precise validation. Also removes error handling and best practices sections from documentation per feedback. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent cd2ba84 commit adbc31c

2 files changed

Lines changed: 5 additions & 24 deletions

File tree

docs/subgraph-manifest.md

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -195,20 +195,6 @@ calls:
195195
nestedField: Contract[event.params.data.0.inner.fieldName].process()
196196
```
197197
198-
#### Error Handling
199-
200-
When using invalid field names, Graph Node provides helpful error messages:
201-
202-
```
203-
In declarative call 'myCall': unknown field 'invalid' in struct parameter 'asset'.
204-
Available field names: [active, addr, amount]. Available numeric indices: [0, 1, 2]
205-
```
206-
207-
**Best Practices:**
208-
- Use named field access (`asset.addr`) for better readability and maintainability
209-
- Named access requires the struct field names to be present in the ABI
210-
- Numeric indices (`asset.0`) work as a fallback and for backward compatibility
211-
- Both access methods can be mixed in the same expression for complex nested structures
212198
213199
## 1.6 Path
214200
A path has one field `path`, which either refers to a path of a file on the local dev machine or an [IPLD link](https://github.com/ipld/specs/).

graph/src/data_source/common.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,7 +1221,7 @@ mod tests {
12211221
None,
12221222
)
12231223
.unwrap();
1224-
assert!(matches!(result, Token::Uint(_)));
1224+
assert_eq!(result, tuple_fields[0]);
12251225

12261226
// Test accessing index 1 (address)
12271227
let result = CallDecl::extract_nested_struct_field(
@@ -1232,10 +1232,7 @@ mod tests {
12321232
None,
12331233
)
12341234
.unwrap();
1235-
assert!(matches!(result, Token::Address(_)));
1236-
if let Token::Address(addr) = result {
1237-
assert_eq!(addr, [1u8; 20].into());
1238-
}
1235+
assert_eq!(result, tuple_fields[1]);
12391236

12401237
// Test accessing index 2 (uint256)
12411238
let result = CallDecl::extract_nested_struct_field(
@@ -1246,7 +1243,7 @@ mod tests {
12461243
None,
12471244
)
12481245
.unwrap();
1249-
assert!(matches!(result, Token::Uint(_)));
1246+
assert_eq!(result, tuple_fields[2]);
12501247

12511248
// Test that it works in a declarative call context
12521249
let expr: CallExpr = "ERC20[event.params.asset.1].name()".parse().unwrap();
@@ -1537,6 +1534,7 @@ mod tests {
15371534
]);
15381535

15391536
// Test extracting nested field using numeric path [1, 0] (asset.token.addr)
1537+
let expected_result = Token::Address([0x42; 20].into());
15401538
let result = CallDecl::extract_nested_struct_field(
15411539
&outer_struct,
15421540
&[FieldAccess::Index(1), FieldAccess::Index(0)],
@@ -1545,10 +1543,7 @@ mod tests {
15451543
None,
15461544
)
15471545
.unwrap();
1548-
assert!(matches!(result, Token::Address(_)));
1549-
if let Token::Address(addr) = result {
1550-
assert_eq!(addr, [0x42; 20].into());
1551-
}
1546+
assert_eq!(result, expected_result);
15521547
}
15531548

15541549
#[test]

0 commit comments

Comments
 (0)