diff --git a/GameKit/Tests/InventoryTests/Figures/CalamityJanetTests.swift b/GameKit/Tests/InventoryTests/Figures/CalamityJanetTests.swift index 53875758b..6cb6d4a8b 100644 --- a/GameKit/Tests/InventoryTests/Figures/CalamityJanetTests.swift +++ b/GameKit/Tests/InventoryTests/Figures/CalamityJanetTests.swift @@ -10,7 +10,33 @@ import Inventory import XCTest final class CalamityJanetTests: XCTestCase { - func test_calamityJanetPlayingMissed_shouldPlayAsBang() throws { + func test_calamityJanetPlayingBang_duringHerTurn_shouldPlayAsBang() throws { + // Given + let state = GameState.makeBuilderWithCardRef() + .withPlayer("p1") { + $0.withAttributes([.bangsPerTurn: 1, .weapon: 1]) + .withHand([.bang]) + .withFigure(.calamityJanet) + } + .withPlayer("p2") + .withTurn("p1") + .build() + + // When + let action = GameAction.play(.bang, player: "p1") + let (result, _) = self.awaitAction(action, state: state, choose: ["p2"]) + + // Then + XCTAssertEqual(result, [ + .chooseOne(player: "p1", options: [ + "p2": .playImmediate(.bang, target: "p2", player: "p1") + ]), + .playImmediate(.bang, target: "p2", player: "p1"), + .damage(1, player: "p2") + ]) + } + + func test_calamityJanetPlayingMissed_duringHerTurn_shouldPlayAsBang() throws { // Given let state = GameState.makeBuilderWithCardRef() .withPlayer("p1") { @@ -19,6 +45,7 @@ final class CalamityJanetTests: XCTestCase { .withFigure(.calamityJanet) } .withPlayer("p2") + .withTurn("p1") .build() // When @@ -43,7 +70,37 @@ final class CalamityJanetTests: XCTestCase { .withAttributes([.bangsPerTurn: 1, .weapon: 1]) } .withPlayer("p2") { - $0.withHand(["bang-1", "bang-2"]) + $0.withHand([.bang]) + .withAttributes([.activateCounterCardsOnShot: 0]) + .withFigure(.calamityJanet) + } + .build() + + // When + let action = GameAction.playImmediate(.bang, target: "p2", player: "p1") + let (result, _) = awaitAction(action, state: state, choose: [.bang]) + + // Then + XCTAssertEqual(result, [ + .playImmediate(.bang, target: "p2", player: "p1"), + .chooseOne(player: "p2", options: [ + .bang: .play(.bang, player: "p2"), + .pass: .group([]) + ]), + .playImmediate(.bang, player: "p2"), + .cancel(.damage(1, player: "p2")) + ]) + } + + func test_calamityJanetBeingShot_holdingMissed_shouldAskToCounter() throws { + // Given + let state = GameState.makeBuilderWithCardRef() + .withPlayer("p1") { + $0.withHand([.bang]) + .withAttributes([.bangsPerTurn: 1, .weapon: 1]) + } + .withPlayer("p2") { + $0.withHand([.missed]) .withAttributes([.activateCounterCardsOnShot: 0]) .withFigure(.calamityJanet) } @@ -51,17 +108,16 @@ final class CalamityJanetTests: XCTestCase { // When let action = GameAction.playImmediate(.bang, target: "p2", player: "p1") - let (result, _) = awaitAction(action, state: state, choose: ["bang-1"]) + let (result, _) = awaitAction(action, state: state, choose: [.missed]) // Then XCTAssertEqual(result, [ .playImmediate(.bang, target: "p2", player: "p1"), .chooseOne(player: "p2", options: [ - "bang-1": .play("bang-1", player: "p2"), - "bang-2": .play("bang-2", player: "p2"), + .missed: .play(.missed, player: "p2"), .pass: .group([]) ]), - .playImmediate("bang-1", player: "p2"), + .playImmediate(.missed, player: "p2"), .cancel(.damage(1, player: "p2")) ]) }