mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 19:29:06 +01:00
Anticipate review feedback for blog view models after re-basing
This commit is contained in:
@@ -3,12 +3,15 @@ package org.briarproject.briar.headless.blogs
|
||||
import com.fasterxml.jackson.databind.ObjectMapper
|
||||
import io.javalin.http.BadRequestResponse
|
||||
import io.javalin.http.Context
|
||||
import org.briarproject.bramble.api.db.DbException
|
||||
import org.briarproject.bramble.api.db.TransactionManager
|
||||
import org.briarproject.bramble.api.identity.IdentityManager
|
||||
import org.briarproject.bramble.api.system.Clock
|
||||
import org.briarproject.bramble.util.StringUtils.utf8IsTooLong
|
||||
import org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_TEXT_LENGTH
|
||||
import org.briarproject.briar.api.blog.BlogManager
|
||||
import org.briarproject.briar.api.blog.BlogPostFactory
|
||||
import org.briarproject.briar.api.blog.BlogPostHeader
|
||||
import org.briarproject.briar.headless.getFromJson
|
||||
import javax.annotation.concurrent.Immutable
|
||||
import javax.inject.Inject
|
||||
@@ -21,6 +24,7 @@ internal class BlogControllerImpl
|
||||
constructor(
|
||||
private val blogManager: BlogManager,
|
||||
private val blogPostFactory: BlogPostFactory,
|
||||
private val db: TransactionManager,
|
||||
private val identityManager: IdentityManager,
|
||||
private val objectMapper: ObjectMapper,
|
||||
private val clock: Clock
|
||||
@@ -45,8 +49,10 @@ constructor(
|
||||
val blog = blogManager.getPersonalBlog(author)
|
||||
val now = clock.currentTimeMillis()
|
||||
val post = blogPostFactory.createBlogPost(blog.id, now, null, author, text)
|
||||
blogManager.addLocalPost(post)
|
||||
val header = blogManager.getPostHeader(blog.id, post.message.id)
|
||||
val header = db.transactionWithResult<BlogPostHeader, DbException>(true) { txn ->
|
||||
blogManager.addLocalPost(txn, post)
|
||||
return@transactionWithResult blogManager.getPostHeader(txn, blog.id, post.message.id)
|
||||
}
|
||||
return ctx.json(header.output(text))
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.mockk.mockk
|
||||
import org.briarproject.bramble.api.connection.ConnectionRegistry
|
||||
import org.briarproject.bramble.api.contact.Contact
|
||||
import org.briarproject.bramble.api.contact.ContactManager
|
||||
import org.briarproject.bramble.api.db.TransactionManager
|
||||
import org.briarproject.bramble.api.identity.Author
|
||||
import org.briarproject.bramble.api.identity.IdentityManager
|
||||
import org.briarproject.bramble.api.identity.LocalAuthor
|
||||
@@ -24,6 +25,7 @@ import javax.servlet.http.HttpServletResponse
|
||||
|
||||
abstract class ControllerTest {
|
||||
|
||||
protected val db = mockk<TransactionManager>()
|
||||
protected val contactManager = mockk<ContactManager>()
|
||||
protected val conversationManager = mockk<ConversationManager>()
|
||||
protected val identityManager = mockk<IdentityManager>()
|
||||
|
||||
@@ -6,14 +6,22 @@ import io.mockk.Runs
|
||||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
import org.briarproject.briar.api.identity.AuthorInfo
|
||||
import org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES
|
||||
import io.mockk.slot
|
||||
import org.briarproject.bramble.api.db.DbCallable
|
||||
import org.briarproject.bramble.api.db.DbException
|
||||
import org.briarproject.bramble.api.db.Transaction
|
||||
import org.briarproject.bramble.api.sync.MessageId
|
||||
import org.briarproject.bramble.identity.output
|
||||
import org.briarproject.bramble.util.StringUtils.getRandomString
|
||||
import org.briarproject.briar.api.blog.*
|
||||
import org.briarproject.briar.api.blog.Blog
|
||||
import org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_TEXT_LENGTH
|
||||
import org.briarproject.briar.api.blog.BlogManager
|
||||
import org.briarproject.briar.api.blog.BlogPost
|
||||
import org.briarproject.briar.api.blog.BlogPostFactory
|
||||
import org.briarproject.briar.api.blog.BlogPostHeader
|
||||
import org.briarproject.briar.api.blog.MessageType.POST
|
||||
import org.briarproject.briar.api.identity.AuthorInfo
|
||||
import org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES
|
||||
import org.briarproject.briar.headless.ControllerTest
|
||||
import org.junit.jupiter.api.Assertions.assertThrows
|
||||
import org.junit.jupiter.api.Test
|
||||
@@ -24,7 +32,7 @@ internal class BlogControllerTest : ControllerTest() {
|
||||
private val blogPostFactory = mockk<BlogPostFactory>()
|
||||
|
||||
private val controller =
|
||||
BlogControllerImpl(blogManager, blogPostFactory, identityManager, objectMapper, clock)
|
||||
BlogControllerImpl(blogManager, blogPostFactory, db, identityManager, objectMapper, clock)
|
||||
|
||||
private val blog = Blog(group, author, false)
|
||||
private val parentId: MessageId? = null
|
||||
@@ -46,6 +54,8 @@ internal class BlogControllerTest : ControllerTest() {
|
||||
@Test
|
||||
fun testCreate() {
|
||||
val post = BlogPost(message, null, localAuthor)
|
||||
val dbSlot = slot<DbCallable<BlogPostHeader, DbException>>()
|
||||
val txn = Transaction(Object(), true)
|
||||
|
||||
every { ctx.body() } returns """{"text": "$text"}"""
|
||||
every { identityManager.localAuthor } returns localAuthor
|
||||
@@ -60,8 +70,13 @@ internal class BlogControllerTest : ControllerTest() {
|
||||
text
|
||||
)
|
||||
} returns post
|
||||
every { blogManager.addLocalPost(post) } just Runs
|
||||
every { blogManager.getPostHeader(post.message.groupId, post.message.id) } returns header
|
||||
every { db.transactionWithResult(true, capture(dbSlot)) } answers {
|
||||
dbSlot.captured.call(txn)
|
||||
}
|
||||
every { blogManager.addLocalPost(txn, post) } just Runs
|
||||
every {
|
||||
blogManager.getPostHeader(txn, post.message.groupId, post.message.id)
|
||||
} returns header
|
||||
every { ctx.json(header.output(text)) } returns ctx
|
||||
|
||||
controller.createPost(ctx)
|
||||
|
||||
Reference in New Issue
Block a user