const should = require('should');
const sinon = require('sinon');
const configUtils = require('../../../utils/configUtils');
const {events} = require('../../../../core/server/lib/common');
const controllers = require('../../../../core/frontend/services/routing/controllers');
const RSSRouter = require('../../../../core/frontend/services/routing/RSSRouter');
const urlUtils = require('../../../../core/shared/url-utils');

describe('UNIT - services/routing/RSSRouter', function () {
    describe('instantiate', function () {
        beforeEach(function () {
            sinon.stub(events, 'emit');
            sinon.stub(events, 'on');

            sinon.spy(RSSRouter.prototype, 'mountRoute');
            sinon.spy(RSSRouter.prototype, 'mountRouter');

            sinon.stub(urlUtils, 'urlJoin');
        });

        afterEach(function () {
            sinon.restore();
            configUtils.restore();
        });

        it('default', function () {
            const rssRouter = new RSSRouter();

            should.exist(rssRouter.router);
            rssRouter.route.value.should.eql('/rss/');

            events.emit.calledOnce.should.be.false();
            events.on.calledOnce.should.be.false();

            rssRouter.mountRoute.callCount.should.eql(2);

            rssRouter.mountRoute.args[0][0].should.eql('/rss/');
            rssRouter.mountRoute.args[0][1].should.eql(controllers.rss);

            rssRouter.mountRoute.args[1][0].should.eql('/feed/');
        });

        it('subdirectory is enabled', function () {
            configUtils.set('url', 'http://localhost:22222/blog/');
            const rssRouter = new RSSRouter();

            should.exist(rssRouter.router);
            rssRouter.route.value.should.eql('/rss/');

            events.emit.calledOnce.should.be.false();
            events.on.calledOnce.should.be.false();

            rssRouter.mountRoute.callCount.should.eql(2);

            rssRouter.mountRoute.args[0][0].should.eql('/rss/');
            rssRouter.mountRoute.args[0][1].should.eql(controllers.rss);

            rssRouter.mountRoute.args[1][0].should.eql('/feed/');
        });
    });
});
