Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F12552190
chat_service.spec.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
chat_service.spec.js
View Options
import
chatService
from
'../../../../../src/services/chat_service/chat_service.js'
const
message1
=
{
id
:
'9wLkdcmQXD21Oy8lEX'
,
idempotency_key
:
'1'
,
created_at
:
(
new
Date
(
'2020-06-22T18:45:53.000Z'
))
}
const
message2
=
{
id
:
'9wLkdp6ihaOVdNj8Wu'
,
idempotency_key
:
'2'
,
account_id
:
'9vmRb29zLQReckr5ay'
,
created_at
:
(
new
Date
(
'2020-06-22T18:45:56.000Z'
))
}
const
message3
=
{
id
:
'9wLke9zL4Dy4OZR2RM'
,
idempotency_key
:
'3'
,
account_id
:
'9vmRb29zLQReckr5ay'
,
created_at
:
(
new
Date
(
'2020-07-22T18:45:59.000Z'
))
}
describe
(
'chatService'
,
()
=>
{
describe
(
'.add'
,
()
=>
{
it
(
"Doesn't add duplicates"
,
()
=>
{
const
chat
=
chatService
.
empty
()
chatService
.
add
(
chat
,
{
messages
:
[
message1
]
})
chatService
.
add
(
chat
,
{
messages
:
[
message1
]
})
expect
(
chat
.
messages
.
length
).
to
.
eql
(
1
)
chatService
.
add
(
chat
,
{
messages
:
[
message2
]
})
expect
(
chat
.
messages
.
length
).
to
.
eql
(
2
)
})
it
(
'Updates minId and lastMessage and newMessageCount'
,
()
=>
{
const
chat
=
chatService
.
empty
()
chatService
.
add
(
chat
,
{
messages
:
[
message1
]
})
expect
(
chat
.
maxId
).
to
.
eql
(
message1
.
id
)
expect
(
chat
.
minId
).
to
.
eql
(
message1
.
id
)
expect
(
chat
.
newMessageCount
).
to
.
eql
(
1
)
chatService
.
add
(
chat
,
{
messages
:
[
message2
]
})
expect
(
chat
.
maxId
).
to
.
eql
(
message2
.
id
)
expect
(
chat
.
minId
).
to
.
eql
(
message1
.
id
)
expect
(
chat
.
newMessageCount
).
to
.
eql
(
2
)
chatService
.
resetNewMessageCount
(
chat
)
expect
(
chat
.
newMessageCount
).
to
.
eql
(
0
)
expect
(
chat
.
lastSeenMessageId
).
to
.
eql
(
message2
.
id
)
// Add message with higher id
chatService
.
add
(
chat
,
{
messages
:
[
message3
]
})
expect
(
chat
.
newMessageCount
).
to
.
eql
(
1
)
})
})
describe
(
'.delete'
,
()
=>
{
it
(
'Updates minId and lastMessage'
,
()
=>
{
const
chat
=
chatService
.
empty
()
chatService
.
add
(
chat
,
{
messages
:
[
message1
]
})
chatService
.
add
(
chat
,
{
messages
:
[
message2
]
})
chatService
.
add
(
chat
,
{
messages
:
[
message3
]
})
expect
(
chat
.
maxId
).
to
.
eql
(
message3
.
id
)
expect
(
chat
.
minId
).
to
.
eql
(
message1
.
id
)
chatService
.
deleteMessage
(
chat
,
message3
.
id
)
expect
(
chat
.
maxId
).
to
.
eql
(
message2
.
id
)
expect
(
chat
.
minId
).
to
.
eql
(
message1
.
id
)
chatService
.
deleteMessage
(
chat
,
message1
.
id
)
expect
(
chat
.
maxId
).
to
.
eql
(
message2
.
id
)
expect
(
chat
.
minId
).
to
.
eql
(
message2
.
id
)
})
})
describe
(
'.getView'
,
()
=>
{
it
(
'Inserts date separators'
,
()
=>
{
const
chat
=
chatService
.
empty
()
chatService
.
add
(
chat
,
{
messages
:
[
message1
]
})
chatService
.
add
(
chat
,
{
messages
:
[
message2
]
})
chatService
.
add
(
chat
,
{
messages
:
[
message3
]
})
const
view
=
chatService
.
getView
(
chat
)
expect
(
view
.
map
(
i
=>
i
.
type
)).
to
.
eql
([
'date'
,
'message'
,
'message'
,
'date'
,
'message'
])
})
})
describe
(
'.cullOlderMessages'
,
()
=>
{
it
(
'keeps 50 newest messages and idIndex matches'
,
()
=>
{
const
chat
=
chatService
.
empty
()
for
(
let
i
=
100
;
i
>
0
;
i
--
)
{
// Use decimal values with toFixed to hack together constant length predictable strings
chatService
.
add
(
chat
,
{
messages
:
[{
...
message1
,
id
:
'a'
+
(
i
/
1000
).
toFixed
(
3
),
idempotency_key
:
i
}]
})
}
chatService
.
cullOlderMessages
(
chat
)
expect
(
chat
.
messages
.
length
).
to
.
eql
(
50
)
expect
(
chat
.
messages
[
0
].
id
).
to
.
eql
(
'a0.051'
)
expect
(
chat
.
minId
).
to
.
eql
(
'a0.051'
)
expect
(
chat
.
messages
[
49
].
id
).
to
.
eql
(
'a0.100'
)
expect
(
Object
.
keys
(
chat
.
idIndex
).
length
).
to
.
eql
(
50
)
})
})
})
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Nov 15, 12:14 AM (1 d, 3 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
632941
Default Alt Text
chat_service.spec.js (3 KB)
Attached To
Mode
rPUFE pleroma-fe-upstream
Attached
Detach File
Event Timeline
Log In to Comment