/*globals describe, beforeEach, afterEach, it*/
var assert          = require('assert'),
    http            = require('http'),
    nock            = require('nock'),
    settings        = require('../../server/api').settings;
    should          = require('should'),
    sinon           = require('sinon'),
    testUtils       = require('../utils'),
    when            = require('when'),
    xmlrpc          = require('../../server/xmlrpc'),
    // storing current environment
    currentEnv      = process.env.NODE_ENV;

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 when({ settings: [{value: '/:slug/'}] });
            });

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

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

});