// test "create_action/1 kind: ability/unload" { // user = insert(:user) // commander = insert(:commander) // user_data = build(:user_data, %{ // turn: true, // user_id: user.id, // commander_id: commander.id // }) // infantry_data = unit_data(AWDS.infantry(), %{ // coord: build(:coord, %{x: 0, y: 0}), // user_id: user_data.user_id, // team: 1 // }) // mech_data = unit_data(AWDS.mech(), %{ // coord: build(:coord, %{x: 0, y: 0}), // user_id: user_data.user_id, // team: 1 // }) // apc_data = unit_data(AWDS.apc(), %{ // coord: build(:coord, %{x: 0, y: 0}), // user_id: user_data.user_id, // team: 1 // }) // map = insert(:map) // game = insert(:game, %{ // weather: "Clear", // map: map, // map_data: map.map_data, // map_type: map.map_type, // user_data: [user_data], // unit_data: [infantry_data, mech_data, apc_data] // }) // #correcting data because ecto stinks // infantry_data = game.unit_data |> Enum.at(0) // mech_data = game.unit_data |> Enum.at(1) // apc_data = // game.unit_data // |> Enum.at(2) // |> Map.put(:load_data, [infantry_data.id, mech_data.id]) // update_game = // game // |> Game.update_data(apc_data) // |> Map.put(:system, true) // game = Repo.update!(Game.changeset(game, update_game)) // insert(:game_user, %{game: game, faction: 1}) // insert(:game_user, %{game: game, faction: 2}) // action = build(:action, %{ // kind: "ability", // ability_id: AbilityKind::Unload, // subject_unit_data_id: apc_data.id, // game_id: game.id, // user_id: user.id, // move_coords: [ // build(:coord, %{x: 0, y: 1}), // build(:coord, %{x: 0, y: 2}), // build(:coord, %{x: 0, y: 3}), // build(:coord, %{x: 0, y: 4}) // ], // target_coords: [ // build(:coord, %{x: 0, y: 3}), // build(:coord, %{x: 1, y: 4}), // ], // params: [mech_data.id, infantry_data.id] // }) // |> Map.from_struct() // assert {:ok, Action { // game: Game { // unit_data: [ // UnitData {id: apc_data_id, coord: %{x: 0, y: 4}, load_data: [], state: "exhausted"}, // UnitData {id: mech_data_id, coord: %{x: 1, y: 4}, state: "exhausted"}, // UnitData {id: infantry_data_id, coord: %{x: 0, y: 3}, state: "exhausted"}, // ] // } // }} = Engine.create_action(action) // assert infantry_data.id == infantry_data_id // assert mech_data.id == mech_data_id // assert apc_data.id == apc_data_id // }