Anticipate review feedback for blog view models after re-basing

This commit is contained in:
Torsten Grote
2021-01-29 14:21:43 -03:00
parent 95104d3383
commit d3b855318c
12 changed files with 107 additions and 123 deletions

View File

@@ -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))
}

View File

@@ -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>()

View File

@@ -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)