Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
AloqaIM-Android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
AloqaIM-Android
Commits
4c8a0f83
Commit
4c8a0f83
authored
Feb 02, 2018
by
Leonardo Aramaki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add an in-memory implementation of the MessageRepository.
parent
10155fdd
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
238 additions
and
0 deletions
+238
-0
MessagesRepository.kt
...a/chat/rocket/android/server/domain/MessagesRepository.kt
+59
-0
MemoryMessagesRepository.kt
...ndroid/server/infraestructure/MemoryMessagesRepository.kt
+44
-0
MemoryMessagesRepositoryTest.kt
.../java/chat/rocket/android/MemoryMessagesRepositoryTest.kt
+135
-0
No files found.
app/src/main/java/chat/rocket/android/server/domain/MessagesRepository.kt
0 → 100644
View file @
4c8a0f83
package
chat.rocket.android.server.domain
import
chat.rocket.core.model.Message
interface
MessagesRepository
{
/**
* Get message by its message id.
*
* @param id The id of the message to get.
* @return The Message object given by the id or null if message wasn't found.
*/
fun
getById
(
id
:
String
):
Message
?
/**
* Get all messages from the current room id.
*
* @param rid The room id.
* @return A list of Message objects for the room with given room id or an empty list.
*/
fun
getByRoomId
(
rid
:
String
):
List
<
Message
>
/**
* Get all messages. Use carefully!
* @return All messages or an empty list.
*/
fun
getAll
():
List
<
Message
>
/**
* Save a single message object.
*
* @param The message object to saveAll.
*/
fun
save
(
message
:
Message
)
/**
* Save a list of messages.
*/
fun
saveAll
(
newMessages
:
List
<
Message
>)
/**
* Removes all messages.
*/
fun
clear
()
/**
* Remove message by id.
*
* @param id The id of the message to remove.
*/
fun
removeById
(
id
:
String
)
/**
* Remove all messages from a given room.
*
* @param rid The room id where messages are to be removed.
*/
fun
removeByRoomId
(
rid
:
String
)
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/server/infraestructure/MemoryMessagesRepository.kt
0 → 100644
View file @
4c8a0f83
package
chat.rocket.android.server.infraestructure
import
chat.rocket.android.server.domain.MessagesRepository
import
chat.rocket.core.model.Message
class
MemoryMessagesRepository
:
MessagesRepository
{
private
val
messages
:
HashMap
<
String
,
Message
>
=
HashMap
()
override
fun
getById
(
id
:
String
):
Message
?
{
return
messages
[
id
]
}
override
fun
getByRoomId
(
rid
:
String
):
List
<
Message
>
{
return
messages
.
filter
{
it
.
value
.
roomId
==
rid
}.
values
.
toList
()
}
override
fun
getAll
():
List
<
Message
>
=
messages
.
values
.
toList
()
override
fun
save
(
message
:
Message
)
{
messages
[
message
.
id
]
=
message
}
override
fun
saveAll
(
newMessages
:
List
<
Message
>)
{
for
(
msg
in
newMessages
)
{
messages
[
msg
.
id
]
=
msg
}
}
override
fun
clear
()
{
messages
.
clear
()
}
override
fun
removeById
(
id
:
String
)
{
messages
.
remove
(
id
)
}
override
fun
removeByRoomId
(
rid
:
String
)
{
val
roomMessages
=
messages
.
filter
{
it
.
value
.
roomId
==
rid
}.
values
roomMessages
.
forEach
{
messages
.
remove
(
it
.
roomId
)
}
}
}
\ No newline at end of file
app/src/test/java/chat/rocket/android/MemoryMessagesRepositoryTest.kt
0 → 100644
View file @
4c8a0f83
package
chat.rocket.android
import
chat.rocket.android.server.infraestructure.MemoryMessagesRepository
import
chat.rocket.core.model.Message
import
chat.rocket.core.model.MessageType
import
org.hamcrest.CoreMatchers.notNullValue
import
org.hamcrest.MatcherAssert.assertThat
import
org.junit.Before
import
org.junit.Test
import
org.hamcrest.CoreMatchers.`is`
as
isEqualTo
class
MemoryMessagesRepositoryTest
{
val
repository
=
MemoryMessagesRepository
()
val
msg
=
Message
(
id
=
"messageId"
,
roomId
=
"GENERAL"
,
message
=
"Beam me up, Scotty."
,
timestamp
=
1511443964815
,
attachments
=
null
,
sender
=
null
,
avatar
=
null
,
channels
=
null
,
editedAt
=
null
,
editedBy
=
null
,
groupable
=
true
,
mentions
=
null
,
parseUrls
=
false
,
senderAlias
=
null
,
type
=
MessageType
.
MessageRemoved
(),
updatedAt
=
1511443964815
,
urls
=
null
)
val
msg2
=
Message
(
id
=
"messageId2"
,
roomId
=
"sandbox"
,
message
=
"Highly Illogical"
,
timestamp
=
1511443964818
,
attachments
=
null
,
sender
=
null
,
avatar
=
null
,
channels
=
null
,
editedAt
=
null
,
editedBy
=
null
,
groupable
=
true
,
mentions
=
null
,
parseUrls
=
false
,
senderAlias
=
null
,
type
=
MessageType
.
MessageRemoved
(),
updatedAt
=
1511443964818
,
urls
=
null
)
@Before
fun
setup
()
{
repository
.
clear
()
}
@Test
fun
`
save
()
should
save
a
single
message
`
()
{
assertThat
(
repository
.
getAll
().
size
,
isEqualTo
(
0
))
repository
.
save
(
msg
)
val
allMessages
=
repository
.
getAll
()
assertThat
(
allMessages
.
size
,
isEqualTo
(
1
))
allMessages
[
0
].
apply
{
assertThat
(
id
,
isEqualTo
(
"messageId"
))
assertThat
(
message
,
isEqualTo
(
"Beam me up, Scotty."
))
assertThat
(
roomId
,
isEqualTo
(
"GENERAL"
))
}
}
@Test
fun
`
saveAll
()
should
all
saved
messages
`
()
{
assertThat
(
repository
.
getAll
().
size
,
isEqualTo
(
0
))
repository
.
saveAll
(
listOf
(
msg
,
msg2
))
val
allMessages
=
repository
.
getAll
()
assertThat
(
allMessages
.
size
,
isEqualTo
(
2
))
allMessages
[
0
].
apply
{
assertThat
(
id
,
isEqualTo
(
"messageId"
))
assertThat
(
message
,
isEqualTo
(
"Beam me up, Scotty."
))
assertThat
(
roomId
,
isEqualTo
(
"GENERAL"
))
}
allMessages
[
1
].
apply
{
assertThat
(
id
,
isEqualTo
(
"messageId2"
))
assertThat
(
message
,
isEqualTo
(
"Highly Illogical"
))
assertThat
(
roomId
,
isEqualTo
(
"sandbox"
))
}
}
@Test
fun
`
getById
()
should
return
a
single
message
`
()
{
repository
.
saveAll
(
listOf
(
msg
,
msg2
))
var
singleMsg
=
repository
.
getById
(
"messageId"
)
assertThat
(
singleMsg
,
notNullValue
())
singleMsg
!!
.
apply
{
assertThat
(
id
,
isEqualTo
(
"messageId"
))
assertThat
(
message
,
isEqualTo
(
"Beam me up, Scotty."
))
assertThat
(
roomId
,
isEqualTo
(
"GENERAL"
))
}
singleMsg
=
repository
.
getById
(
"messageId2"
)
assertThat
(
singleMsg
,
notNullValue
())
singleMsg
!!
.
apply
{
assertThat
(
id
,
isEqualTo
(
"messageId2"
))
assertThat
(
message
,
isEqualTo
(
"Highly Illogical"
))
assertThat
(
roomId
,
isEqualTo
(
"sandbox"
))
}
}
@Test
fun
`
getByRoomId
()
should
return
all
messages
for
room
id
or
an
empty
list
`
()
{
repository
.
saveAll
(
listOf
(
msg
,
msg2
))
var
roomMessages
=
repository
.
getByRoomId
(
"faAad32fkasods2"
)
assertThat
(
roomMessages
.
isEmpty
(),
isEqualTo
(
true
))
roomMessages
=
repository
.
getByRoomId
(
"sandbox"
)
assertThat
(
roomMessages
.
size
,
isEqualTo
(
1
))
roomMessages
[
0
].
apply
{
assertThat
(
id
,
isEqualTo
(
"messageId2"
))
assertThat
(
message
,
isEqualTo
(
"Highly Illogical"
))
assertThat
(
roomId
,
isEqualTo
(
"sandbox"
))
}
roomMessages
=
repository
.
getByRoomId
(
"GENERAL"
)
assertThat
(
roomMessages
.
size
,
isEqualTo
(
1
))
roomMessages
[
0
].
apply
{
assertThat
(
id
,
isEqualTo
(
"messageId"
))
assertThat
(
message
,
isEqualTo
(
"Beam me up, Scotty."
))
assertThat
(
roomId
,
isEqualTo
(
"GENERAL"
))
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment