Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2578052
tst_EventView.qml
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
tst_EventView.qml
View Options
/*
* This file is part of kazv.
* SPDX-FileCopyrightText: 2023 tusooa <tusooa@kazv.moe>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import
QtQuick
2.3
import
QtQuick
.
Layouts
1.15
import
QtTest
1.0
import
'../../contents/ui'
as
Kazv
import
'test-helpers.js'
as
Helpers
import
'test-helpers'
as
TestHelpers
Item
{
id: item
width:
800
height:
600
property
var
timeline:
({
gaps:
[],
})
property
var
room:
({
test_resendMessageCalled:
0
,
test_resendMessageLastTxnId:
''
,
resendMessage:
(
txnId
)
=>
{
++
item
.
room
.
test_resendMessageCalled
;
item
.
room
.
test_resendMessageLastTxnId
=
txnId
;
},
messageById:
(
_id
)
=>
item
.
textEvent
,
member:
(
_id
)
=>
({}),
})
property
var
l10n:
Helpers
.
fluentMock
property
var
matrixSdk:
TestHelpers
.
MatrixSdkMock
{}
property
var
kazvIOManager:
TestHelpers
.
KazvIOManagerMock
{}
property
var
localEcho:
({
eventId:
''
,
sender:
''
,
type:
'm.room.message'
,
stateKey:
''
,
content:
{
msgtype:
'm.text'
,
body:
'some body'
,
},
encrypted:
false
,
isState:
false
,
unsignedData:
{},
isLocalEcho:
true
,
isSending:
true
,
isFailed:
false
,
txnId:
'some-txn-id'
,
})
property
var
failedLocalEcho:
Object
.
assign
({},
item
.
localEcho
,
{
isSending:
false
,
isFailed:
true
,
})
property
var
textEvent:
({
eventId:
''
,
sender:
''
,
type:
'm.room.message'
,
stateKey:
''
,
content:
{
msgtype:
'm.text'
,
body:
'some body'
,
},
formattedTime:
'4:06 P.M.'
,
})
property
var
redactedEvent:
({
eventId:
''
,
sender:
''
,
type:
'm.room.message'
,
stateKey:
''
,
content:
{},
redacted:
true
,
formattedTime:
'4:06 P.M.'
,
})
property
var
imageEvent:
({
eventId:
''
,
sender:
''
,
type:
'm.room.message'
,
stateKey:
''
,
content:
{
msgtype:
'm.image'
,
body:
'some body'
,
},
formattedTime:
'4:06 P.M.'
,
})
property
var
unknownTypeEvent:
({
eventId:
''
,
sender:
''
,
type:
'moe.kazv.mxc.unknown.event'
,
stateKey:
''
,
content:
{
msgtype:
'm.image'
,
body:
'some body'
,
},
})
property
var
unknownMsgtypeEvent:
({
eventId:
''
,
sender:
''
,
type:
'm.room.message'
,
stateKey:
''
,
content:
{
msgtype:
'moe.kazv.mxc.unknown.msgtype'
,
body:
'some body'
,
},
})
property
var
cannotDecryptEvent:
({
eventId:
''
,
sender:
''
,
type:
'm.room.message'
,
stateKey:
''
,
content:
{
msgtype:
'moe.kazv.mxc.cannot.decrypt'
,
body:
'some body'
,
},
})
property
var
sender:
({
membership:
'join'
,
userId:
'@foo:tusooa.xyz'
,
name:
'foo'
,
avatarMxcUri:
''
,
})
ColumnLayout
{
anchors.fill:
parent
Kazv
.
EventView
{
Layout.fillWidth:
true
id: eventView
event:
item
.
localEcho
sender:
item
.
sender
}
Kazv
.
EventView
{
Layout.fillWidth:
true
id: eventViewFailed
event:
item
.
failedLocalEcho
sender:
item
.
sender
}
Kazv
.
EventView
{
Layout.fillWidth:
true
id: eventViewText
event:
item
.
textEvent
sender:
item
.
sender
}
Kazv
.
EventView
{
Layout.fillWidth:
true
id: eventViewRedacted
event:
item
.
redactedEvent
sender:
item
.
sender
}
Kazv
.
EventView
{
id: eventViewUnknownType
event:
item
.
unknownTypeEvent
sender:
item
.
sender
}
Kazv
.
EventView
{
id: eventViewUnknownMsgtype
event:
item
.
unknownMsgtypeEvent
sender:
item
.
sender
}
Kazv
.
EventView
{
id: eventViewCannotDecrypt
event:
item
.
cannotDecryptEvent
sender:
item
.
sender
}
}
TestCase
{
id: eventViewTest
name:
'EventViewTest'
when:
windowShown
function
init
()
{
eventView
.
event
=
item
.
localEcho
;
item
.
room
.
test_resendMessageCalled
=
0
;
item
.
room
.
test_resendMessageLastTxnId
=
''
;
}
function
test_localEcho
()
{
const
indicator
=
findChild
(
eventView
,
'localEchoIndicator'
);
verify
(
indicator
);
verify
(
indicator
.
source
===
'state-sync'
);
verify
(
indicator
.
Accessible
.
name
===
l10n
.
get
(
'event-sending'
));
const
resendButton
=
findChild
(
eventView
,
'resendEventButton'
);
verify
(
resendButton
);
verify
(
!
resendButton
.
enabled
);
verify
(
!
findChild
(
eventView
,
'timeIndicator'
).
visible
);
}
function
test_localEchoFailed
()
{
const
indicator
=
findChild
(
eventViewFailed
,
'localEchoIndicator'
);
verify
(
indicator
);
verify
(
indicator
.
visible
);
verify
(
indicator
.
source
===
'state-warning'
);
verify
(
indicator
.
Accessible
.
name
===
l10n
.
get
(
'event-resend'
));
const
resendButton
=
findChild
(
eventViewFailed
,
'resendEventButton'
);
verify
(
resendButton
);
verify
(
resendButton
.
enabled
);
verify
(
!
findChild
(
eventViewFailed
,
'timeIndicator'
).
visible
);
mouseClick
(
indicator
);
tryVerify
(()
=>
item
.
room
.
test_resendMessageCalled
==
1
);
tryVerify
(()
=>
item
.
room
.
test_resendMessageLastTxnId
==
'some-txn-id'
);
}
function
test_sentMessage
()
{
const
indicator
=
findChild
(
eventViewText
,
'localEchoIndicator'
);
verify
(
indicator
);
verify
(
!
indicator
.
visible
);
verify
(
findChild
(
eventViewText
,
'timeIndicator'
).
visible
);
}
function
test_menuText
()
{
const
menu
=
findChild
(
eventViewText
,
'bubbleContextMenu'
);
verify
(
menu
);
tryVerify
(()
=>
findChild
(
menu
,
'replyToMenuItem'
).
enabled
);
tryVerify
(()
=>
findChild
(
menu
,
'deleteMenuItem'
).
enabled
);
}
function
test_menuRedacted
()
{
const
menu
=
findChild
(
eventViewRedacted
,
'bubbleContextMenu'
);
verify
(
menu
);
tryVerify
(()
=>
!
findChild
(
menu
,
'replyToMenuItem'
).
enabled
);
tryVerify
(()
=>
!
findChild
(
menu
,
'deleteMenuItem'
).
enabled
);
}
function
test_fallback
()
{
verify
(
findChild
(
eventViewUnknownType
,
'fallbackIcon'
));
verify
(
findChild
(
eventViewUnknownType
,
'textEventContent'
).
text
===
l10n
.
get
(
'event-fallback-text'
,
{
type:
unknownTypeEvent
.
type
}));
verify
(
findChild
(
eventViewUnknownMsgtype
,
'fallbackIcon'
));
verify
(
findChild
(
eventViewUnknownMsgtype
,
'textEventContent'
).
text
===
l10n
.
get
(
'event-msgtype-fallback-text'
,
{
msgtype:
unknownMsgtypeEvent
.
content
.
msgtype
}));
verify
(
findChild
(
eventViewCannotDecrypt
,
'fallbackIcon'
));
verify
(
findChild
(
eventViewCannotDecrypt
,
'textEventContent'
).
text
===
l10n
.
get
(
'event-cannot-decrypt-text'
));
}
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Jun 24, 7:48 PM (1 d, 3 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
234995
Default Alt Text
tst_EventView.qml (6 KB)
Attached To
Mode
rK kazv
Attached
Detach File
Event Timeline
Log In to Comment