@@ -15,8 +15,7 @@ contract HorizonStakingDelegateTest is HorizonStakingTest {
15
15
function testDelegate_Tokens (
16
16
uint256 amount ,
17
17
uint256 delegationAmount
18
- ) public useIndexer useProvision (amount, 0 , 0 ) useDelegation (delegationAmount) {
19
- }
18
+ ) public useIndexer useProvision (amount, 0 , 0 ) useDelegation (delegationAmount) {}
20
19
21
20
function testDelegate_Tokens_WhenThawing (
22
21
uint256 amount ,
@@ -30,7 +29,12 @@ contract HorizonStakingDelegateTest is HorizonStakingTest {
30
29
vm.startPrank (users.delegator);
31
30
_delegate (users.indexer, subgraphDataServiceAddress, delegationAmount, 0 );
32
31
33
- DelegationInternal memory delegation = _getStorage_Delegation (users.indexer, subgraphDataServiceAddress, users.delegator, false );
32
+ DelegationInternal memory delegation = _getStorage_Delegation (
33
+ users.indexer,
34
+ subgraphDataServiceAddress,
35
+ users.delegator,
36
+ false
37
+ );
34
38
undelegateAmount = bound (undelegateAmount, 1 wei, delegation.shares - 1 ether);
35
39
_undelegate (users.indexer, subgraphDataServiceAddress, undelegateAmount);
36
40
@@ -46,10 +50,15 @@ contract HorizonStakingDelegateTest is HorizonStakingTest {
46
50
vm.startPrank (users.delegator);
47
51
_delegate (users.indexer, subgraphDataServiceAddress, delegationAmount, 0 );
48
52
49
- DelegationInternal memory delegation = _getStorage_Delegation (users.indexer, subgraphDataServiceAddress, users.delegator, false );
53
+ DelegationInternal memory delegation = _getStorage_Delegation (
54
+ users.indexer,
55
+ subgraphDataServiceAddress,
56
+ users.delegator,
57
+ false
58
+ );
50
59
_undelegate (users.indexer, subgraphDataServiceAddress, delegation.shares);
51
60
52
- _delegate (users.indexer, subgraphDataServiceAddress, delegationAmount, 0 );
61
+ _delegate (users.indexer, subgraphDataServiceAddress, delegationAmount, 0 );
53
62
}
54
63
55
64
function testDelegate_RevertWhen_ZeroTokens (uint256 amount ) public useIndexer useProvision (amount, 0 , 0 ) {
@@ -87,7 +96,7 @@ contract HorizonStakingDelegateTest is HorizonStakingTest {
87
96
function testDelegate_RevertWhen_InvalidPool (
88
97
uint256 tokens ,
89
98
uint256 delegationTokens
90
- ) public useIndexer useProvision (tokens, 0 , 0 ) useDelegationSlashing () {
99
+ ) public useIndexer useProvision (tokens, 0 , 0 ) useDelegationSlashing {
91
100
delegationTokens = bound (delegationTokens, MIN_DELEGATION, MAX_STAKING_TOKENS);
92
101
93
102
resetPrank (users.delegator);
@@ -96,29 +105,36 @@ contract HorizonStakingDelegateTest is HorizonStakingTest {
96
105
// slash entire provision + pool
97
106
resetPrank (subgraphDataServiceAddress);
98
107
_slash (users.indexer, subgraphDataServiceAddress, tokens + delegationTokens, 0 );
99
-
108
+
100
109
// attempt to delegate to a pool on invalid state, should revert
101
110
resetPrank (users.delegator);
102
111
token.approve (address (staking), delegationTokens);
103
- vm.expectRevert (abi.encodeWithSelector (
104
- IHorizonStakingMain.HorizonStakingInvalidDelegationPoolState.selector ,
105
- users.indexer,
106
- subgraphDataServiceAddress
107
- ));
112
+ vm.expectRevert (
113
+ abi.encodeWithSelector (
114
+ IHorizonStakingMain.HorizonStakingInvalidDelegationPoolState.selector ,
115
+ users.indexer,
116
+ subgraphDataServiceAddress
117
+ )
118
+ );
108
119
staking.delegate (users.indexer, subgraphDataServiceAddress, delegationTokens, 0 );
109
120
}
110
121
111
122
function testDelegate_RevertWhen_ThawingShares_InvalidPool (
112
123
uint256 tokens ,
113
124
uint256 delegationTokens
114
- ) public useIndexer useProvision (tokens, 0 , 0 ) useDelegationSlashing () {
125
+ ) public useIndexer useProvision (tokens, 0 , 0 ) useDelegationSlashing {
115
126
delegationTokens = bound (delegationTokens, MIN_DELEGATION * 2 , MAX_STAKING_TOKENS);
116
127
117
128
resetPrank (users.delegator);
118
129
_delegate (users.indexer, subgraphDataServiceAddress, delegationTokens, 0 );
119
130
120
131
// undelegate some shares but not all
121
- DelegationInternal memory delegation = _getStorage_Delegation (users.indexer, subgraphDataServiceAddress, users.delegator, false );
132
+ DelegationInternal memory delegation = _getStorage_Delegation (
133
+ users.indexer,
134
+ subgraphDataServiceAddress,
135
+ users.delegator,
136
+ false
137
+ );
122
138
_undelegate (users.indexer, subgraphDataServiceAddress, delegation.shares / 2 );
123
139
124
140
// slash entire provision + pool
@@ -128,19 +144,21 @@ contract HorizonStakingDelegateTest is HorizonStakingTest {
128
144
// attempt to delegate to a pool on invalid state, should revert
129
145
resetPrank (users.delegator);
130
146
token.approve (address (staking), delegationTokens);
131
- vm.expectRevert (abi.encodeWithSelector (
132
- IHorizonStakingMain.HorizonStakingInvalidDelegationPoolState.selector ,
133
- users.indexer,
134
- subgraphDataServiceAddress
135
- ));
147
+ vm.expectRevert (
148
+ abi.encodeWithSelector (
149
+ IHorizonStakingMain.HorizonStakingInvalidDelegationPoolState.selector ,
150
+ users.indexer,
151
+ subgraphDataServiceAddress
152
+ )
153
+ );
136
154
staking.delegate (users.indexer, subgraphDataServiceAddress, delegationTokens, 0 );
137
155
}
138
156
139
157
function testDelegate_AfterRecoveringPool (
140
158
uint256 tokens ,
141
159
uint256 delegationTokens ,
142
160
uint256 recoverAmount
143
- ) public useIndexer useProvision (tokens, 0 , 0 ) useDelegationSlashing () {
161
+ ) public useIndexer useProvision (tokens, 0 , 0 ) useDelegationSlashing {
144
162
recoverAmount = bound (recoverAmount, 1 , MAX_STAKING_TOKENS);
145
163
delegationTokens = bound (delegationTokens, MIN_DELEGATION, MAX_STAKING_TOKENS);
146
164
@@ -162,4 +180,18 @@ contract HorizonStakingDelegateTest is HorizonStakingTest {
162
180
resetPrank (users.delegator);
163
181
_delegate (users.indexer, subgraphDataServiceAddress, delegationTokens, 0 );
164
182
}
183
+
184
+ function testDelegate_RevertWhen_ProvisionNotCreated (uint256 delegationAmount ) public {
185
+ delegationAmount = bound (delegationAmount, MIN_DELEGATION, MAX_STAKING_TOKENS);
186
+
187
+ vm.startPrank (users.delegator);
188
+ token.approve (address (staking), delegationAmount);
189
+ bytes memory expectedError = abi.encodeWithSelector (
190
+ IHorizonStakingMain.HorizonStakingInvalidProvision.selector ,
191
+ users.indexer,
192
+ subgraphDataServiceAddress
193
+ );
194
+ vm.expectRevert (expectedError);
195
+ staking.delegate (users.indexer, subgraphDataServiceAddress, delegationAmount, 0 );
196
+ }
165
197
}
0 commit comments