       @team2.first().currentHP.should.be.lessThan @team2.first().stat('hp')
 
   describe "Magnet Rise", ->
+    shared.shouldDoNoDamage("Magnet Rise")
+    shared.shouldFailIfUsedTwice("Magnet Rise")
+
     it "makes the user immune to ground moves", ->
       shared.create.call(this)
       @team1.first().isImmune(@battle, "Ground").should.be.false

      @controller.makeSwitch(@player2, 1)

      @team2.first().validMoves().should.eql [ moves['splash'], moves['tackle'] ]

    # TODO: Is this correct behavior?
    it "fails if the pokemon is already under Torment", ->
      shared.create.call(this)

      mock = sinon.mock(moves['torment'])
      mock.expects('fail').once()

      @controller.makeMove(@player1, "Torment")
      @controller.makeMove(@player2, "Splash")

      @controller.makeMove(@player1, "Torment")
      @controller.makeMove(@player2, "Tackle")

      mock.restore()
      mock.verify()

    xit "does not force the Outrage user to struggle", ->
    xit "does not prevent consecutive use of Struggle", ->

      requestedMoves = @battle.requests[@player2.id].moves
      requestedMoves.should.not.include 'Splash'

  describe 'u-turn', ->
    it 'forces the owner to switch', ->
      shared.create.call(this)
