Add test avoid duplicates with same zap request

This commit is contained in:
Chemaclass
2023-03-05 23:28:39 +01:00
parent f18ea8cf76
commit 53e520ee8a

View File

@@ -1,11 +1,14 @@
package com.vitorpamplona.amethyst.service.zaps package com.vitorpamplona.amethyst.service.zaps
import com.vitorpamplona.amethyst.model.HexKey
import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.service.model.EventInterface import com.vitorpamplona.amethyst.service.model.LnZapEventInterface
import com.vitorpamplona.amethyst.service.model.zaps.UserZaps import com.vitorpamplona.amethyst.service.model.zaps.UserZaps
import io.mockk.* import io.mockk.every
import io.mockk.mockk
import org.junit.Assert import org.junit.Assert
import org.junit.Test import org.junit.Test
import java.math.BigDecimal
class UserZapsTest { class UserZapsTest {
@Test @Test
@@ -21,36 +24,33 @@ class UserZapsTest {
} }
@Test @Test
fun group_by_user_with_just_one_user() { fun avoid_duplicates_with_same_zap_request() {
val u1 = mockk<Note>() val zapRequest = mockk<Note>()
val z1 = mockk<Note>()
val z2 = mockk<Note>() val zaps: Map<Note, Note?> = mapOf(
val zaps: Map<Note, Note?> = mapOf(u1 to z1, u1 to z2) zapRequest to mockZapNoteWith("user-1", amount = 100),
val actual = UserZaps.groupByUser(zaps) zapRequest to mockZapNoteWith("user-1", amount = 200),
)
Assert.assertEquals(listOf(Pair(u1, z2)), actual)
}
@Test
fun group_by_user() {
// FIXME: not working yet...
// IDEA:
// [ (u1 -> z1) (u1 -> z2) (u2 -> z3) ]
// [ (u1 -> z1 + z2) (u2 -> z3)]
val u1 = mockk<Note>()
val u2 = mockk<Note>()
val z1 = mockk<Note>()
val z2 = mockk<Note>()
val z3 = mockk<Note>()
every { z3.event } returns mockk<EventInterface>()
val zaps: Map<Note, Note?> = mapOf(u1 to z1, u1 to z2, u2 to z3)
val actual = UserZaps.groupByUser(zaps) val actual = UserZaps.groupByUser(zaps)
Assert.assertEquals(1, actual.count())
Assert.assertEquals(zapRequest, actual.first().first)
Assert.assertEquals( Assert.assertEquals(
listOf(Pair(u1, z1), Pair(u1, z2), Pair(u2, z3)), BigDecimal(200),
actual (actual.first().second.event as LnZapEventInterface).amount()
) )
} }
private fun mockZapNoteWith(pubkey: HexKey, amount: Int): Note {
val lnZapEvent = mockk<LnZapEventInterface>()
every { lnZapEvent.amount() } returns amount.toBigDecimal()
every { lnZapEvent.pubKey() } returns pubkey
val zapNote = mockk<Note>()
every { zapNote.event } returns lnZapEvent
return zapNote
}
} }