def test_rollback_feature(self):
        request_args = {
            'app_name': 'tests',
            'model_name': 'Foo',
            'pk': 'Initial'
        }

        # Post the form  without any validation failure
        response = self.client.post(
            reverse(
                'create',
                kwargs=request_args
            ),
            {
                'subject': 'test',
                'bar': 'Example',
                'baz': 'WL',
                'qux': 'Nothing',
            })

        instances = Foo.objects.all()
        instance = instances.first()

        # Redirects the control to update form
        request_args = {
            'app_name': 'tests',
            'model_name': 'Foo',
            'pk': instance.id
        }

        self.assertRedirects(
            response,
            reverse('update', kwargs=request_args),
            status_code=302,
            target_status_code=200)

        # Post the form with SAVE action
        response = self.client.post(
            reverse(
                'update',
                kwargs=request_args
            ),
            {
                'subject': 'test',
                'bar': 'Example',
                'baz': 'WL',
                'qux': 'Nothing',
                'save': 'Save'
            })

        # Control redirects to update after save
        self.assertRedirects(
            response,
            reverse(
                'update',
                kwargs=request_args))

        # Post the form with SUBMIT action (to next activity)
        response = self.client.post(
            reverse(
                'update',
                kwargs=request_args
            ),
            {
                'subject': 'test',
                'bar': 'Example',
                'baz': 'WL',
                'qux': 'Nothing',
                'submit': 'corge_activity'
            })

        # Control redirects to workflow detail
        # self.assertRedirects(
        #     response,
        #     reverse(
        #         'workflow-detail',
        #         kwargs={
        #             'app_name': 'tests'}))

        # Initiate task for next (last) activity
        final_task = instance.task.request.tasks.latest('id')

        # Posts the form for last (final) activity
        response = self.client.post(
            reverse(
                'create',
                kwargs={
                    'app_name': 'tests',
                    'model_name': 'Corge',
                    'pk': final_task.id
                    }
            ),
            {'grault': 'Example - big E', 'thud': 23})

        instances = Corge.objects.all()
        instance = instances.latest('id')

        request_args = {
            'app_name': 'tests',
            'model_name': 'Corge',
            'pk': instance.id
        }

        # Control redirects to update after save
        self.assertRedirects(
            response,
            reverse('update', kwargs=request_args),
            status_code=302,
            target_status_code=200)

        self.client.post(reverse(
            'rollback',
            kwargs={
                'app_name': 'tests',
                'pk': instance.task.id
            }))

        request = Request.objects.all().latest('id')
        final_task = request.tasks.latest('id')

        # Rollback result in task creation for previous activity
        self.assertEqual(final_task.activity_ref, 'foo_activity',
                         'Rollback did not create the required task '
                         'for previous activity')
Returns the description text.
dataset/ETHPy150Open faxad/ActivFlow/activflow/tests/tests.py/CoreTests.test_rollback_feature--crossover with--dataset/ETHPy150Open sdispater/cleo/cleo/inputs/input_option.py/InputOption.get_description