@@ -14,44 +14,63 @@ class UsernameGateTest {
1414 fun `a claimed handle spends the nudge, whatever the balance` () {
1515 assertEquals(
1616 UsernameGate .Claimed ,
17- usernameGate(username = " mcansh" , minimum = usd(25.0 ), balance = Fiat .Zero ),
17+ usernameGate(username = " mcansh" , isAutoAssigned = false , minimum = usd(25.0 ), balance = Fiat .Zero ),
1818 )
1919 }
2020
2121 @Test
2222 fun `a blank handle counts as unclaimed` () {
2323 assertIs<UsernameGate .Locked >(
24- usernameGate(username = " " , minimum = usd(25.0 ), balance = Fiat .Zero ),
24+ usernameGate(username = " " , isAutoAssigned = false , minimum = usd(25.0 ), balance = Fiat .Zero ),
25+ )
26+ }
27+
28+ @Test
29+ fun `an auto-assigned handle still counts as unclaimed` () {
30+ assertIs<UsernameGate .Locked >(
31+ usernameGate(username = " user4821" , isAutoAssigned = true , minimum = usd(25.0 ), balance = Fiat .Zero ),
32+ )
33+ }
34+
35+ @Test
36+ fun `an auto-assigned handle follows the balance rules of no handle` () {
37+ assertEquals(
38+ UsernameGate .Unlocked ,
39+ usernameGate(username = " user4821" , isAutoAssigned = true , minimum = usd(25.0 ), balance = usd(25.0 )),
40+ )
41+ assertEquals(
42+ UsernameGate .Unlocked ,
43+ usernameGate(username = " user4821" , isAutoAssigned = true , minimum = Fiat .Zero , balance = Fiat .Zero ),
2544 )
2645 }
2746
2847 @Test
2948 fun `a zero minimum fails open` () {
3049 assertEquals(
3150 UsernameGate .Unlocked ,
32- usernameGate(username = null , minimum = Fiat .Zero , balance = Fiat .Zero ),
51+ usernameGate(username = null , isAutoAssigned = false , minimum = Fiat .Zero , balance = Fiat .Zero ),
3352 )
3453 }
3554
3655 @Test
3756 fun `exactly the minimum unlocks` () {
3857 assertEquals(
3958 UsernameGate .Unlocked ,
40- usernameGate(username = null , minimum = usd(25.0 ), balance = usd(25.0 )),
59+ usernameGate(username = null , isAutoAssigned = false , minimum = usd(25.0 ), balance = usd(25.0 )),
4160 )
4261 }
4362
4463 @Test
4564 fun `above the minimum unlocks` () {
4665 assertEquals(
4766 UsernameGate .Unlocked ,
48- usernameGate(username = null , minimum = usd(25.0 ), balance = usd(25.01 )),
67+ usernameGate(username = null , isAutoAssigned = false , minimum = usd(25.0 ), balance = usd(25.01 )),
4968 )
5069 }
5170
5271 @Test
5372 fun `below the minimum reports the shortfall and how far along it is` () {
54- val gate = usernameGate(username = null , minimum = usd(25.0 ), balance = usd(20.0 ))
73+ val gate = usernameGate(username = null , isAutoAssigned = false , minimum = usd(25.0 ), balance = usd(20.0 ))
5574
5675 assertIs<UsernameGate .Locked >(gate)
5776 assertEquals(usd(25.0 ), gate.minimum)
@@ -61,7 +80,7 @@ class UsernameGateTest {
6180
6281 @Test
6382 fun `an empty balance is zero progress, not a divide by zero` () {
64- val gate = usernameGate(username = null , minimum = usd(25.0 ), balance = Fiat .Zero )
83+ val gate = usernameGate(username = null , isAutoAssigned = false , minimum = usd(25.0 ), balance = Fiat .Zero )
6584
6685 assertIs<UsernameGate .Locked >(gate)
6786 assertEquals(usd(25.0 ), gate.shortfall)
@@ -70,7 +89,7 @@ class UsernameGateTest {
7089
7190 @Test
7291 fun `a negative balance clamps to zero progress rather than a backwards bar` () {
73- val gate = usernameGate(username = null , minimum = usd(25.0 ), balance = usd(- 5.0 ))
92+ val gate = usernameGate(username = null , isAutoAssigned = false , minimum = usd(25.0 ), balance = usd(- 5.0 ))
7493
7594 assertIs<UsernameGate .Locked >(gate)
7695 assertEquals(0f , gate.fraction)
0 commit comments