2018-02-08 05:19:44 +00:00
"use strict" ;
2018-06-15 20:31:06 +00:00
const log = require ( "../../../src/log" ) ;
2018-02-08 05:19:44 +00:00
const expect = require ( "chai" ) . expect ;
2018-03-20 05:54:04 +00:00
const stub = require ( "sinon" ) . stub ;
2018-02-08 05:19:44 +00:00
const TestUtil = require ( "../../util" ) ;
let packages ;
2020-03-21 20:55:36 +00:00
describe ( "packages" , function ( ) {
beforeEach ( function ( ) {
2018-03-20 05:54:04 +00:00
stub ( log , "info" ) ;
2018-02-08 05:19:44 +00:00
delete require . cache [ require . resolve ( "../../../src/plugins/packages" ) ] ;
packages = require ( "../../../src/plugins/packages" ) ;
} ) ;
2020-03-21 20:55:36 +00:00
afterEach ( function ( ) {
2018-03-20 05:54:04 +00:00
log . info . restore ( ) ;
2018-02-08 05:19:44 +00:00
} ) ;
2020-03-21 20:55:36 +00:00
describe ( ".getStylesheets" , function ( ) {
it ( "should contain no stylesheets before packages are loaded" , function ( ) {
2018-02-08 05:19:44 +00:00
expect ( packages . getStylesheets ( ) ) . to . be . empty ;
} ) ;
2020-03-21 20:55:36 +00:00
it ( "should return the list of registered stylesheets for loaded packages" , function ( ) {
2018-02-08 05:19:44 +00:00
packages . loadPackages ( ) ;
2019-07-17 09:33:59 +00:00
expect ( packages . getStylesheets ( ) ) . to . deep . equal ( [ "thelounge-package-foo/style.css" ] ) ;
2018-02-08 05:19:44 +00:00
} ) ;
} ) ;
2020-03-21 20:55:36 +00:00
describe ( ".getPackage" , function ( ) {
it ( "should contain no reference to packages before loading them" , function ( ) {
2018-02-08 05:19:44 +00:00
expect ( packages . getPackage ( "thelounge-package-foo" ) ) . to . be . undefined ;
} ) ;
2020-03-21 20:55:36 +00:00
it ( "should return details of a registered package after it was loaded" , function ( ) {
2018-02-08 05:19:44 +00:00
packages . loadPackages ( ) ;
2019-07-17 09:33:59 +00:00
expect ( packages . getPackage ( "thelounge-package-foo" ) ) . to . have . key ( "onServerStart" ) ;
2018-02-08 05:19:44 +00:00
} ) ;
} ) ;
2020-03-21 20:55:36 +00:00
describe ( ".loadPackages" , function ( ) {
it ( "should display report about loading packages" , function ( ) {
2018-02-08 05:19:44 +00:00
// Mock `log.info` to extract its effect into a string
2018-03-20 05:54:04 +00:00
log . info . restore ( ) ;
2018-02-08 05:19:44 +00:00
let stdout = "" ;
2019-07-17 09:33:59 +00:00
stub ( log , "info" ) . callsFake ( TestUtil . sanitizeLog ( ( str ) => ( stdout += str ) ) ) ;
2018-02-08 05:19:44 +00:00
packages . loadPackages ( ) ;
2019-07-17 09:33:59 +00:00
expect ( stdout ) . to . deep . equal (
2019-11-06 16:16:40 +00:00
"Package thelounge-package-foo vdummy loaded\nThere are packages using the experimental plugin API. Be aware that this API is not yet stable and may change in future The Lounge releases.\n"
2019-07-17 09:33:59 +00:00
) ;
2018-02-08 05:19:44 +00:00
} ) ;
} ) ;
} ) ;