Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
converse.js
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
converse.js
Commits
c22fe41a
Commit
c22fe41a
authored
Nov 22, 2018
by
JC Brand
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use async/await in tests
parent
cb3ba7bd
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
447 additions
and
474 deletions
+447
-474
spec/bookmarks.js
spec/bookmarks.js
+313
-325
spec/converse.js
spec/converse.js
+55
-55
spec/roomslist.js
spec/roomslist.js
+79
-94
No files found.
spec/bookmarks.js
View file @
c22fe41a
...
@@ -20,13 +20,14 @@
...
@@ -20,13 +20,14 @@
describe
(
"
A chat room
"
,
function
()
{
describe
(
"
A chat room
"
,
function
()
{
it
(
"
can be bookmarked
"
,
mock
.
initConverseWithPromises
(
it
(
"
can be bookmarked
"
,
mock
.
initConverseWithPromises
(
null
,
[
'
rosterGroupsFetched
'
],
{},
function
(
done
,
_converse
)
{
null
,
[
'
rosterGroupsFetched
'
],
{},
async
function
(
done
,
_converse
)
{
test_utils
.
waitUntilDiscoConfirmed
(
await
test_utils
.
waitUntilDiscoConfirmed
(
_converse
,
_converse
.
bare_jid
,
_converse
,
_converse
.
bare_jid
,
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
)
.
then
(
function
()
{
)
;
let
sent_stanza
,
IQ_id
;
let
sent_stanza
,
IQ_id
;
const
sendIQ
=
_converse
.
connection
.
sendIQ
;
const
sendIQ
=
_converse
.
connection
.
sendIQ
;
spyOn
(
_converse
.
connection
,
'
sendIQ
'
).
and
.
callFake
(
function
(
iq
,
callback
,
errback
)
{
spyOn
(
_converse
.
connection
,
'
sendIQ
'
).
and
.
callFake
(
function
(
iq
,
callback
,
errback
)
{
...
@@ -35,16 +36,13 @@
...
@@ -35,16 +36,13 @@
});
});
spyOn
(
_converse
.
connection
,
'
getUniqueId
'
).
and
.
callThrough
();
spyOn
(
_converse
.
connection
,
'
getUniqueId
'
).
and
.
callThrough
();
let
view
,
bookmark
;
await
test_utils
.
openChatRoom
(
_converse
,
'
theplay
'
,
'
conference.shakespeare.lit
'
,
'
JC
'
);
test_utils
.
openChatRoom
(
_converse
,
'
theplay
'
,
'
conference.shakespeare.lit
'
,
'
JC
'
)
.
then
(()
=>
{
var
jid
=
'
theplay@conference.shakespeare.lit
'
;
var
jid
=
'
theplay@conference.shakespeare.lit
'
;
view
=
_converse
.
chatboxviews
.
get
(
jid
);
const
view
=
_converse
.
chatboxviews
.
get
(
jid
);
spyOn
(
view
,
'
renderBookmarkForm
'
).
and
.
callThrough
();
spyOn
(
view
,
'
renderBookmarkForm
'
).
and
.
callThrough
();
spyOn
(
view
,
'
closeForm
'
).
and
.
callThrough
();
spyOn
(
view
,
'
closeForm
'
).
and
.
callThrough
();
return
test_utils
.
waitUntil
(()
=>
!
_
.
isNull
(
view
.
el
.
querySelector
(
'
.toggle-bookmark
'
)));
await
test_utils
.
waitUntil
(()
=>
!
_
.
isNull
(
view
.
el
.
querySelector
(
'
.toggle-bookmark
'
)));
}).
then
(()
=>
{
const
bookmark
=
view
.
el
.
querySelector
(
'
.toggle-bookmark
'
);
bookmark
=
view
.
el
.
querySelector
(
'
.toggle-bookmark
'
);
bookmark
.
click
();
bookmark
.
click
();
expect
(
view
.
renderBookmarkForm
).
toHaveBeenCalled
();
expect
(
view
.
renderBookmarkForm
).
toHaveBeenCalled
();
...
@@ -95,8 +93,7 @@
...
@@ -95,8 +93,7 @@
_converse
.
connection
.
IQ_stanzas
=
[];
_converse
.
connection
.
IQ_stanzas
=
[];
view
.
el
.
querySelector
(
'
.btn-primary
'
).
click
();
view
.
el
.
querySelector
(
'
.btn-primary
'
).
click
();
return
test_utils
.
waitUntil
(()
=>
sent_stanza
);
await
test_utils
.
waitUntil
(()
=>
sent_stanza
);
}).
then
(()
=>
{
expect
(
sent_stanza
.
toLocaleString
()).
toBe
(
expect
(
sent_stanza
.
toLocaleString
()).
toBe
(
`<iq from="dummy@localhost/resource" id="
${
IQ_id
}
" type="set" xmlns="jabber:client">`
+
`<iq from="dummy@localhost/resource" id="
${
IQ_id
}
" type="set" xmlns="jabber:client">`
+
`<pubsub xmlns="http://jabber.org/protocol/pubsub">`
+
`<pubsub xmlns="http://jabber.org/protocol/pubsub">`
+
...
@@ -135,26 +132,25 @@
...
@@ -135,26 +132,25 @@
'
id
'
:
IQ_id
'
id
'
:
IQ_id
});
});
_converse
.
connection
.
_dataRecv
(
test_utils
.
createRequest
(
stanza
));
_converse
.
connection
.
_dataRecv
(
test_utils
.
createRequest
(
stanza
));
return
test_utils
.
waitUntil
(()
=>
view
.
model
.
get
(
'
bookmarked
'
));
await
test_utils
.
waitUntil
(()
=>
view
.
model
.
get
(
'
bookmarked
'
));
}).
then
(()
=>
{
expect
(
view
.
model
.
get
(
'
bookmarked
'
)).
toBeTruthy
();
expect
(
view
.
model
.
get
(
'
bookmarked
'
)).
toBeTruthy
();
expect
(
u
.
hasClass
(
'
on-button
'
,
bookmark
),
true
);
expect
(
u
.
hasClass
(
'
on-button
'
,
bookmark
),
true
);
// We ignore this IQ stanza... (unless it's an error stanza), so
// We ignore this IQ stanza... (unless it's an error stanza), so
// nothing to test for here.
// nothing to test for here.
done
();
done
();
}).
catch
(
_
.
partial
(
_converse
.
log
,
_
,
Strophe
.
LogLevel
.
FATAL
));
});
}));
}));
it
(
"
will be automatically opened if 'autojoin' is set on the bookmark
"
,
mock
.
initConverseWithPromises
(
it
(
"
will be automatically opened if 'autojoin' is set on the bookmark
"
,
mock
.
initConverseWithPromises
(
null
,
[
'
rosterGroupsFetched
'
],
{},
function
(
done
,
_converse
)
{
null
,
[
'
rosterGroupsFetched
'
],
{},
async
function
(
done
,
_converse
)
{
test_utils
.
waitUntilDiscoConfirmed
(
await
test_utils
.
waitUntilDiscoConfirmed
(
_converse
,
_converse
.
bare_jid
,
_converse
,
_converse
.
bare_jid
,
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
)
.
then
(
function
()
{
)
;
var
jid
=
'
lounge@localhost
'
;
let
jid
=
'
lounge@localhost
'
;
_converse
.
bookmarks
.
create
({
_converse
.
bookmarks
.
create
({
'
jid
'
:
jid
,
'
jid
'
:
jid
,
'
autojoin
'
:
false
,
'
autojoin
'
:
false
,
...
@@ -172,24 +168,23 @@
...
@@ -172,24 +168,23 @@
});
});
expect
(
_
.
isUndefined
(
_converse
.
chatboxviews
.
get
(
jid
))).
toBeFalsy
();
expect
(
_
.
isUndefined
(
_converse
.
chatboxviews
.
get
(
jid
))).
toBeFalsy
();
done
();
done
();
});
}));
}));
describe
(
"
when bookmarked
"
,
function
()
{
describe
(
"
when bookmarked
"
,
function
()
{
it
(
"
displays that it's bookmarked through its bookmark icon
"
,
mock
.
initConverseWithPromises
(
it
(
"
displays that it's bookmarked through its bookmark icon
"
,
mock
.
initConverseWithPromises
(
null
,
[
'
rosterGroupsFetched
'
],
{},
function
(
done
,
_converse
)
{
null
,
[
'
rosterGroupsFetched
'
],
{},
async
function
(
done
,
_converse
)
{
let
view
;
test_utils
.
waitUntilDiscoConfirmed
(
test_utils
.
waitUntilDiscoConfirmed
(
_converse
,
_converse
.
bare_jid
,
_converse
,
_converse
.
bare_jid
,
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
).
then
(()
=>
test_utils
.
openChatRoom
(
_converse
,
'
lounge
'
,
'
localhost
'
,
'
dummy
'
))
);
.
then
(()
=>
{
await
test_utils
.
openChatRoom
(
_converse
,
'
lounge
'
,
'
localhost
'
,
'
dummy
'
);
view
=
_converse
.
chatboxviews
.
get
(
'
lounge@localhost
'
);
const
view
=
_converse
.
chatboxviews
.
get
(
'
lounge@localhost
'
);
return
test_utils
.
waitUntil
(()
=>
!
_
.
isNull
(
view
.
el
.
querySelector
(
'
.toggle-bookmark
'
)))
await
test_utils
.
waitUntil
(()
=>
!
_
.
isNull
(
view
.
el
.
querySelector
(
'
.toggle-bookmark
'
)));
}).
then
(
function
()
{
var
bookmark_icon
=
view
.
el
.
querySelector
(
'
.toggle-bookmark
'
);
var
bookmark_icon
=
view
.
el
.
querySelector
(
'
.toggle-bookmark
'
);
expect
(
_
.
includes
(
bookmark_icon
.
classList
,
'
button-on
'
)).
toBeFalsy
();
expect
(
_
.
includes
(
bookmark_icon
.
classList
,
'
button-on
'
)).
toBeFalsy
();
view
.
model
.
set
(
'
bookmarked
'
,
true
);
view
.
model
.
set
(
'
bookmarked
'
,
true
);
...
@@ -197,26 +192,26 @@
...
@@ -197,26 +192,26 @@
view
.
model
.
set
(
'
bookmarked
'
,
false
);
view
.
model
.
set
(
'
bookmarked
'
,
false
);
expect
(
_
.
includes
(
bookmark_icon
.
classList
,
'
button-on
'
)).
toBeFalsy
();
expect
(
_
.
includes
(
bookmark_icon
.
classList
,
'
button-on
'
)).
toBeFalsy
();
done
();
done
();
});
}));
}));
it
(
"
can be unbookmarked
"
,
mock
.
initConverseWithPromises
(
it
(
"
can be unbookmarked
"
,
mock
.
initConverseWithPromises
(
null
,
[
'
rosterGroupsFetched
'
],
{},
function
(
done
,
_converse
)
{
null
,
[
'
rosterGroupsFetched
'
],
{},
async
function
(
done
,
_converse
)
{
let
sent_stanza
,
IQ_id
,
view
,
sendIQ
;
let
sent_stanza
,
IQ_id
;
test_utils
.
waitUntilDiscoConfirmed
(
await
test_utils
.
waitUntilDiscoConfirmed
(
_converse
,
_converse
.
bare_jid
,
_converse
,
_converse
.
bare_jid
,
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
)
.
then
(()
=>
{
)
;
sendIQ
=
_converse
.
connection
.
sendIQ
;
const
sendIQ
=
_converse
.
connection
.
sendIQ
;
return
test_utils
.
openChatRoom
(
_converse
,
'
theplay
'
,
'
conference.shakespeare.lit
'
,
'
JC
'
);
await
test_utils
.
openChatRoom
(
_converse
,
'
theplay
'
,
'
conference.shakespeare.lit
'
,
'
JC
'
);
}).
then
(()
=>
{
var
jid
=
'
theplay@conference.shakespeare.lit
'
;
const
jid
=
'
theplay@conference.shakespeare.lit
'
;
view
=
_converse
.
chatboxviews
.
get
(
jid
);
const
view
=
_converse
.
chatboxviews
.
get
(
jid
);
return
test_utils
.
waitUntil
(()
=>
!
_
.
isNull
(
view
.
el
.
querySelector
(
'
.toggle-bookmark
'
)));
await
test_utils
.
waitUntil
(()
=>
!
_
.
isNull
(
view
.
el
.
querySelector
(
'
.toggle-bookmark
'
)));
}).
then
(
function
()
{
spyOn
(
view
,
'
toggleBookmark
'
).
and
.
callThrough
();
spyOn
(
view
,
'
toggleBookmark
'
).
and
.
callThrough
();
spyOn
(
_converse
.
bookmarks
,
'
sendBookmarkStanza
'
).
and
.
callThrough
();
spyOn
(
_converse
.
bookmarks
,
'
sendBookmarkStanza
'
).
and
.
callThrough
();
view
.
delegateEvents
();
view
.
delegateEvents
();
...
@@ -270,23 +265,23 @@
...
@@ -270,23 +265,23 @@
`</iq>`
`</iq>`
);
);
done
();
done
();
});
}));
}));
});
});
describe
(
"
and when autojoin is set
"
,
function
()
{
describe
(
"
and when autojoin is set
"
,
function
()
{
it
(
"
will be be opened and joined automatically upon login
"
,
mock
.
initConverseWithPromises
(
it
(
"
will be be opened and joined automatically upon login
"
,
mock
.
initConverseWithPromises
(
null
,
[
'
rosterGroupsFetched
'
],
{},
function
(
done
,
_converse
)
{
null
,
[
'
rosterGroupsFetched
'
],
{},
async
function
(
done
,
_converse
)
{
test_utils
.
waitUntilDiscoConfirmed
(
await
test_utils
.
waitUntilDiscoConfirmed
(
_converse
,
_converse
.
bare_jid
,
_converse
,
_converse
.
bare_jid
,
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
)
.
then
(
function
()
{
)
;
spyOn
(
_converse
.
api
.
rooms
,
'
create
'
).
and
.
callThrough
();
spyOn
(
_converse
.
api
.
rooms
,
'
create
'
).
and
.
callThrough
();
var
jid
=
'
theplay@conference.shakespeare.lit
'
;
const
jid
=
'
theplay@conference.shakespeare.lit
'
;
var
model
=
_converse
.
bookmarks
.
create
({
const
model
=
_converse
.
bookmarks
.
create
({
'
jid
'
:
jid
,
'
jid
'
:
jid
,
'
autojoin
'
:
false
,
'
autojoin
'
:
false
,
'
name
'
:
'
The Play
'
,
'
name
'
:
'
The Play
'
,
...
@@ -294,7 +289,6 @@
...
@@ -294,7 +289,6 @@
});
});
expect
(
_converse
.
api
.
rooms
.
create
).
not
.
toHaveBeenCalled
();
expect
(
_converse
.
api
.
rooms
.
create
).
not
.
toHaveBeenCalled
();
_converse
.
bookmarks
.
remove
(
model
);
_converse
.
bookmarks
.
remove
(
model
);
_converse
.
bookmarks
.
create
({
_converse
.
bookmarks
.
create
({
'
jid
'
:
jid
,
'
jid
'
:
jid
,
'
autojoin
'
:
true
,
'
autojoin
'
:
true
,
...
@@ -303,7 +297,6 @@
...
@@ -303,7 +297,6 @@
});
});
expect
(
_converse
.
api
.
rooms
.
create
).
toHaveBeenCalled
();
expect
(
_converse
.
api
.
rooms
.
create
).
toHaveBeenCalled
();
done
();
done
();
});
}));
}));
});
});
});
});
...
@@ -312,15 +305,14 @@
...
@@ -312,15 +305,14 @@
it
(
"
can be pushed from the XMPP server
"
,
mock
.
initConverseWithPromises
(
it
(
"
can be pushed from the XMPP server
"
,
mock
.
initConverseWithPromises
(
[
'
send
'
],
[
'
rosterGroupsFetched
'
,
'
connected
'
],
{},
[
'
send
'
],
[
'
rosterGroupsFetched
'
,
'
connected
'
],
{},
function
(
done
,
_converse
)
{
async
function
(
done
,
_converse
)
{
test_utils
.
waitUntilDiscoConfirmed
(
await
test_utils
.
waitUntilDiscoConfirmed
(
_converse
,
_converse
.
bare_jid
,
_converse
,
_converse
.
bare_jid
,
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
).
then
(
function
()
{
);
return
test_utils
.
waitUntil
(()
=>
_converse
.
bookmarks
);
await
test_utils
.
waitUntil
(()
=>
_converse
.
bookmarks
);
}).
then
(
function
()
{
// Emit here instead of mocking fetching of bookmarks.
// Emit here instead of mocking fetching of bookmarks.
_converse
.
emit
(
'
bookmarksInitialized
'
);
_converse
.
emit
(
'
bookmarksInitialized
'
);
...
@@ -362,12 +354,10 @@
...
@@ -362,12 +354,10 @@
'
jid
'
:
'
theplay@conference.shakespeare.lit
'
})
'
jid
'
:
'
theplay@conference.shakespeare.lit
'
})
.
c
(
'
nick
'
).
t
(
'
JC
'
);
.
c
(
'
nick
'
).
t
(
'
JC
'
);
_converse
.
connection
.
_dataRecv
(
test_utils
.
createRequest
(
stanza
));
_converse
.
connection
.
_dataRecv
(
test_utils
.
createRequest
(
stanza
));
return
test_utils
.
waitUntil
(()
=>
_converse
.
bookmarks
.
length
);
await
test_utils
.
waitUntil
(()
=>
_converse
.
bookmarks
.
length
);
}).
then
(
function
()
{
expect
(
_converse
.
bookmarks
.
length
).
toBe
(
1
);
expect
(
_converse
.
bookmarks
.
length
).
toBe
(
1
);
expect
(
_converse
.
chatboxviews
.
get
(
'
theplay@conference.shakespeare.lit
'
)).
not
.
toBeUndefined
();
expect
(
_converse
.
chatboxviews
.
get
(
'
theplay@conference.shakespeare.lit
'
)).
not
.
toBeUndefined
();
done
();
done
();
});
}));
}));
...
@@ -619,14 +609,14 @@
...
@@ -619,14 +609,14 @@
it
(
"
can be closed
"
,
mock
.
initConverseWithPromises
(
it
(
"
can be closed
"
,
mock
.
initConverseWithPromises
(
null
,
[
'
rosterGroupsFetched
'
],
null
,
[
'
rosterGroupsFetched
'
],
{
hide_open_bookmarks
:
true
},
{
hide_open_bookmarks
:
true
},
function
(
done
,
_converse
)
{
async
function
(
done
,
_converse
)
{
const
jid
=
'
room@conference.example.org
'
;
const
jid
=
'
room@conference.example.org
'
;
test_utils
.
waitUntilDiscoConfirmed
(
await
test_utils
.
waitUntilDiscoConfirmed
(
_converse
,
_converse
.
bare_jid
,
_converse
,
_converse
.
bare_jid
,
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[{
'
category
'
:
'
pubsub
'
,
'
type
'
:
'
pep
'
}],
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
[
'
http://jabber.org/protocol/pubsub#publish-options
'
]
)
.
then
(
function
()
{
)
;
// XXX Create bookmarks view here, otherwise we need to mock stanza
// XXX Create bookmarks view here, otherwise we need to mock stanza
// traffic for it to get created.
// traffic for it to get created.
_converse
.
bookmarksview
=
new
_converse
.
BookmarksView
(
_converse
.
bookmarksview
=
new
_converse
.
BookmarksView
(
...
@@ -642,21 +632,19 @@
...
@@ -642,21 +632,19 @@
'
nick
'
:
'
Othello
'
'
nick
'
:
'
Othello
'
});
});
expect
(
_converse
.
bookmarks
.
length
).
toBe
(
1
);
expect
(
_converse
.
bookmarks
.
length
).
toBe
(
1
);
var
room_els
=
_converse
.
bookmarksview
.
el
.
querySelectorAll
(
"
.open-room
"
);
const
room_els
=
_converse
.
bookmarksview
.
el
.
querySelectorAll
(
"
.open-room
"
);
expect
(
room_els
.
length
).
toBe
(
1
);
expect
(
room_els
.
length
).
toBe
(
1
);
// Check that it disappears once the room is opened
// Check that it disappears once the room is opened
var
bookmark
=
_converse
.
bookmarksview
.
el
.
querySelector
(
"
.open-room
"
);
const
bookmark
=
_converse
.
bookmarksview
.
el
.
querySelector
(
"
.open-room
"
);
bookmark
.
click
();
bookmark
.
click
();
return
test_utils
.
waitUntil
(()
=>
_converse
.
chatboxviews
.
get
(
jid
));
await
test_utils
.
waitUntil
(()
=>
_converse
.
chatboxviews
.
get
(
jid
));
}).
then
(()
=>
{
expect
(
u
.
hasClass
(
'
hidden
'
,
_converse
.
bookmarksview
.
el
.
querySelector
(
"
.available-chatroom
"
))).
toBeTruthy
();
expect
(
u
.
hasClass
(
'
hidden
'
,
_converse
.
bookmarksview
.
el
.
querySelector
(
"
.available-chatroom
"
))).
toBeTruthy
();
// Check that it reappears once the room is closed
// Check that it reappears once the room is closed
const
view
=
_converse
.
chatboxviews
.
get
(
jid
);
const
view
=
_converse
.
chatboxviews
.
get
(
jid
);
view
.
close
();
view
.
close
();
expect
(
u
.
hasClass
(
'
hidden
'
,
_converse
.
bookmarksview
.
el
.
querySelector
(
"
.available-chatroom
"
))).
toBeFalsy
();
expect
(
u
.
hasClass
(
'
hidden
'
,
_converse
.
bookmarksview
.
el
.
querySelector
(
"
.available-chatroom
"
))).
toBeFalsy
();
done
();
done
();
});
}));
}));
});
});
}));
}));
spec/converse.js
View file @
c22fe41a
...
@@ -11,9 +11,10 @@
...
@@ -11,9 +11,10 @@
describe
(
"
Converse
"
,
function
()
{
describe
(
"
Converse
"
,
function
()
{
describe
(
"
Authentication
"
,
function
()
{
describe
(
"
Authentication
"
,
function
()
{
it
(
"
needs either a bosh_service_url a websocket_url or both
"
,
mock
.
initConverse
(
function
(
_converse
)
{
it
(
"
needs either a bosh_service_url a websocket_url or both
"
,
mock
.
initConverse
(
function
(
_converse
)
{
var
url
=
_converse
.
bosh_service_url
;
const
url
=
_converse
.
bosh_service_url
;
var
connection
=
_converse
.
connection
;
const
connection
=
_converse
.
connection
;
delete
_converse
.
bosh_service_url
;
delete
_converse
.
bosh_service_url
;
delete
_converse
.
connection
;
delete
_converse
.
connection
;
expect
(
_converse
.
initConnection
).
toThrow
(
expect
(
_converse
.
initConnection
).
toThrow
(
...
@@ -271,7 +272,9 @@
...
@@ -271,7 +272,9 @@
describe
(
"
The
\"
chats
\"
API
"
,
function
()
{
describe
(
"
The
\"
chats
\"
API
"
,
function
()
{
it
(
"
has a method 'get' which returns the promise that resolves to a chat model
"
,
mock
.
initConverseWithPromises
(
it
(
"
has a method 'get' which returns the promise that resolves to a chat model
"
,
mock
.
initConverseWithPromises
(
null
,
[
'
rosterInitialized
'
,
'
chatBoxesInitialized
'
],
{},
function
(
done
,
_converse
)
{
null
,
[
'
rosterInitialized
'
,
'
chatBoxesInitialized
'
],
{},
async
function
(
done
,
_converse
)
{
test_utils
.
openControlBox
();
test_utils
.
openControlBox
();
test_utils
.
createContacts
(
_converse
,
'
current
'
,
2
);
test_utils
.
createContacts
(
_converse
,
'
current
'
,
2
);
_converse
.
emit
(
'
rosterContactsFetched
'
);
_converse
.
emit
(
'
rosterContactsFetched
'
);
...
@@ -288,7 +291,7 @@
...
@@ -288,7 +291,7 @@
// Test for one JID
// Test for one JID
test_utils
.
openChatBoxFor
(
_converse
,
jid
);
test_utils
.
openChatBoxFor
(
_converse
,
jid
);
test_utils
.
waitUntil
(()
=>
_converse
.
chatboxes
.
length
==
1
).
then
(()
=>
{
await
test_utils
.
waitUntil
(()
=>
_converse
.
chatboxes
.
length
==
1
);
box
=
_converse
.
api
.
chats
.
get
(
jid
);
box
=
_converse
.
api
.
chats
.
get
(
jid
);
expect
(
box
instanceof
Object
).
toBeTruthy
();
expect
(
box
instanceof
Object
).
toBeTruthy
();
expect
(
box
.
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid
));
expect
(
box
.
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid
));
...
@@ -297,18 +300,17 @@
...
@@ -297,18 +300,17 @@
expect
(
u
.
isVisible
(
chatboxview
.
el
)).
toBeTruthy
();
expect
(
u
.
isVisible
(
chatboxview
.
el
)).
toBeTruthy
();
// Test for multiple JIDs
// Test for multiple JIDs
test_utils
.
openChatBoxFor
(
_converse
,
jid2
);
test_utils
.
openChatBoxFor
(
_converse
,
jid2
);
return
test_utils
.
waitUntil
(()
=>
_converse
.
chatboxes
.
length
==
2
);
await
test_utils
.
waitUntil
(()
=>
_converse
.
chatboxes
.
length
==
2
);
}).
then
(()
=>
{
const
list
=
_converse
.
api
.
chats
.
get
([
jid
,
jid2
]);
const
list
=
_converse
.
api
.
chats
.
get
([
jid
,
jid2
]);
expect
(
_
.
isArray
(
list
)).
toBeTruthy
();
expect
(
_
.
isArray
(
list
)).
toBeTruthy
();
expect
(
list
[
0
].
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid
));
expect
(
list
[
0
].
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid
));
expect
(
list
[
1
].
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid2
));
expect
(
list
[
1
].
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid2
));
done
();
done
();
}).
catch
(
_
.
partial
(
console
.
error
,
_
));
}));
}));
it
(
"
has a method 'open' which opens and returns a promise that resolves to a chat model
"
,
mock
.
initConverseWithPromises
(
it
(
"
has a method 'open' which opens and returns a promise that resolves to a chat model
"
,
mock
.
initConverseWithPromises
(
null
,
[
'
rosterGroupsFetched
'
,
'
chatBoxesInitialized
'
],
{},
function
(
done
,
_converse
)
{
null
,
[
'
rosterGroupsFetched
'
,
'
chatBoxesInitialized
'
],
{},
async
function
(
done
,
_converse
)
{
test_utils
.
openControlBox
();
test_utils
.
openControlBox
();
test_utils
.
createContacts
(
_converse
,
'
current
'
,
2
);
test_utils
.
createContacts
(
_converse
,
'
current
'
,
2
);
...
@@ -319,7 +321,7 @@
...
@@ -319,7 +321,7 @@
// Test on chat that doesn't exist.
// Test on chat that doesn't exist.
expect
(
_converse
.
api
.
chats
.
get
(
'
non-existing@jabber.org
'
)).
toBeFalsy
();
expect
(
_converse
.
api
.
chats
.
get
(
'
non-existing@jabber.org
'
)).
toBeFalsy
();
return
_converse
.
api
.
chats
.
open
(
jid
).
then
((
box
)
=>
{
const
box
=
await
_converse
.
api
.
chats
.
open
(
jid
);
expect
(
box
instanceof
Object
).
toBeTruthy
();
expect
(
box
instanceof
Object
).
toBeTruthy
();
expect
(
box
.
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid
));
expect
(
box
.
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid
));
expect
(
expect
(
...
@@ -329,13 +331,11 @@
...
@@ -329,13 +331,11 @@
const
chatboxview
=
_converse
.
chatboxviews
.
get
(
jid
);
const
chatboxview
=
_converse
.
chatboxviews
.
get
(
jid
);
expect
(
u
.
isVisible
(
chatboxview
.
el
)).
toBeTruthy
();
expect
(
u
.
isVisible
(
chatboxview
.
el
)).
toBeTruthy
();
// Test for multiple JIDs
// Test for multiple JIDs
return
_converse
.
api
.
chats
.
open
([
jid
,
jid2
]);
const
list
=
await
_converse
.
api
.
chats
.
open
([
jid
,
jid2
]);
}).
then
((
list
)
=>
{
expect
(
_
.
isArray
(
list
)).
toBeTruthy
();
expect
(
_
.
isArray
(
list
)).
toBeTruthy
();
expect
(
list
[
0
].
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid
));
expect
(
list
[
0
].
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid
));
expect
(
list
[
1
].
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid2
));
expect
(
list
[
1
].
get
(
'
box_id
'
)).
toBe
(
b64_sha1
(
jid2
));
done
();
done
();
});
}));
}));
});
});
...
@@ -361,7 +361,7 @@
...
@@ -361,7 +361,7 @@
it
(
"
only has a method 'add' for registering plugins
"
,
mock
.
initConverse
(
function
(
_converse
)
{
it
(
"
only has a method 'add' for registering plugins
"
,
mock
.
initConverse
(
function
(
_converse
)
{
expect
(
_
.
keys
(
converse
.
plugins
)).
toEqual
([
"
add
"
]);
expect
(
_
.
keys
(
converse
.
plugins
)).
toEqual
([
"
add
"
]);
// Cheating a little bit. We clear the plugins to test more easily.
// Cheating a little bit. We clear the plugins to test more easily.
var
_old_plugins
=
_converse
.
pluggable
.
plugins
;
const
_old_plugins
=
_converse
.
pluggable
.
plugins
;
_converse
.
pluggable
.
plugins
=
[];
_converse
.
pluggable
.
plugins
=
[];
converse
.
plugins
.
add
(
'
plugin1
'
,
{});
converse
.
plugins
.
add
(
'
plugin1
'
,
{});
expect
(
_
.
keys
(
_converse
.
pluggable
.
plugins
)).
toEqual
([
'
plugin1
'
]);
expect
(
_
.
keys
(
_converse
.
pluggable
.
plugins
)).
toEqual
([
'
plugin1
'
]);
...
...
spec/roomslist.js
View file @
c22fe41a
...
@@ -58,22 +58,20 @@
...
@@ -58,22 +58,20 @@
{
whitelisted_plugins
:
[
'
converse-roomslist
'
],
{
whitelisted_plugins
:
[
'
converse-roomslist
'
],
allow_bookmarks
:
false
// Makes testing easier, otherwise we
allow_bookmarks
:
false
// Makes testing easier, otherwise we
// have to mock stanza traffic.
// have to mock stanza traffic.
},
function
(
done
,
_converse
)
{
},
async
function
(
done
,
_converse
)
{
spyOn
(
_converse
,
'
isSingleton
'
).
and
.
callFake
(()
=>
true
);
spyOn
(
_converse
,
'
isSingleton
'
).
and
.
callFake
(()
=>
true
);
let
room_els
,
item
;
let
room_els
,
item
;
test_utils
.
openControlBox
();
test_utils
.
openControlBox
();
_converse
.
api
.
rooms
.
open
(
'
coven@chat.shakespeare.lit
'
,
{
'
nick
'
:
'
some1
'
})
await
_converse
.
api
.
rooms
.
open
(
'
coven@chat.shakespeare.lit
'
,
{
'
nick
'
:
'
some1
'
});
.
then
(()
=>
{
room_els
=
_converse
.
rooms_list_view
.
el
.
querySelectorAll
(
"
.available-chatroom
"
);
room_els
=
_converse
.
rooms_list_view
.
el
.
querySelectorAll
(
"
.available-chatroom
"
);
expect
(
room_els
.
length
).
toBe
(
1
);
expect
(
room_els
.
length
).
toBe
(
1
);
item
=
room_els
[
0
];
item
=
room_els
[
0
];
expect
(
u
.
hasClass
(
'
open
'
,
item
)).
toBe
(
true
);
expect
(
u
.
hasClass
(
'
open
'
,
item
)).
toBe
(
true
);
expect
(
item
.
textContent
.
trim
()).
toBe
(
'
coven@chat.shakespeare.lit
'
);
expect
(
item
.
textContent
.
trim
()).
toBe
(
'
coven@chat.shakespeare.lit
'
);
return
_converse
.
api
.
rooms
.
open
(
'
balcony@chat.shakespeare.lit
'
,
{
'
nick
'
:
'
some1
'
});
await
_converse
.
api
.
rooms
.
open
(
'
balcony@chat.shakespeare.lit
'
,
{
'
nick
'
:
'
some1
'
});
}).
then
(()
=>
{
room_els
=
_converse
.
rooms_list_view
.
el
.
querySelectorAll
(
"
.open-room
"
);
room_els
=
_converse
.
rooms_list_view
.
el
.
querySelectorAll
(
"
.open-room
"
);
expect
(
room_els
.
length
).
toBe
(
2
);
expect
(
room_els
.
length
).
toBe
(
2
);
...
@@ -82,7 +80,6 @@
...
@@ -82,7 +80,6 @@
item
=
room_els
[
0
];
item
=
room_els
[
0
];
expect
(
item
.
textContent
.
trim
()).
toBe
(
'
balcony@chat.shakespeare.lit
'
);
expect
(
item
.
textContent
.
trim
()).
toBe
(
'
balcony@chat.shakespeare.lit
'
);
done
();
done
();
}).
catch
(
_
.
partial
(
_converse
.
log
,
_
,
Strophe
.
LogLevel
.
FATAL
));
}));
}));
it
(
"
has an info icon which opens a details modal when clicked
"
,
mock
.
initConverseWithPromises
(
it
(
"
has an info icon which opens a details modal when clicked
"
,
mock
.
initConverseWithPromises
(
...
@@ -195,15 +192,13 @@
...
@@ -195,15 +192,13 @@
it
(
"
can be closed
"
,
mock
.
initConverseWithPromises
(
it
(
"
can be closed
"
,
mock
.
initConverseWithPromises
(
null
,
[
'
rosterGroupsFetched
'
],
null
,
[
'
rosterGroupsFetched
'
],
{
whitelisted_plugins
:
[
'
converse-roomslist
'
],
{
whitelisted_plugins
:
[
'
converse-roomslist
'
],
allow_bookmarks
:
false
// Makes testing easier, otherwise we
allow_bookmarks
:
false
// Makes testing easier, otherwise we have to mock stanza traffic.
// have to mock stanza traffic.
},
},
function
(
done
,
_converse
)
{
async
function
(
done
,
_converse
)
{
spyOn
(
window
,
'
confirm
'
).
and
.
callFake
(()
=>
true
);
spyOn
(
window
,
'
confirm
'
).
and
.
callFake
(()
=>
true
);
expect
(
_converse
.
chatboxes
.
length
).
toBe
(
1
);
expect
(
_converse
.
chatboxes
.
length
).
toBe
(
1
);
test_utils
.
openChatRoom
(
_converse
,
'
lounge
'
,
'
conference.shakespeare.lit
'
,
'
JC
'
)
await
test_utils
.
openChatRoom
(
_converse
,
'
lounge
'
,
'
conference.shakespeare.lit
'
,
'
JC
'
);
.
then
(()
=>
{
expect
(
_converse
.
chatboxes
.
length
).
toBe
(
2
);
expect
(
_converse
.
chatboxes
.
length
).
toBe
(
2
);
var
room_els
=
_converse
.
rooms_list_view
.
el
.
querySelectorAll
(
"
.open-room
"
);
var
room_els
=
_converse
.
rooms_list_view
.
el
.
querySelectorAll
(
"
.open-room
"
);
expect
(
room_els
.
length
).
toBe
(
1
);
expect
(
room_els
.
length
).
toBe
(
1
);
...
@@ -215,25 +210,20 @@
...
@@ -215,25 +210,20 @@
expect
(
room_els
.
length
).
toBe
(
0
);
expect
(
room_els
.
length
).
toBe
(
0
);
expect
(
_converse
.
chatboxes
.
length
).
toBe
(
1
);
expect
(
_converse
.
chatboxes
.
length
).
toBe
(
1
);
done
();
done
();
});
}));
}));
it
(
"
shows unread messages directed at the user
"
,
mock
.
initConverseWithAsync
(
it
(
"
shows unread messages directed at the user
"
,
mock
.
initConverseWithAsync
(
{
whitelisted_plugins
:
[
'
converse-roomslist
'
],
{
whitelisted_plugins
:
[
'
converse-roomslist
'
],
allow_bookmarks
:
false
// Makes testing easier, otherwise we
allow_bookmarks
:
false
// Makes testing easier, otherwise we have to mock stanza traffic.
// have to mock stanza traffic.
},
async
function
(
done
,
_converse
)
{
},
function
(
done
,
_converse
)
{
let
view
,
nick
;
const
room_jid
=
'
kitchen@conference.shakespeare.lit
'
;
const
room_jid
=
'
kitchen@conference.shakespeare.lit
'
;
await
test_utils
.
waitUntil
(()
=>
!
_
.
isUndefined
(
_converse
.
rooms_list_view
),
500
);
test_utils
.
waitUntil
(()
=>
!
_
.
isUndefined
(
_converse
.
rooms_list_view
),
500
)
await
test_utils
.
openAndEnterChatRoom
(
_converse
,
'
kitchen
'
,
'
conference.shakespeare.lit
'
,
'
romeo
'
);
.
then
(()
=>
test_utils
.
openAndEnterChatRoom
(
_converse
,
'
kitchen
'
,
'
conference.shakespeare.lit
'
,
'
romeo
'
))
const
view
=
_converse
.
chatboxviews
.
get
(
room_jid
);
.
then
(()
=>
{
view
=
_converse
.
chatboxviews
.
get
(
room_jid
);
view
.
model
.
set
({
'
minimized
'
:
true
});
view
.
model
.
set
({
'
minimized
'
:
true
});
const
contact_jid
=
mock
.
cur_names
[
5
].
replace
(
/ /g
,
'
.
'
).
toLowerCase
()
+
'
@localhost
'
;
const
contact_jid
=
mock
.
cur_names
[
5
].
replace
(
/ /g
,
'
.
'
).
toLowerCase
()
+
'
@localhost
'
;
nick
=
mock
.
chatroom_names
[
0
];
const
nick
=
mock
.
chatroom_names
[
0
];
view
.
model
.
onMessage
(
view
.
model
.
onMessage
(
$msg
({
$msg
({
from
:
room_jid
+
'
/
'
+
nick
,
from
:
room_jid
+
'
/
'
+
nick
,
...
@@ -243,9 +233,7 @@
...
@@ -243,9 +233,7 @@
}).
c
(
'
body
'
).
t
(
'
foo
'
).
tree
());
}).
c
(
'
body
'
).
t
(
'
foo
'
).
tree
());
// If the user isn't mentioned, the counter doesn't get incremented, but the text of the groupchat is bold
// If the user isn't mentioned, the counter doesn't get incremented, but the text of the groupchat is bold
var
room_el
=
_converse
.
rooms_list_view
.
el
.
querySelector
(
let
room_el
=
_converse
.
rooms_list_view
.
el
.
querySelector
(
"
.available-chatroom
"
);
"
.available-chatroom
"
);
expect
(
_
.
includes
(
room_el
.
classList
,
'
unread-msgs
'
));
expect
(
_
.
includes
(
room_el
.
classList
,
'
unread-msgs
'
));
// If the user is mentioned, the counter also gets updated
// If the user is mentioned, the counter also gets updated
...
@@ -257,10 +245,9 @@
...
@@ -257,10 +245,9 @@
type
:
'
groupchat
'
type
:
'
groupchat
'
}).
c
(
'
body
'
).
t
(
'
romeo: Your attention is required
'
).
tree
()
}).
c
(
'
body
'
).
t
(
'
romeo: Your attention is required
'
).
tree
()
);
);
return
test_utils
.
waitUntil
(()
=>
_converse
.
rooms_list_view
.
el
.
querySelectorAll
(
"
.msgs-indicator
"
).
length
);
await
test_utils
.
waitUntil
(()
=>
_converse
.
rooms_list_view
.
el
.
querySelectorAll
(
"
.msgs-indicator
"
).
length
);
}).
then
(()
=>
{
spyOn
(
view
.
model
,
'
incrementUnreadMsgCounter
'
).
and
.
callThrough
();
spyOn
(
view
.
model
,
'
incrementUnreadMsgCounter
'
).
and
.
callThrough
();
cons
t
indicator_el
=
_converse
.
rooms_list_view
.
el
.
querySelector
(
"
.msgs-indicator
"
);
le
t
indicator_el
=
_converse
.
rooms_list_view
.
el
.
querySelector
(
"
.msgs-indicator
"
);
expect
(
indicator_el
.
textContent
).
toBe
(
'
1
'
);
expect
(
indicator_el
.
textContent
).
toBe
(
'
1
'
);
view
.
model
.
onMessage
(
view
.
model
.
onMessage
(
$msg
({
$msg
({
...
@@ -270,19 +257,17 @@
...
@@ -270,19 +257,17 @@
type
:
'
groupchat
'
type
:
'
groupchat
'
}).
c
(
'
body
'
).
t
(
'
romeo: and another thing...
'
).
tree
()
}).
c
(
'
body
'
).
t
(
'
romeo: and another thing...
'
).
tree
()
);
);
return
test_utils
.
waitUntil
(()
=>
view
.
model
.
incrementUnreadMsgCounter
.
calls
.
count
());
await
test_utils
.
waitUntil
(()
=>
view
.
model
.
incrementUnreadMsgCounter
.
calls
.
count
());
}).
then
(()
=>
{
indicator_el
=
_converse
.
rooms_list_view
.
el
.
querySelector
(
"
.msgs-indicator
"
);
let
indicator_el
=
_converse
.
rooms_list_view
.
el
.
querySelector
(
"
.msgs-indicator
"
);
expect
(
indicator_el
.
textContent
).
toBe
(
'
2
'
);
expect
(
indicator_el
.
textContent
).
toBe
(
'
2
'
);
// When the chat gets maximized again, the unread indicators are removed
// When the chat gets maximized again, the unread indicators are removed
view
.
model
.
set
({
'
minimized
'
:
false
});
view
.
model
.
set
({
'
minimized
'
:
false
});
indicator_el
=
_converse
.
rooms_list_view
.
el
.
querySelector
(
"
.msgs-indicator
"
);
indicator_el
=
_converse
.
rooms_list_view
.
el
.
querySelector
(
"
.msgs-indicator
"
);
expect
(
_
.
isNull
(
indicator_el
));
expect
(
_
.
isNull
(
indicator_el
));
const
room_el
=
_converse
.
rooms_list_view
.
el
.
querySelector
(
"
.available-chatroom
"
);
room_el
=
_converse
.
rooms_list_view
.
el
.
querySelector
(
"
.available-chatroom
"
);
expect
(
_
.
includes
(
room_el
.
classList
,
'
unread-msgs
'
)).
toBeFalsy
();
expect
(
_
.
includes
(
room_el
.
classList
,
'
unread-msgs
'
)).
toBeFalsy
();
done
();
done
();
}).
catch
(
_
.
partial
(
_converse
.
log
,
_
,
Strophe
.
LogLevel
.
FATAL
));
}));
}));
});
});
}));
}));
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