eecs448-project-4/test/frontend/pages_AddPlayers.spec.js

100 lines
2.7 KiB
JavaScript

import { expect } from 'chai'
import sinon from 'sinon'
import AddPlayersComponent from '../../frontend/src/components/pages/AddPlayers.component'
// Since we're testing code meant for the browser, not node, mock this
global.window = global
global.APP_BASE_PATH = 'http://fake.url/app/'
const get_inst = () => {
return [new AddPlayersComponent(), [
{
name: 'Lorem',
position: 'Ipsum',
},
{
name: 'Dolor',
position: 'Sit',
},
{
name: 'Amet',
position: 'Fubar',
},
]]
}
describe('the add players page component', function() {
it('should extend the component class', function() {
expect(get_inst()[0]).to.be.an.instanceOf(AddPlayersComponent)
})
it('should quick-filter the players', function() {
const [inst, players] = get_inst()
inst.possible_players = players
inst.quick_filter = 'lorem'
inst.on_filter_change()
expect(inst.filtered_players).to.be.an('array')
expect(inst.filtered_players.length).to.be.equal(1)
expect(inst.filtered_players[0]).to.be.eql({
name: 'Lorem',
position: 'Ipsum',
})
})
it('should allow switching to my team only', function() {
const [inst, players] = get_inst()
const my_team = [players[1]]
inst.all_players = players
inst.my_team = my_team
inst.to_my_team_only()
expect(inst.possible_players).to.be.eql(my_team)
expect(inst.my_team_only).to.be.true
})
it('should allow switching to view all players', function() {
const [inst, players] = get_inst()
const my_team = [players[1]]
inst.all_players = players
inst.my_team = my_team
inst.to_all_players()
expect(inst.possible_players).to.be.eql(players)
expect(inst.my_team_only).to.be.false
})
it('should allow adding a player', function() {
const [inst, players] = get_inst()
inst.my_team = []
inst.add_to_team(players[0])
inst.add_to_team(players[0])
inst.add_to_team(players[0])
expect(inst.my_team.length).to.be.equal(1)
expect(inst.my_team[0]).to.be.eql(players[0])
})
it('should allow removing a player', function() {
const [inst, players] = get_inst()
inst.my_team = [...players]
const removed = [players[0], players[2]]
inst.remove_from_team(players[1])
inst.remove_from_team(players[1])
inst.remove_from_team(players[1])
expect(inst.my_team.length).to.be.equal(2)
expect(inst.my_team).to.be.eql(removed)
})
})