import com.google.common.eventbus.EventBus
import freenet.clients.http.ToadletContext
+import freenet.l10n.BaseL10n
import freenet.support.SimpleReadOnlyArrayBucket
import freenet.support.api.HTTPRequest
import net.pterodactylus.sone.core.Core
import net.pterodactylus.sone.core.ElementLoader
import net.pterodactylus.sone.core.LinkedElement
import net.pterodactylus.sone.core.Preferences
+import net.pterodactylus.sone.core.UpdateChecker
import net.pterodactylus.sone.data.Album
import net.pterodactylus.sone.data.Image
import net.pterodactylus.sone.data.Post
import net.pterodactylus.sone.data.Sone
import net.pterodactylus.sone.data.Sone.SoneStatus
import net.pterodactylus.sone.data.Sone.SoneStatus.idle
+import net.pterodactylus.sone.data.SoneOptions.DefaultSoneOptions
import net.pterodactylus.sone.test.deepMock
import net.pterodactylus.sone.test.get
import net.pterodactylus.sone.test.mock
import net.pterodactylus.sone.web.WebInterface
import net.pterodactylus.sone.web.page.FreenetRequest
import net.pterodactylus.util.notify.Notification
+import net.pterodactylus.util.template.TemplateContextFactory
import net.pterodactylus.util.web.Method.GET
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.equalTo
pageSupplier: (WebInterface) -> JsonPage = { _ -> mock<JsonPage>() }) {
protected val webInterface = mock<WebInterface>()
+ protected val l10n = mock<BaseL10n>()
protected val core = mock<Core>()
protected val eventBus = mock<EventBus>()
protected val preferences = Preferences(eventBus)
+ protected val updateChecker = mock<UpdateChecker>()
protected val elementLoader = mock<ElementLoader>()
protected open val page: JsonPage by lazy { pageSupplier(webInterface) }
protected val json by lazy { page.createJsonObject(freenetRequest) }
private val notifications = mutableMapOf<String, Notification>()
private val albums = mutableMapOf<String, Album>()
private val images = mutableMapOf<String, Image>()
+ private val translations = mutableMapOf<String, String>()
@Before
fun setupWebInterface() {
+ whenever(webInterface.templateContextFactory).thenReturn(TemplateContextFactory())
whenever(webInterface.getCurrentSone(eq(toadletContext), anyBoolean())).thenReturn(currentSone)
whenever(webInterface.getCurrentSoneCreatingSession(toadletContext)).thenReturn(currentSone)
whenever(webInterface.getCurrentSoneWithoutCreatingSession(toadletContext)).thenReturn(currentSone)
whenever(webInterface.getNotification(anyString())).then { notifications[it[0]].asOptional() }
whenever(webInterface.getNewPosts(currentSone)).thenAnswer { newPosts.values }
whenever(webInterface.getNewReplies(currentSone)).thenAnswer { newReplies.values }
+ whenever(webInterface.l10n).thenReturn(l10n)
+ }
+
+ @Before
+ fun setupTranslations() {
+ whenever(l10n.getString(anyString())).then { translations[it[0]] }
}
@Before
fun setupCore() {
whenever(core.preferences).thenReturn(preferences)
+ whenever(core.updateChecker).thenReturn(updateChecker)
whenever(core.getSone(anyString())).thenAnswer { (localSones + remoteSones)[it.getArgument(0)].asOptional() }
whenever(core.getLocalSone(anyString())).thenAnswer { localSones[it[0]] }
whenever(core.getPost(anyString())).thenAnswer { (posts + newPosts)[it[0]].asOptional() }
@Before
fun setupCurrentSone() {
+ whenever(currentSone.options).thenReturn(DefaultSoneOptions())
currentSone.mock("soneId", "Sone_Id", true, 1000, idle)
}
images[imageId ?: image.id] = image
}
+ protected fun addTranslation(key: String, value: String) {
+ translations[key] = value
+ }
+
@Test
fun `page returns correct path`() {
assertThat(page.path, equalTo(expectedPath))