mirror of https://github.com/usbharu/Hideout.git
test: テストを追加
This commit is contained in:
parent
0fec05fa49
commit
240b82b66c
|
@ -214,4 +214,175 @@ class MuteProcessServiceImplTest {
|
||||||
|
|
||||||
assertThat(actual).isEqualTo(FilterResult(filterQueryModel, "e t"))
|
assertThat(actual).isEqualTo(FilterResult(filterQueryModel, "e t"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun cw文字にマッチする() = runTest {
|
||||||
|
val muteProcessServiceImpl = MuteProcessServiceImpl()
|
||||||
|
|
||||||
|
val post = PostBuilder.of(overview = "mute test", text = "hello")
|
||||||
|
|
||||||
|
val filterQueryModel = FilterQueryModel(
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
"mute test",
|
||||||
|
FilterType.entries,
|
||||||
|
FilterAction.warn,
|
||||||
|
listOf(
|
||||||
|
FilterKeyword(
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
"e\\st",
|
||||||
|
FilterMode.REGEX
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val actual = muteProcessServiceImpl.processMute(
|
||||||
|
post, FilterType.entries.toList(), listOf(
|
||||||
|
filterQueryModel
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(actual).isEqualTo(FilterResult(filterQueryModel, "e t"))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun 文字列と単語と正規表現を同時に使える() = runTest {
|
||||||
|
val muteProcessServiceImpl = MuteProcessServiceImpl()
|
||||||
|
|
||||||
|
val post = PostBuilder.of(text = "mute test")
|
||||||
|
|
||||||
|
val filterQueryModel = FilterQueryModel(
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
"mute test",
|
||||||
|
FilterType.entries,
|
||||||
|
FilterAction.warn,
|
||||||
|
listOf(
|
||||||
|
FilterKeyword(
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
"e\\st",
|
||||||
|
FilterMode.REGEX
|
||||||
|
),
|
||||||
|
FilterKeyword(
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
"mute",
|
||||||
|
FilterMode.NONE
|
||||||
|
),
|
||||||
|
FilterKeyword(
|
||||||
|
3,
|
||||||
|
1,
|
||||||
|
"test",
|
||||||
|
FilterMode.WHOLE_WORD
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val actual = muteProcessServiceImpl.processMute(
|
||||||
|
post, FilterType.entries.toList(), listOf(
|
||||||
|
filterQueryModel
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(actual).isEqualTo(FilterResult(filterQueryModel, "mute"))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun 複数の投稿を処理できる() = runTest {
|
||||||
|
val muteProcessServiceImpl = MuteProcessServiceImpl()
|
||||||
|
|
||||||
|
|
||||||
|
val filterQueryModel = FilterQueryModel(
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
"mute test",
|
||||||
|
FilterType.entries,
|
||||||
|
FilterAction.warn,
|
||||||
|
listOf(
|
||||||
|
FilterKeyword(
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
"mute",
|
||||||
|
FilterMode.NONE
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val posts = listOf(
|
||||||
|
PostBuilder.of(text = "mute"), PostBuilder.of(text = "mutes"), PostBuilder.of(text = "hoge")
|
||||||
|
)
|
||||||
|
val actual = muteProcessServiceImpl.processMutes(
|
||||||
|
posts,
|
||||||
|
FilterType.entries.toList(),
|
||||||
|
listOf(
|
||||||
|
filterQueryModel
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(actual)
|
||||||
|
.hasSize(2)
|
||||||
|
.containsEntry(posts[0], FilterResult(filterQueryModel, "mute"))
|
||||||
|
.containsEntry(posts[1], FilterResult(filterQueryModel, "mute"))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun 何もマッチしないとnullが返ってくる() = runTest {
|
||||||
|
val muteProcessServiceImpl = MuteProcessServiceImpl()
|
||||||
|
|
||||||
|
val post = PostBuilder.of(text = "mute test")
|
||||||
|
|
||||||
|
val filterQueryModel = FilterQueryModel(
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
"mute test",
|
||||||
|
FilterType.entries,
|
||||||
|
FilterAction.warn,
|
||||||
|
listOf(
|
||||||
|
FilterKeyword(
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
"fuga",
|
||||||
|
FilterMode.NONE
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val actual = muteProcessServiceImpl.processMute(
|
||||||
|
post, FilterType.entries.toList(), listOf(
|
||||||
|
filterQueryModel
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(actual).isNull()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun Cwで何もマッチしないと本文を確認する() = runTest {
|
||||||
|
val muteProcessServiceImpl = MuteProcessServiceImpl()
|
||||||
|
|
||||||
|
val post = PostBuilder.of(overview = "hage", text = "mute test")
|
||||||
|
|
||||||
|
val filterQueryModel = FilterQueryModel(
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
"mute test",
|
||||||
|
FilterType.entries,
|
||||||
|
FilterAction.warn,
|
||||||
|
listOf(
|
||||||
|
FilterKeyword(
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
"fuga",
|
||||||
|
FilterMode.NONE
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val actual = muteProcessServiceImpl.processMute(
|
||||||
|
post, FilterType.entries.toList(), listOf(
|
||||||
|
filterQueryModel
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(actual).isNull()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,96 @@
|
||||||
|
package dev.usbharu.hideout.core.service.filter
|
||||||
|
|
||||||
|
import dev.usbharu.hideout.core.domain.model.filter.*
|
||||||
|
import dev.usbharu.hideout.core.domain.model.filterkeyword.FilterKeywordRepository
|
||||||
|
import dev.usbharu.hideout.core.query.model.FilterQueryModel
|
||||||
|
import dev.usbharu.hideout.core.query.model.FilterQueryService
|
||||||
|
import kotlinx.coroutines.test.runTest
|
||||||
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith
|
||||||
|
import org.mockito.InjectMocks
|
||||||
|
import org.mockito.Mock
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension
|
||||||
|
import org.mockito.kotlin.*
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension::class)
|
||||||
|
class MuteServiceImplTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var filterRepository: FilterRepository
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var filterKeywordRepository: FilterKeywordRepository
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var filterQueryService: FilterQueryService
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private lateinit var muteServiceImpl: MuteServiceImpl
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun createFilter() = runTest {
|
||||||
|
whenever(filterRepository.generateId()).doReturn(1)
|
||||||
|
whenever(filterKeywordRepository.generateId()).doReturn(1)
|
||||||
|
|
||||||
|
whenever(filterRepository.save(any())).doAnswer { it.arguments[0]!! as Filter }
|
||||||
|
|
||||||
|
val createFilter = muteServiceImpl.createFilter(
|
||||||
|
title = "hoge",
|
||||||
|
context = listOf(FilterType.home, FilterType.public),
|
||||||
|
action = FilterAction.warn,
|
||||||
|
keywords = listOf(
|
||||||
|
FilterKeyword(
|
||||||
|
"fuga",
|
||||||
|
FilterMode.NONE
|
||||||
|
)
|
||||||
|
),
|
||||||
|
loginUser = 1
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(createFilter).isEqualTo(
|
||||||
|
FilterQueryModel(
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
"hoge",
|
||||||
|
listOf(FilterType.home, FilterType.public),
|
||||||
|
FilterAction.warn,
|
||||||
|
keywords = listOf(
|
||||||
|
dev.usbharu.hideout.core.domain.model.filterkeyword.FilterKeyword(1, 1, "fuga", FilterMode.NONE)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun getFilters() = runTest {
|
||||||
|
whenever(filterQueryService.findByUserIdAndType(any(), any())).doReturn(
|
||||||
|
listOf(
|
||||||
|
FilterQueryModel(
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
"hoge",
|
||||||
|
listOf(FilterType.home),
|
||||||
|
FilterAction.warn,
|
||||||
|
listOf(
|
||||||
|
dev.usbharu.hideout.core.domain.model.filterkeyword.FilterKeyword(
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
"fuga",
|
||||||
|
FilterMode.NONE
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
muteServiceImpl.getFilters(1, listOf(FilterType.home))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `getFilters 何も指定しない`() = runTest {
|
||||||
|
whenever(filterQueryService.findByUserIdAndType(any(), eq(emptyList()))).doReturn(emptyList())
|
||||||
|
|
||||||
|
muteServiceImpl.getFilters(1)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue