Skip to content

Commit 7c30c56

Browse files
committed
added test case
1 parent 4a4060e commit 7c30c56

25 files changed

Lines changed: 713 additions & 0 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.muryno.data.model
2+
3+
import org.junit.Assert.*
4+
import org.junit.Test
5+
6+
class ReleaseDataModelTest {
7+
@Test
8+
fun `test data model creation`() {
9+
val model = ReleaseDataModel(
10+
id = "test-id",
11+
title = "Test Title",
12+
releaseDate = "2023-01-01",
13+
country = "US",
14+
barcode = "123456789",
15+
status = "Official",
16+
statusId = "status-id",
17+
disambiguation = "Test",
18+
score = 100
19+
)
20+
21+
assertEquals("test-id", model.id)
22+
assertEquals("Test Title", model.title)
23+
assertEquals("2023-01-01", model.releaseDate)
24+
assertEquals("US", model.country)
25+
assertEquals(100, model.score)
26+
}
27+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.muryno.release_datasource.api
2+
3+
import org.junit.Test
4+
5+
class ReleaseApiServiceTest {
6+
@Test
7+
fun `test service interface exists`() {
8+
assertNotNull(ReleaseApiService::class.java)
9+
}
10+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.muryno.domain.release.usecase
2+
3+
import com.muryno.domain.cleanarchitecture.coroutine.CoroutineContextProvider
4+
import com.muryno.domain.cleanarchitecture.usecase.BackgroundUseCaseExecutor
5+
import com.muryno.domain.release.model.ReleaseDomainModel
6+
import com.muryno.domain.release.repository.ReleaseRepository
7+
8+
class ReleaseByIdUseCaseExecutor(
9+
private val repository: ReleaseRepository,
10+
coroutineContextProvider: CoroutineContextProvider
11+
) : BackgroundUseCaseExecutor<String, ReleaseDomainModel?>(coroutineContextProvider) {
12+
override suspend fun executeInBackground(request: String): ReleaseDomainModel? {
13+
return repository.getReleaseById(request)
14+
}
15+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.muryno.domain.release
2+
3+
import com.muryno.domain.cleanarchitecture.coroutine.CoroutineContextProvider
4+
import com.muryno.domain.release.model.ReleaseDomainModel
5+
import com.muryno.domain.release.repository.ReleaseRepository
6+
import com.muryno.domain.release.usecase.ReleaseByIdUseCaseExecutor
7+
import kotlinx.coroutines.runBlocking
8+
import org.junit.Before
9+
import org.junit.Test
10+
import org.mockito.Mock
11+
import org.mockito.Mockito.*
12+
import org.mockito.MockitoAnnotations
13+
14+
class ReleaseByIdUseCaseTest {
15+
@Mock
16+
private lateinit var repository: ReleaseRepository
17+
18+
@Mock
19+
private lateinit var coroutineContextProvider: CoroutineContextProvider
20+
21+
private lateinit var useCase: ReleaseByIdUseCaseExecutor
22+
23+
@Before
24+
fun setup() {
25+
MockitoAnnotations.openMocks(this)
26+
useCase = ReleaseByIdUseCaseExecutor(repository, coroutineContextProvider)
27+
}
28+
29+
@Test
30+
fun `test execute calls repository`() = runBlocking {
31+
val domainModel = ReleaseDomainModel(
32+
id = "1",
33+
title = "Test",
34+
releaseDate = "",
35+
country = "",
36+
barcode = "",
37+
status = "",
38+
statusId = "",
39+
disambiguation = "",
40+
score = 0
41+
)
42+
43+
`when`(repository.getReleaseById("1")).thenReturn(domainModel)
44+
45+
val result = useCase.execute("1")
46+
47+
assertNotNull(result)
48+
verify(repository).getReleaseById("1")
49+
}
50+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.muryno.domain.release
2+
3+
import com.muryno.domain.release.model.ReleaseDomainModel
4+
import com.muryno.domain.release.repository.ReleaseRepository
5+
import kotlinx.coroutines.runBlocking
6+
import org.junit.Before
7+
import org.junit.Test
8+
import org.mockito.Mock
9+
import org.mockito.Mockito.*
10+
import org.mockito.MockitoAnnotations
11+
12+
class ReleaseRepositoryTest {
13+
@Mock
14+
private lateinit var repository: ReleaseRepository
15+
16+
@Before
17+
fun setup() {
18+
MockitoAnnotations.openMocks(this)
19+
}
20+
21+
@Test
22+
fun `test getReleaseById`() = runBlocking {
23+
val domainModel = ReleaseDomainModel(
24+
id = "1",
25+
title = "Test",
26+
releaseDate = "",
27+
country = "",
28+
barcode = "",
29+
status = "",
30+
statusId = "",
31+
disambiguation = "",
32+
score = 0
33+
)
34+
35+
`when`(repository.getReleaseById("1")).thenReturn(domainModel)
36+
37+
val result = repository.getReleaseById("1")
38+
39+
assertNotNull(result)
40+
verify(repository).getReleaseById("1")
41+
}
42+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.muryno.domain.release.model
2+
3+
import org.junit.Assert.*
4+
import org.junit.Test
5+
6+
class ReleaseDomainModelTest {
7+
@Test
8+
fun `test domain model creation`() {
9+
val model = ReleaseDomainModel(
10+
id = "test-id",
11+
title = "Test Title",
12+
releaseDate = "2023-01-01",
13+
country = "US",
14+
barcode = "123456789",
15+
status = "Official",
16+
statusId = "status-id",
17+
disambiguation = "Test",
18+
score = 100
19+
)
20+
21+
assertEquals("test-id", model.id)
22+
assertEquals("Test Title", model.title)
23+
assertEquals("2023-01-01", model.releaseDate)
24+
assertEquals("US", model.country)
25+
assertEquals(100, model.score)
26+
}
27+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.muryno.data.model
2+
3+
import org.junit.Assert.*
4+
import org.junit.Test
5+
6+
class ReleaseGroupDataModelTest {
7+
@Test
8+
fun `test data model creation`() {
9+
val model = ReleaseGroupDataModel(
10+
id = "test-id",
11+
title = "Test Title",
12+
firstReleaseDate = "2023-01-01",
13+
primaryType = "Album",
14+
primaryTypeId = "type-id",
15+
secondaryTypes = listOf("Live"),
16+
disambiguation = "Test",
17+
score = 100
18+
)
19+
20+
assertEquals("test-id", model.id)
21+
assertEquals("Test Title", model.title)
22+
assertEquals("2023-01-01", model.firstReleaseDate)
23+
assertEquals("Album", model.primaryType)
24+
assertEquals(100, model.score)
25+
}
26+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.muryno.release_group_datasource.api
2+
3+
import org.junit.Test
4+
5+
class ReleaseGroupApiServiceTest {
6+
@Test
7+
fun `test service interface exists`() {
8+
// Verify the interface is properly defined
9+
assertNotNull(ReleaseGroupApiService::class.java)
10+
}
11+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.muryno.domain.releasegroup.usecase
2+
3+
import com.muryno.domain.cleanarchitecture.coroutine.CoroutineContextProvider
4+
import com.muryno.domain.cleanarchitecture.usecase.BackgroundUseCaseExecutor
5+
import com.muryno.domain.releasegroup.model.ReleaseGroupDomainModel
6+
import com.muryno.domain.releasegroup.repository.ReleaseGroupRepository
7+
8+
class ReleaseGroupByIdUseCaseExecutor(
9+
private val repository: ReleaseGroupRepository,
10+
coroutineContextProvider: CoroutineContextProvider
11+
) : BackgroundUseCaseExecutor<String, ReleaseGroupDomainModel?>(coroutineContextProvider) {
12+
override suspend fun executeInBackground(request: String): ReleaseGroupDomainModel? {
13+
return repository.getReleaseGroupById(request)
14+
}
15+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.muryno.domain.releasegroup
2+
3+
import com.muryno.domain.cleanarchitecture.coroutine.CoroutineContextProvider
4+
import com.muryno.domain.releasegroup.model.ReleaseGroupDomainModel
5+
import com.muryno.domain.releasegroup.repository.ReleaseGroupRepository
6+
import com.muryno.domain.releasegroup.usecase.ReleaseGroupByIdUseCaseExecutor
7+
import kotlinx.coroutines.runBlocking
8+
import org.junit.Before
9+
import org.junit.Test
10+
import org.mockito.Mock
11+
import org.mockito.Mockito.*
12+
import org.mockito.MockitoAnnotations
13+
14+
class ReleaseGroupByIdUseCaseTest {
15+
@Mock
16+
private lateinit var repository: ReleaseGroupRepository
17+
18+
@Mock
19+
private lateinit var coroutineContextProvider: CoroutineContextProvider
20+
21+
private lateinit var useCase: ReleaseGroupByIdUseCaseExecutor
22+
23+
@Before
24+
fun setup() {
25+
MockitoAnnotations.openMocks(this)
26+
useCase = ReleaseGroupByIdUseCaseExecutor(repository, coroutineContextProvider)
27+
}
28+
29+
@Test
30+
fun `test execute calls repository`() = runBlocking {
31+
val domainModel = ReleaseGroupDomainModel(
32+
id = "1",
33+
title = "Test",
34+
firstReleaseDate = "",
35+
primaryType = "",
36+
primaryTypeId = "",
37+
secondaryTypes = emptyList(),
38+
disambiguation = "",
39+
score = 0
40+
)
41+
42+
`when`(repository.getReleaseGroupById("1")).thenReturn(domainModel)
43+
44+
val result = useCase.execute("1")
45+
46+
assertNotNull(result)
47+
verify(repository).getReleaseGroupById("1")
48+
}
49+
}

0 commit comments

Comments
 (0)