package com.flexpoker.table.command.factory;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import org.junit.Before;
import org.junit.Test;
import com.flexpoker.exception.FlexPokerException;
import com.flexpoker.table.command.aggregate.DefaultTableFactory;
import com.flexpoker.table.command.aggregate.Table;
import com.flexpoker.table.command.commands.CreateTableCommand;
import com.flexpoker.table.command.events.TableCreatedEvent;
import com.flexpoker.table.command.framework.TableEvent;
public class DefaultTableFactoryTest {
private DefaultTableFactory sut;
@Before
public void setup() {
sut = new DefaultTableFactory();
}
@Test
public void testCreateNew() {
Set<UUID> playerIds = new HashSet<>();
playerIds.add(UUID.randomUUID());
playerIds.add(UUID.randomUUID());
CreateTableCommand command = new CreateTableCommand(UUID.randomUUID(),
UUID.randomUUID(), playerIds, 6);
Table table = sut.createNew(command);
assertNotNull(table);
assertFalse(table.fetchAppliedEvents().isEmpty());
assertFalse(table.fetchNewEvents().isEmpty());
}
@Test(expected = FlexPokerException.class)
public void testPlayerListToLongFails() {
Set<UUID> playerIds = new HashSet<>();
playerIds.add(UUID.randomUUID());
playerIds.add(UUID.randomUUID());
playerIds.add(UUID.randomUUID());
CreateTableCommand command = new CreateTableCommand(UUID.randomUUID(),
UUID.randomUUID(), playerIds, 2);
sut.createNew(command);
}
@Test
public void testPlayerListExactSucceeds() {
Set<UUID> playerIds = new HashSet<>();
playerIds.add(UUID.randomUUID());
playerIds.add(UUID.randomUUID());
CreateTableCommand command = new CreateTableCommand(UUID.randomUUID(),
UUID.randomUUID(), playerIds, 2);
Table table = sut.createNew(command);
assertNotNull(table);
assertFalse(table.fetchAppliedEvents().isEmpty());
assertFalse(table.fetchNewEvents().isEmpty());
}
@Test
public void testCreateFrom() {
List<TableEvent> events = new ArrayList<>();
events.add(new TableCreatedEvent(null, 1, UUID.randomUUID(), 6, new HashMap<>(),
1500));
Table table = sut.createFrom(events);
assertNotNull(table);
assertFalse(table.fetchAppliedEvents().isEmpty());
assertTrue(table.fetchNewEvents().isEmpty());
}
}