Remove MmsSmsColumns.

All the columns got moved to MessageTable.
I kept the types though and renamed the class to MessageTypes because
it's a lot of boring domain-specific code.
This commit is contained in:
Greyson Parrelli
2022-12-30 15:56:47 -05:00
parent 3708cc5583
commit f149c0adb9
32 changed files with 883 additions and 989 deletions

View File

@@ -115,7 +115,7 @@ object FakeMessageRecords {
body: String = "body",
slideDeck: SlideDeck = SlideDeck(),
partCount: Int = slideDeck.slides.count(),
mailbox: Long = MmsSmsColumns.Types.BASE_INBOX_TYPE,
mailbox: Long = MessageTypes.BASE_INBOX_TYPE,
mismatches: Set<IdentityKeyMismatch> = emptySet(),
failures: Set<NetworkFailure> = emptySet(),
subscriptionId: Int = -1,

View File

@@ -12,7 +12,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.thoughtcrime.securesms.database.MmsSmsColumns.Types
import org.thoughtcrime.securesms.database.model.StoryType
import org.thoughtcrime.securesms.database.model.StoryViewState
import org.thoughtcrime.securesms.testing.TestDatabaseUtil
@@ -40,37 +39,37 @@ class MmsDatabaseTest {
@Test
fun `isGroupQuitMessage when normal message, return false`() {
val id = TestMms.insert(db, type = Types.BASE_SENDING_TYPE or Types.SECURE_MESSAGE_BIT or Types.PUSH_MESSAGE_BIT)
val id = TestMms.insert(db, type = MessageTypes.BASE_SENDING_TYPE or MessageTypes.SECURE_MESSAGE_BIT or MessageTypes.PUSH_MESSAGE_BIT)
assertFalse(messageTable.isGroupQuitMessage(id))
}
@Test
fun `isGroupQuitMessage when legacy quit message, return true`() {
val id = TestMms.insert(db, type = Types.BASE_SENDING_TYPE or Types.SECURE_MESSAGE_BIT or Types.PUSH_MESSAGE_BIT or Types.GROUP_LEAVE_BIT)
val id = TestMms.insert(db, type = MessageTypes.BASE_SENDING_TYPE or MessageTypes.SECURE_MESSAGE_BIT or MessageTypes.PUSH_MESSAGE_BIT or MessageTypes.GROUP_LEAVE_BIT)
assertTrue(messageTable.isGroupQuitMessage(id))
}
@Test
fun `isGroupQuitMessage when GV2 leave update, return false`() {
val id = TestMms.insert(db, type = Types.BASE_SENDING_TYPE or Types.SECURE_MESSAGE_BIT or Types.PUSH_MESSAGE_BIT or Types.GROUP_LEAVE_BIT or Types.GROUP_V2_BIT or Types.GROUP_UPDATE_BIT)
val id = TestMms.insert(db, type = MessageTypes.BASE_SENDING_TYPE or MessageTypes.SECURE_MESSAGE_BIT or MessageTypes.PUSH_MESSAGE_BIT or MessageTypes.GROUP_LEAVE_BIT or MessageTypes.GROUP_V2_BIT or MessageTypes.GROUP_UPDATE_BIT)
assertFalse(messageTable.isGroupQuitMessage(id))
}
@Test
fun `getLatestGroupQuitTimestamp when only normal message, return -1`() {
TestMms.insert(db, threadId = 1, sentTimeMillis = 1, type = Types.BASE_SENDING_TYPE or Types.SECURE_MESSAGE_BIT or Types.PUSH_MESSAGE_BIT)
TestMms.insert(db, threadId = 1, sentTimeMillis = 1, type = MessageTypes.BASE_SENDING_TYPE or MessageTypes.SECURE_MESSAGE_BIT or MessageTypes.PUSH_MESSAGE_BIT)
assertEquals(-1, messageTable.getLatestGroupQuitTimestamp(1, 4))
}
@Test
fun `getLatestGroupQuitTimestamp when legacy quit, return message timestamp`() {
TestMms.insert(db, threadId = 1, sentTimeMillis = 2, type = Types.BASE_SENDING_TYPE or Types.SECURE_MESSAGE_BIT or Types.PUSH_MESSAGE_BIT or Types.GROUP_LEAVE_BIT)
TestMms.insert(db, threadId = 1, sentTimeMillis = 2, type = MessageTypes.BASE_SENDING_TYPE or MessageTypes.SECURE_MESSAGE_BIT or MessageTypes.PUSH_MESSAGE_BIT or MessageTypes.GROUP_LEAVE_BIT)
assertEquals(2, messageTable.getLatestGroupQuitTimestamp(1, 4))
}
@Test
fun `getLatestGroupQuitTimestamp when GV2 leave update message, return -1`() {
TestMms.insert(db, threadId = 1, sentTimeMillis = 3, type = Types.BASE_SENDING_TYPE or Types.SECURE_MESSAGE_BIT or Types.PUSH_MESSAGE_BIT or Types.GROUP_LEAVE_BIT or Types.GROUP_V2_BIT or Types.GROUP_UPDATE_BIT)
TestMms.insert(db, threadId = 1, sentTimeMillis = 3, type = MessageTypes.BASE_SENDING_TYPE or MessageTypes.SECURE_MESSAGE_BIT or MessageTypes.PUSH_MESSAGE_BIT or MessageTypes.GROUP_LEAVE_BIT or MessageTypes.GROUP_V2_BIT or MessageTypes.GROUP_UPDATE_BIT)
assertEquals(-1, messageTable.getLatestGroupQuitTimestamp(1, 4))
}
@@ -109,7 +108,7 @@ class MmsDatabaseTest {
@Test
fun `Given only outgoing story in database, when I getStoryViewState, then I expect VIEWED`() {
TestMms.insert(db, threadId = 1, storyType = StoryType.STORY_WITH_REPLIES, type = Types.BASE_OUTBOX_TYPE)
TestMms.insert(db, threadId = 1, storyType = StoryType.STORY_WITH_REPLIES, type = MessageTypes.BASE_OUTBOX_TYPE)
assertEquals(StoryViewState.VIEWED, messageTable.getStoryViewState(1))
}
}

View File

@@ -40,7 +40,7 @@ class MmsSmsDatabaseTest {
TestSms.insert(db)
mmsSmsTable.getConversationSnippetCursor(1).use { cursor ->
cursor.moveToFirst()
assertEquals(1, CursorUtil.requireLong(cursor, MmsSmsColumns.ID))
assertEquals(1, CursorUtil.requireLong(cursor, MessageTable.ID))
}
}
@@ -49,7 +49,7 @@ class MmsSmsDatabaseTest {
TestMms.insert(db)
mmsSmsTable.getConversationSnippetCursor(1).use { cursor ->
cursor.moveToFirst()
assertEquals(1, CursorUtil.requireLong(cursor, MmsSmsColumns.ID))
assertEquals(1, CursorUtil.requireLong(cursor, MessageTable.ID))
}
}
@@ -60,13 +60,13 @@ class MmsSmsDatabaseTest {
TestMms.insert(db, receivedTimestampMillis = timestamp + 2)
mmsSmsTable.getConversationSnippetCursor(1).use { cursor ->
cursor.moveToFirst()
assertEquals(1, CursorUtil.requireLong(cursor, MmsSmsColumns.ID))
assertEquals(1, CursorUtil.requireLong(cursor, MessageTable.ID))
}
TestSms.insert(db, receivedTimestampMillis = timestamp + 3, type = MmsSmsColumns.Types.BASE_SENDING_TYPE or MmsSmsColumns.Types.SECURE_MESSAGE_BIT or MmsSmsColumns.Types.PUSH_MESSAGE_BIT or MmsSmsColumns.Types.GROUP_V2_LEAVE_BITS)
TestSms.insert(db, receivedTimestampMillis = timestamp + 3, type = MessageTypes.BASE_SENDING_TYPE or MessageTypes.SECURE_MESSAGE_BIT or MessageTypes.PUSH_MESSAGE_BIT or MessageTypes.GROUP_V2_LEAVE_BITS)
mmsSmsTable.getConversationSnippetCursor(1).use { cursor ->
cursor.moveToFirst()
assertEquals(1, CursorUtil.requireLong(cursor, MmsSmsColumns.ID))
assertEquals(1, CursorUtil.requireLong(cursor, MessageTable.ID))
}
}
}

View File

@@ -61,7 +61,7 @@ class SmsDatabaseTest {
@Test
fun `hasMeaningfulMessage when GV2 create message only, return true`() {
TestSms.insert(db, type = MmsSmsColumns.Types.BASE_INBOX_TYPE or MmsSmsColumns.Types.SECURE_MESSAGE_BIT or MmsSmsColumns.Types.GROUP_V2_BIT or MmsSmsColumns.Types.GROUP_UPDATE_BIT)
TestSms.insert(db, type = MessageTypes.BASE_INBOX_TYPE or MessageTypes.SECURE_MESSAGE_BIT or MessageTypes.GROUP_V2_BIT or MessageTypes.GROUP_UPDATE_BIT)
assertTrue(messageTable.hasMeaningfulMessage(1))
}
@@ -69,22 +69,22 @@ class SmsDatabaseTest {
fun `hasMeaningfulMessage when empty and then with ignored types, always return false`() {
assertFalse(messageTable.hasMeaningfulMessage(1))
TestSms.insert(db, type = MmsSmsColumns.Types.IGNORABLE_TYPESMASK_WHEN_COUNTING)
TestSms.insert(db, type = MessageTypes.IGNORABLE_TYPESMASK_WHEN_COUNTING)
assertFalse(messageTable.hasMeaningfulMessage(1))
TestSms.insert(db, type = MmsSmsColumns.Types.PROFILE_CHANGE_TYPE)
TestSms.insert(db, type = MessageTypes.PROFILE_CHANGE_TYPE)
assertFalse(messageTable.hasMeaningfulMessage(1))
TestSms.insert(db, type = MmsSmsColumns.Types.CHANGE_NUMBER_TYPE)
TestSms.insert(db, type = MessageTypes.CHANGE_NUMBER_TYPE)
assertFalse(messageTable.hasMeaningfulMessage(1))
TestSms.insert(db, type = MmsSmsColumns.Types.BOOST_REQUEST_TYPE)
TestSms.insert(db, type = MessageTypes.BOOST_REQUEST_TYPE)
assertFalse(messageTable.hasMeaningfulMessage(1))
TestSms.insert(db, type = MmsSmsColumns.Types.SMS_EXPORT_TYPE)
TestSms.insert(db, type = MessageTypes.SMS_EXPORT_TYPE)
assertFalse(messageTable.hasMeaningfulMessage(1))
TestSms.insert(db, type = MmsSmsColumns.Types.BASE_INBOX_TYPE or MmsSmsColumns.Types.GROUP_V2_LEAVE_BITS)
TestSms.insert(db, type = MessageTypes.BASE_INBOX_TYPE or MessageTypes.GROUP_V2_LEAVE_BITS)
assertFalse(messageTable.hasMeaningfulMessage(1))
}
}

View File

@@ -24,7 +24,7 @@ object TestMms {
expiresIn: Long = 0,
viewOnce: Boolean = false,
distributionType: Int = ThreadTable.DistributionTypes.DEFAULT,
type: Long = MmsSmsColumns.Types.BASE_INBOX_TYPE,
type: Long = MessageTypes.BASE_INBOX_TYPE,
unread: Boolean = false,
viewed: Boolean = false,
threadId: Long = 1,
@@ -69,7 +69,7 @@ object TestMms {
message: OutgoingMessage,
recipientId: RecipientId = message.recipient.id,
body: String = message.body,
type: Long = MmsSmsColumns.Types.BASE_INBOX_TYPE,
type: Long = MessageTypes.BASE_INBOX_TYPE,
unread: Boolean = false,
viewed: Boolean = false,
threadId: Long = 1,
@@ -80,19 +80,19 @@ object TestMms {
put(MessageTable.MMS_MESSAGE_TYPE, PduHeaders.MESSAGE_TYPE_SEND_REQ)
put(MessageTable.TYPE, type)
put(MmsSmsColumns.THREAD_ID, threadId)
put(MmsSmsColumns.READ, if (unread) 0 else 1)
put(MessageTable.THREAD_ID, threadId)
put(MessageTable.READ, if (unread) 0 else 1)
put(MessageTable.DATE_RECEIVED, receivedTimestampMillis)
put(MmsSmsColumns.SMS_SUBSCRIPTION_ID, message.subscriptionId)
put(MmsSmsColumns.EXPIRES_IN, message.expiresIn)
put(MessageTable.SMS_SUBSCRIPTION_ID, message.subscriptionId)
put(MessageTable.EXPIRES_IN, message.expiresIn)
put(MessageTable.VIEW_ONCE, message.isViewOnce)
put(MmsSmsColumns.RECIPIENT_ID, recipientId.serialize())
put(MmsSmsColumns.DELIVERY_RECEIPT_COUNT, 0)
put(MmsSmsColumns.RECEIPT_TIMESTAMP, 0)
put(MmsSmsColumns.VIEWED_RECEIPT_COUNT, if (viewed) 1 else 0)
put(MessageTable.RECIPIENT_ID, recipientId.serialize())
put(MessageTable.DELIVERY_RECEIPT_COUNT, 0)
put(MessageTable.RECEIPT_TIMESTAMP, 0)
put(MessageTable.VIEWED_RECEIPT_COUNT, if (viewed) 1 else 0)
put(MessageTable.STORY_TYPE, message.storyType.code)
put(MmsSmsColumns.BODY, body)
put(MessageTable.BODY, body)
put(MessageTable.MENTIONS_SELF, 0)
}
@@ -101,8 +101,8 @@ object TestMms {
fun markAsRemoteDelete(db: SQLiteDatabase, messageId: Long) {
val values = ContentValues()
values.put(MmsSmsColumns.REMOTE_DELETED, 1)
values.putNull(MmsSmsColumns.BODY)
values.put(MessageTable.REMOTE_DELETED, 1)
values.putNull(MessageTable.BODY)
values.putNull(MessageTable.QUOTE_BODY)
values.putNull(MessageTable.QUOTE_AUTHOR)
values.put(MessageTable.QUOTE_TYPE, -1)

View File

@@ -25,7 +25,7 @@ object TestSms {
expiresInMillis: Long = 0,
unidentified: Boolean = false,
serverGuid: String = UUID.randomUUID().toString(),
type: Long = MmsSmsColumns.Types.BASE_INBOX_TYPE,
type: Long = MessageTypes.BASE_INBOX_TYPE,
unread: Boolean = false,
threadId: Long = 1
): Long {
@@ -54,24 +54,24 @@ object TestSms {
fun insert(
db: AndroidSQLiteDatabase,
message: IncomingTextMessage,
type: Long = MmsSmsColumns.Types.BASE_INBOX_TYPE,
type: Long = MessageTypes.BASE_INBOX_TYPE,
unread: Boolean = false,
threadId: Long = 1
): Long {
val values = ContentValues().apply {
put(MmsSmsColumns.RECIPIENT_ID, message.sender.serialize())
put(MmsSmsColumns.RECIPIENT_DEVICE_ID, message.senderDeviceId)
put(MmsSmsColumns.DATE_RECEIVED, message.receivedTimestampMillis)
put(MmsSmsColumns.DATE_SENT, message.sentTimestampMillis)
put(MmsSmsColumns.DATE_SERVER, message.serverTimestampMillis)
put(MmsSmsColumns.READ, if (unread) 0 else 1)
put(MmsSmsColumns.SMS_SUBSCRIPTION_ID, message.subscriptionId)
put(MmsSmsColumns.EXPIRES_IN, message.expiresIn)
put(MmsSmsColumns.UNIDENTIFIED, message.isUnidentified)
put(MmsSmsColumns.BODY, message.messageBody)
put(MmsSmsColumns.TYPE, type)
put(MmsSmsColumns.THREAD_ID, threadId)
put(MmsSmsColumns.SERVER_GUID, message.serverGuid)
put(MessageTable.RECIPIENT_ID, message.sender.serialize())
put(MessageTable.RECIPIENT_DEVICE_ID, message.senderDeviceId)
put(MessageTable.DATE_RECEIVED, message.receivedTimestampMillis)
put(MessageTable.DATE_SENT, message.sentTimestampMillis)
put(MessageTable.DATE_SERVER, message.serverTimestampMillis)
put(MessageTable.READ, if (unread) 0 else 1)
put(MessageTable.SMS_SUBSCRIPTION_ID, message.subscriptionId)
put(MessageTable.EXPIRES_IN, message.expiresIn)
put(MessageTable.UNIDENTIFIED, message.isUnidentified)
put(MessageTable.BODY, message.messageBody)
put(MessageTable.TYPE, type)
put(MessageTable.THREAD_ID, threadId)
put(MessageTable.SERVER_GUID, message.serverGuid)
}
return db.insert(MessageTable.TABLE_NAME, null, values)