 
           next =>
             expect(resolution).toHaveBeenCalled()
+            expect($('.target')).toHaveText('new-text')
+
+        it 'runs an { onRendered } callback when the server response was received and the fragments were swapped', asyncSpec (next) ->
+          fixture('.target')
+
+          callback = jasmine.createSpy('onRendered callback')
+          up.render('.target', url: '/path', onRendered: callback)
+
+          next =>
+            expect(callback).not.toHaveBeenCalled()
+            @respondWithSelector('.target', text: 'new-text')
+
+          next =>
+            expect(callback).toHaveBeenCalledWith(jasmine.any(up.RenderResult))
             expect($('.target')).toHaveText('new-text')
 
         it 'uses a HTTP method given as { method } option', asyncSpec (next) ->

                  expect(state).toBe('rejected')
                  expect(value).toMatch(/No target selector given for failed responses/i)
                  done()

          describe 'with { fail } option', ->


            expect('.middle').toHaveText('new-middle')
            expect('.after').toHaveText('old-after')

        it 'returns a promise that fulfills the server response was received and the fragments were swapped', asyncSpec (next) ->
          fixture('.target')

          resolution = jasmine.createSpy()
