@@ -211,7 +211,7 @@ describe('FacadeRead contract', () => {
211211 let [ backing , overCollateralization ] = await facade . callStatic . backingOverview ( rToken . address )
212212
213213 // Check values - Fully collateralized and no over-collateralization
214- expect ( backing ) . to . be . closeTo ( fp ( '1' ) , 10 )
214+ expect ( backing ) . to . equal ( fp ( '1' ) )
215215 expect ( overCollateralization ) . to . equal ( 0 )
216216
217217 // Mint some RSR
@@ -224,16 +224,16 @@ describe('FacadeRead contract', () => {
224224 ; [ backing , overCollateralization ] = await facade . callStatic . backingOverview ( rToken . address )
225225
226226 // Check values - Fully collateralized and fully over-collateralized
227- expect ( backing ) . to . be . closeTo ( fp ( '1' ) , 10 )
227+ expect ( backing ) . to . equal ( fp ( '1' ) )
228228 expect ( overCollateralization ) . to . be . closeTo ( fp ( '0.5' ) , 10 )
229229
230230 // Stake more RSR
231231 await rsr . connect ( addr1 ) . approve ( stRSR . address , stakeAmount )
232232 await stRSR . connect ( addr1 ) . stake ( stakeAmount )
233233 ; [ backing , overCollateralization ] = await facade . callStatic . backingOverview ( rToken . address )
234234
235- expect ( backing ) . to . be . closeTo ( fp ( '1' ) , 10 )
236- expect ( overCollateralization ) . to . be . closeTo ( fp ( '1' ) , 10 )
235+ expect ( backing ) . to . equal ( fp ( '1' ) )
236+ expect ( overCollateralization ) . to . equal ( fp ( '1' ) )
237237
238238 // Redeem all RTokens
239239 await rToken . connect ( addr1 ) . redeem ( issueAmount , await basketHandler . nonce ( ) )
@@ -246,14 +246,39 @@ describe('FacadeRead contract', () => {
246246 expect ( overCollateralization ) . to . equal ( 0 )
247247 } )
248248
249+ it ( 'Should return backingOverview backing correctly when undercollateralized' , async ( ) => {
250+ const backingManager = await main . backingManager ( )
251+ await usdc . burn ( backingManager , ( await usdc . balanceOf ( backingManager ) ) . div ( 2 ) )
252+ await basketHandler . refreshBasket ( )
253+ const [ backing , overCollateralization ] = await facade . callStatic . backingOverview (
254+ rToken . address
255+ )
256+
257+ // Check values - Fully collateralized and no over-collateralization
258+ expect ( backing ) . to . equal ( fp ( '0.875' ) )
259+ expect ( overCollateralization ) . to . equal ( 0 )
260+ } )
261+
249262 it ( 'Should return backingOverview backing correctly when an asset price is 0' , async ( ) => {
250263 await setOraclePrice ( tokenAsset . address , bn ( 0 ) )
251264 const [ backing , overCollateralization ] = await facade . callStatic . backingOverview (
252265 rToken . address
253266 )
254267
255268 // Check values - Fully collateralized and no over-collateralization
256- expect ( backing ) . to . be . closeTo ( fp ( '1' ) , 10 )
269+ expect ( backing ) . to . equal ( fp ( '1' ) )
270+ expect ( overCollateralization ) . to . equal ( 0 )
271+ } )
272+
273+ it ( 'Should return backingOverview backing correctly when basket collateral is UNPRICED' , async ( ) => {
274+ await setOraclePrice ( tokenAsset . address , MAX_UINT256 . div ( 2 ) . sub ( 1 ) )
275+ await basketHandler . refreshBasket ( )
276+ const [ backing , overCollateralization ] = await facade . callStatic . backingOverview (
277+ rToken . address
278+ )
279+
280+ // Check values - Fully collateralized and no over-collateralization
281+ expect ( backing ) . to . equal ( fp ( '1' ) ) // since price is unknown for uoaHeldInBaskets
257282 expect ( overCollateralization ) . to . equal ( 0 )
258283 } )
259284
@@ -265,7 +290,7 @@ describe('FacadeRead contract', () => {
265290 )
266291
267292 // Check values - Fully collateralized and no over-collateralization
268- expect ( backing ) . to . be . closeTo ( fp ( '0' ) , 10 )
293+ expect ( backing ) . to . equal ( fp ( '1' ) )
269294 expect ( overCollateralization ) . to . equal ( 0 )
270295 } )
271296
@@ -283,7 +308,7 @@ describe('FacadeRead contract', () => {
283308 )
284309
285310 // Check values - Fully collateralized and no over-collateralization
286- expect ( backing ) . to . be . closeTo ( fp ( '1' ) , 10 )
311+ expect ( backing ) . to . equal ( fp ( '1' ) )
287312 expect ( overCollateralization ) . to . equal ( fp ( '0.5' ) )
288313
289314 // Set price to 0
@@ -294,7 +319,7 @@ describe('FacadeRead contract', () => {
294319 )
295320
296321 // Check values - Fully collateralized and no over-collateralization
297- expect ( backing2 ) . to . be . closeTo ( fp ( '1' ) , 10 )
322+ expect ( backing2 ) . to . equal ( fp ( '1' ) )
298323 expect ( overCollateralization2 ) . to . equal ( 0 )
299324 } )
300325
@@ -309,14 +334,14 @@ describe('FacadeRead contract', () => {
309334
310335 // Check values - Fully collateralized and with 50%-collateralization
311336 let [ backing , overCollateralization ] = await facade . callStatic . backingOverview ( rToken . address )
312- expect ( backing ) . to . be . closeTo ( fp ( '1' ) , 10 )
337+ expect ( backing ) . to . equal ( fp ( '1' ) )
313338 expect ( overCollateralization ) . to . equal ( fp ( '0.5' ) )
314339
315340 await setOraclePrice ( rsrAsset . address , MAX_UINT256 . div ( 2 ) . sub ( 1 ) )
316341 ; [ backing , overCollateralization ] = await facade . callStatic . backingOverview ( rToken . address )
317342
318343 // Check values - Fully collateralized and no over-collateralization
319- expect ( backing ) . to . be . closeTo ( fp ( '1' ) , 10 )
344+ expect ( backing ) . to . equal ( fp ( '1' ) )
320345 expect ( overCollateralization ) . to . equal ( 0 )
321346 } )
322347
0 commit comments