'use strict';

const assert = require('./../../assert');
const common = require('./../../common');

let battle;

describe('Sleep Clause Mod', () => {
	afterEach(() => battle.destroy());

	it('should prevent players from putting more than one of foe\'s Pokemon to sleep', () => {
		battle = common.createBattle({ sleepClause: true });
		battle.setPlayer('p1', { team: [{ species: "Paras", moves: ['spore'] }] });
		battle.setPlayer('p2', { team: [{ species: "Magikarp", moves: ['splash'] }, { species: "Feebas", moves: ['splash'] }] });
		battle.makeChoices('move spore', 'switch 2');
		assert.equal(battle.p2.active[0].status, 'slp');
		battle.makeChoices('move spore', 'switch 2');
		assert.equal(battle.p2.active[0].status, '');
	});

	it('should not prevent Rest', () => {
		battle = common.createBattle({ sleepClause: true });
		battle.setPlayer('p1', { team: [{ species: "Paras", moves: ['spore', 'tackle'] }] });
		battle.setPlayer('p2', { team: [{ species: "Feebas", moves: ['rest'] }, { species: "Magikarp", moves: ['splash'] }] });
		battle.makeChoices('move spore', 'switch 2');
		assert.equal(battle.p2.active[0].status, 'slp');
		battle.makeChoices('move tackle', 'switch 2');
		assert.equal(battle.p2.active[0].status, '');
		battle.makeChoices('move tackle', 'move rest');
		assert.equal(battle.p2.active[0].status, 'slp');
	});
});