2022-11-02 21:41:30 +08:00
import { click , visit } from "@ember/test-helpers" ;
import {
acceptance ,
exists ,
visible ,
} from "discourse/tests/helpers/qunit-helpers" ;
import { test } from "qunit" ;
acceptance ( "Discourse Chat - Chat live pane collapse" , function ( needs ) {
needs . user ( {
username : "eviltrout" ,
id : 1 ,
can _chat : true ,
has _chat _enabled : true ,
} ) ;
needs . settings ( {
chat _enabled : true ,
} ) ;
needs . pretender ( ( server , helper ) => {
server . get ( "/chat/:chatChannelId/messages.json" , ( ) =>
helper . response ( {
meta : {
can _chat : true ,
user _silenced : false ,
} ,
chat _messages : [
{
id : 1 ,
message : "https://www.youtube.com/watch?v=aOWkVdU4NH0" ,
cooked :
'<div class="onebox lazyYT lazyYT-container" data-youtube-id="aOWkVdU4NH0" data-youtube-title="Picnic with my cat (shaved ice & lemonade)" data-parameters="feature=oembed&wmode=opaque"> <a href="https://www.youtube.com/watch?v=aOWkVdU4NH0" target="_blank" rel="nofollow ugc noopener"> <img class="ytp-thumbnail-image" src="/images/discourse-logo-sketch.png" title="Picnic with my cat (shaved ice & lemonade)"></a></div>' ,
excerpt :
'<a href="https://www.youtube.com/watch?v=aOWkVdU4NH0">[Picnic with my cat (shaved ice & lemonade…</a>' ,
created _at : "2021-07-20T08:14:16.950Z" ,
flag _count : 0 ,
user : {
avatar _template :
"/letter_avatar_proxy/v4/letter/t/a9a28c/{size}.png" ,
id : 1 ,
name : "Tomtom" ,
username : "tomtom" ,
} ,
} ,
{
id : 2 ,
message : "" ,
cooked : "" ,
excerpt : "" ,
uploads : [
{
id : 4 ,
url : "/images/avatar.png" ,
original _filename : "tomtom.jpeg" ,
filesize : 93815 ,
width : 480 ,
height : 640 ,
thumbnail _width : 375 ,
thumbnail _height : 500 ,
extension : "jpeg" ,
retain _hours : null ,
human _filesize : "91.6 KB" ,
} ,
] ,
user : {
avatar _template :
"/letter_avatar_proxy/v4/letter/t/a9a28c/{size}.png" ,
id : 1 ,
name : "Tomtom" ,
username : "tomtom" ,
} ,
} ,
] ,
} )
) ;
server . get ( "/chat/chat_channels.json" , ( ) =>
helper . response ( {
public _channels : [ ] ,
direct _message _channels : [ ] ,
2022-12-02 08:57:53 +08:00
message _bus _last _ids : {
channel _metadata : 0 ,
channel _edits : 0 ,
channel _status : 0 ,
new _channel : 0 ,
user _tracking _state : 0 ,
} ,
2022-11-02 21:41:30 +08:00
} )
) ;
server . get ( "/chat/chat_channels/:chatChannelId" , ( ) =>
helper . response ( { id : 1 , title : "something" } )
) ;
server . post ( "/uploads/lookup-urls" , ( ) =>
helper . response ( [
200 ,
{ "Content-Type" : "application/json" } ,
[
{
url : "/images/avatar.png" ,
} ,
] ,
] )
) ;
} ) ;
test ( "can collapse and expand youtube chat" , async function ( assert ) {
const youtubeContainer = ".chat-message-container[data-id='1'] .lazyYT" ;
const expandImage =
".chat-message-container[data-id='1'] .chat-message-collapser-closed" ;
const collapseImage =
".chat-message-container[data-id='1'] .chat-message-collapser-opened" ;
await visit ( "/chat/channel/1/cat" ) ;
assert . ok ( visible ( youtubeContainer ) ) ;
assert . ok ( visible ( collapseImage ) , "the open arrow is shown" ) ;
assert . notOk ( exists ( expandImage ) , "the close arrow is hidden" ) ;
await click ( collapseImage ) ;
assert . notOk ( visible ( youtubeContainer ) ) ;
assert . ok ( visible ( expandImage ) , "the close arrow is shown" ) ;
assert . notOk ( exists ( collapseImage ) , "the open arrow is hidden" ) ;
await click ( expandImage ) ;
assert . ok ( visible ( youtubeContainer ) ) ;
assert . ok ( visible ( collapseImage ) , "the open arrow is shown again" ) ;
assert . notOk ( exists ( expandImage ) , "the close arrow is hidden again" ) ;
} ) ;
test ( "lightbox shows up before and after expand and collapse" , async function ( assert ) {
const lightboxImage = ".mfp-img" ;
const image = ".chat-message-container[data-id='2'] .chat-img-upload" ;
const expandImage =
".chat-message-container[data-id='2'] .chat-message-collapser-closed" ;
const collapseImage =
".chat-message-container[data-id='2'] .chat-message-collapser-opened" ;
await visit ( "/chat/channel/1/cat" ) ;
await click ( image ) ;
assert . ok (
exists ( document . querySelector ( lightboxImage ) ) ,
"can see lightbox"
) ;
await click ( document . querySelector ( ".mfp-container" ) ) ;
await click ( collapseImage ) ;
await click ( expandImage ) ;
await click ( image ) ;
assert . ok (
exists ( document . querySelector ( lightboxImage ) ) ,
"can see lightbox after collapse expand"
) ;
await click ( document . querySelector ( ".mfp-container" ) ) ;
} ) ;
} ) ;