/*globals describe, beforeEach, afterEach, it*/
/*jshint expr:true*/
var nock            = require('nock'),
    settings        = require('../../server/api').settings,
    should          = require('should'),
    sinon           = require('sinon'),
    testUtils       = require('../utils'),
    Promise         = require('bluebird'),
    xmlrpc          = require('../../server/xmlrpc'),
    // storing current environment
    currentEnv      = process.env.NODE_ENV;

// To stop jshint complaining
should.equal(true, true);

describe('XMLRPC', function () {
    var sandbox;

    beforeEach(function () {
        sandbox = sinon.sandbox.create();
        // give environment a value that will ping
        process.env.NODE_ENV = 'production';
    });

    afterEach(function () {
        sandbox.restore();
        // reset the environment
        process.env.NODE_ENV = currentEnv;
    });

    it('should execute two pings', function (done) {
        var ping1 = nock('http://blogsearch.google.com').post('/ping/RPC2').reply(200),
            ping2 = nock('http://rpc.pingomatic.com').post('/').reply(200),
            testPost = testUtils.DataGenerator.Content.posts[2],
            settingsStub = sandbox.stub(settings, 'read', function () {
                return Promise.resolve({settings: [{value: '/:slug/'}]});
            });
        /*jshint unused:false */

        xmlrpc.ping(testPost).then(function () {
            ping1.isDone().should.be.true;
            ping2.isDone().should.be.true;

            done();
        }).catch(done);
    });
});