Skip to content

Instantly share code, notes, and snippets.

@ctataryn
Created February 6, 2012 15:52
Show Gist options
  • Save ctataryn/1752795 to your computer and use it in GitHub Desktop.
Save ctataryn/1752795 to your computer and use it in GitHub Desktop.
jBehave Transaction Problem
@Component
public class PlayerSteps {
@Resource
private PlayerManagementService service;
@Resource(name="dwDataSource")
private DataSource dataSource;
private Player player;
private Player retrievedPlayer;
private ExamplesTable playersTable;
private List<Player> players;
private void insertPlayers(List<Player> players) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
for (Player p : players) {
PersonName name = p.getName();
PersonAddress address = p.getAddress();
jdbcTemplate.update("SET IDENTITY_INSERT Player ON");
jdbcTemplate.update("insert into player (player_id, first_name, last_name, street, city, province, postal_code, created_by_user, last_updated_by_user) " +
"values (?, ?, ?, ?, ?, ?, ?, ?, ?)",
new Object[] {p.getId(),name.getFirstName(), name.getLastName(), address.getStreet1(), address.getCity(),
address.getProvince(), address.getPostal(), "test", "test" });
}
}
@Given("the following players: $playersTable")
public void thePlayers(ExamplesTable playersTable) {
this.playersTable = playersTable;
this.players = new ArrayList<Player>();
for (Map<String, String> row : playersTable.getRows()) {
Player player = new DataWarehousePlayer(Integer.valueOf(row.get("id")));
PersonName name = new PersonName();
name.setFirstName(row.get("fname"));
name.setLastName(row.get("lname"));
player.setName(name);
PersonAddress address = new PersonAddress();
address.setStreet1(row.get("street"));
address.setCity(row.get("city"));
address.setProvince(row.get("province"));
address.setPostal(row.get("postal"));
player.setAddress(address);
players.add(player);
}
insertPlayers(players);
}
@When("a player identified by the ID $playerId is retrieved")
public void retrievePlayerById(Integer playerId) {
retrievedPlayer = service.getPlayerById(playerId);
assertThat(retrievedPlayer, notNullValue());
}
@Then("the player retrieved has attributes matching exactly those which they were defined with")
public void checkRetrievedPlayerAttributes() {
for (Player player : players) {
assertThat(player.getId(), equalTo(retrievedPlayer.getId()));
assertThat(player.getName().getFirstName(), equalTo(retrievedPlayer.getName().getFirstName()));
assertThat(player.getName().getLastName(), equalTo(retrievedPlayer.getName().getLastName()));
assertThat(player.getAddress().getCity(), equalTo(retrievedPlayer.getAddress().getCity()));
assertThat(player.getAddress().getPostal(), equalTo(retrievedPlayer.getAddress().getPostal()));
assertThat(player.getAddress().getProvince(), equalTo(retrievedPlayer.getAddress().getProvince()));
assertThat(player.getAddress().getStreet1(), equalTo(retrievedPlayer.getAddress().getStreet1()));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment