Skip to content
This repository has been archived by the owner on Oct 23, 2023. It is now read-only.

Commit

Permalink
test(desktop): in UseCaseTest update with Result<T>
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreaBrighi committed May 18, 2023
1 parent 3703e83 commit 7ac869c
Showing 1 changed file with 32 additions and 135 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,32 +53,21 @@ class UseCaseTest : StringSpec({
schoolSupplies = setOf(bookCopy1),
schoolSuppliesInBackpack = setOf(),
)
coEvery {
accessUseCase.automaticLogin(any(), any())
} answers {
firstArg<(User) -> Unit>().invoke(user)
}
coEvery { accessUseCase.getLoggedUser() } returns Result.success(user)
val useCase = DesktopUseCase(accessUseCase, repository)
coEvery {
repository.getDesktop(any())
} returns (desktop)
useCase.getDesktop({
it shouldBe desktop
}, {
assert(false)
})
coEvery { repository.getDesktop(any()) } returns (desktop)
val result = useCase.getDesktop()
println(result)
result.isSuccess shouldBe true
result.getOrNull() shouldBe desktop
}

"Add a School Supply to Desktop" {
val desktop = Desktop.create(
schoolSupplies = setOf(bookCopy1),
schoolSuppliesInBackpack = setOf(),
)
coEvery {
accessUseCase.automaticLogin(any(), any())
} answers {
firstArg<(User) -> Unit>().invoke(user)
}
coEvery { accessUseCase.getLoggedUser() } returns Result.success(user)
val useCase = DesktopUseCase(accessUseCase, repository)
coEvery {
repository.getDesktop(any())
Expand All @@ -89,63 +78,33 @@ class UseCaseTest : StringSpec({
schoolSupply = any(),
)
} returns (desktop.schoolSupplies + bookCopy2)
useCase.addSchoolSupply(
schoolSupply = bookCopy2,
success = {
it.schoolSupplies shouldBe setOf(bookCopy1, bookCopy2)
},
error = { assert(false) },
)
useCase.addSchoolSupply(schoolSupply = bookCopy2).getOrNull() shouldBe desktop.schoolSupplies + bookCopy2
}

"Get School Supplies in Desktop" {
val desktop = Desktop.create(
schoolSupplies = setOf(bookCopy1),
schoolSuppliesInBackpack = setOf(),
)
coEvery {
accessUseCase.automaticLogin(any(), any())
} answers {
firstArg<(User) -> Unit>().invoke(user)
}
coEvery { accessUseCase.getLoggedUser() } returns Result.success(user)
val useCase = DesktopUseCase(accessUseCase, repository)
coEvery {
repository.getDesktop(any())
} returns (desktop)
useCase.getSchoolSupply(
rfid = rfidCode1,
success = {
it shouldBe bookCopy1
},
error = {
assert(false)
},
)
useCase.getSchoolSupply(rfid = rfidCode1).getOrNull() shouldBe bookCopy1
}

"Try get a School Supplies not in Desktop" {
val desktop = Desktop.create(
schoolSupplies = setOf(bookCopy1),
schoolSuppliesInBackpack = setOf(),
)
coEvery {
accessUseCase.automaticLogin(any(), any())
} answers {
firstArg<(User) -> Unit>().invoke(user)
}
coEvery { accessUseCase.getLoggedUser() } returns Result.success(user)
val useCase = DesktopUseCase(accessUseCase, repository)
coEvery {
repository.getDesktop(any())
} returns (desktop)
useCase.getSchoolSupply(
rfid = rfidCode2,
success = {
it shouldBe null
},
error = {
assert(false)
},
)
useCase.getSchoolSupply(rfid = rfidCode2).getOrDefault(bookCopy1) shouldBe null
}

"Subscribe to backpack" {
Expand All @@ -154,11 +113,7 @@ class UseCaseTest : StringSpec({
schoolSuppliesInBackpack = setOf(),
backpack = "backpack",
)
coEvery {
accessUseCase.automaticLogin(any(), any())
} answers {
firstArg<(User) -> Unit>().invoke(user)
}
coEvery { accessUseCase.getLoggedUser() } returns Result.success(user)
val useCase = DesktopUseCase(accessUseCase, repository)
val order: List<Set<SchoolSupply>> =
listOf(setOf(bookCopy1), setOf(), setOf(bookCopy2), setOf(), setOf(bookCopy1, bookCopy2))
Expand All @@ -176,106 +131,68 @@ class UseCaseTest : StringSpec({
} answers {
rfidFlow
}
useCase.subscribeToBackpack({ flow ->
useCase.subscribeToBackpack().getOrNull()?.let { flow ->
runBlocking {
val result = flow.onEach { delay(200) }.toList()
result shouldBe listOf(setOf(bookCopy1), setOf(bookCopy1, bookCopy2))
}
}, {
assert(false)
})
}
}

"Delete desktop" {
val desktop = Desktop.create(
schoolSupplies = setOf(bookCopy1, bookCopy2),
schoolSuppliesInBackpack = setOf(),
)
coEvery {
accessUseCase.automaticLogin(any(), any())
} answers {
firstArg<(User) -> Unit>().invoke(user)
}
coEvery { accessUseCase.getLoggedUser() } returns Result.success(user)
val useCase = DesktopUseCase(accessUseCase, repository)
coEvery {
repository.getDesktop(any())
} returns (desktop)
useCase.getDesktop({
it shouldBe desktop
}, {
assert(false)
})
useCase.getDesktop().getOrNull() shouldBe desktop
coEvery {
repository.logoutDesktop(any())
} answers {}
coEvery {
repository.getDesktop(any())
} returns (Desktop.create())
useCase.logoutDesktop({
runBlocking {
useCase.getDesktop({
it.schoolSupplies shouldBe setOf()
}, {
assert(false)
})
}
}, {
assert(false)
})
useCase.logoutDesktop().getOrNull()
useCase.getDesktop().getOrNull()!!.schoolSupplies shouldBe emptySet()
}

"Associate backpack" {
val desktop = Desktop.create(
schoolSupplies = setOf(bookCopy1, bookCopy2),
schoolSuppliesInBackpack = setOf(),
)
coEvery {
accessUseCase.automaticLogin(any(), any())
} answers {
firstArg<(User) -> Unit>().invoke(user)
}
coEvery { accessUseCase.getLoggedUser() } returns Result.success(user)
val useCase = DesktopUseCase(accessUseCase, repository)
coEvery {
repository.getDesktop(any())
} returns (desktop)
coEvery {
repository.associateBackpack(any(), any())
} returns (backpack)
useCase.associateBackpack(backpack, {
runBlocking {
useCase.getDesktop({
it.isBackpackAssociated shouldBe true
}, {
assert(false)
})
}
}, {
assert(false)
})
useCase.associateBackpack(backpack).getOrNull()
desktop.isBackpackAssociated shouldBe true
}

"Associate backpack with error" {
val desktop = Desktop.create(
schoolSupplies = setOf(bookCopy1, bookCopy2),
schoolSuppliesInBackpack = setOf(),
)
coEvery {
accessUseCase.automaticLogin(any(), any())
} answers {
firstArg<(User) -> Unit>().invoke(user)
}
coEvery { accessUseCase.getLoggedUser() } returns Result.success(user)
val useCase = DesktopUseCase(accessUseCase, repository)
coEvery {
repository.getDesktop(any())
} returns (desktop)
coEvery {
repository.associateBackpack(any(), any())
} throws (Exception())
useCase.associateBackpack(backpack, {
assert(false)
}, {
desktop.isBackpackAssociated shouldBe false
})
val result = useCase.associateBackpack(backpack)
result.isFailure shouldBe true
desktop.isBackpackAssociated shouldBe false
}

"Disassociate backpack" {
Expand All @@ -284,29 +201,16 @@ class UseCaseTest : StringSpec({
schoolSuppliesInBackpack = setOf(),
backpack = backpack,
)
coEvery {
accessUseCase.automaticLogin(any(), any())
} answers {
firstArg<(User) -> Unit>().invoke(user)
}
coEvery { accessUseCase.getLoggedUser() } returns Result.success(user)
val useCase = DesktopUseCase(accessUseCase, repository)
coEvery {
repository.getDesktop(any())
} returns (desktop)
coEvery {
repository.disassociateBackpack(any(), any())
} returns (backpack)
useCase.disassociateBackpack(backpack, {
runBlocking {
useCase.getDesktop({
it.isBackpackAssociated shouldBe false
}, {
assert(false)
})
}
}, {
assert(false)
})
useCase.disassociateBackpack(backpack).getOrNull()
desktop.isBackpackAssociated shouldBe false
}

"Disassociate backpack with error" {
Expand All @@ -315,22 +219,15 @@ class UseCaseTest : StringSpec({
schoolSuppliesInBackpack = setOf(),
backpack = backpack,
)
coEvery {
accessUseCase.automaticLogin(any(), any())
} answers {
firstArg<(User) -> Unit>().invoke(user)
}
coEvery { accessUseCase.getLoggedUser() } returns Result.success(user)
val useCase = DesktopUseCase(accessUseCase, repository)
coEvery {
repository.getDesktop(any())
} returns (desktop)
coEvery {
repository.disassociateBackpack(any(), any())
} throws (Exception())
useCase.disassociateBackpack(backpack, {
assert(false)
}, {
desktop.isBackpackAssociated shouldBe true
})
useCase.disassociateBackpack(backpack).getOrNull()
desktop.isBackpackAssociated shouldBe true
}
})

0 comments on commit 7ac869c

Please sign in to comment.