def METHOD_NAME(self):
    instance = CourseInstance.objects.get(id=1)
    instance.add_assistant(self.user.userprofile)
    instance_url = instance.url
    course_name = instance.course.name
    visible = instance.visible_to_students
    teacher_names = self._as_id(instance.teachers.all())
    assistant_names = self._as_id(instance.assistants.all())
    url = instance.get_url('course-clone')
    self.client.login(username='testTeacher', password='testPassword')
    # Full clone
    response = self.client.post(url, {
        'url': 'another1',
        'instance_name': 'instance1',
        'teachers': True,
        'assistants': True,
        'menuitems': True,
        'usertags': True,
        'key_year': 2022,
        'key_month': 'Test',
    }, follow=True)
    self.assertEqual(response.status_code, 200)
    stripped_content = response.content.decode("utf-8").replace("modal-submit-error alert alert-danger", "")
    self.assertNotIn("alert alert-danger", stripped_content)
    self.assertIn("alert alert-success", stripped_content)
    # Partial clone
    response = self.client.post(url, {
        'url': 'another2',
        'instance_name': 'instance2',
        'teachers': True,
        'assistants': False,
        'menuitems': False,
        'usertags': False,
        'key_year': 2022,
        'key_month': 'Test',
    }, follow=True)
    self.assertEqual(response.status_code, 200)
    stripped_content = response.content.decode("utf-8").replace("modal-submit-error alert alert-danger", "")
    self.assertNotIn("alert alert-danger", stripped_content)
    self.assertIn("alert alert-success", stripped_content)
    instance = CourseInstance.objects.get(id=1)
    self.assertEqual(instance.url, instance_url)
    self.assertEqual(instance.course.name, course_name)
    self.assertEqual(instance.visible_to_students, visible)
    self.assertEqual(self._as_id(instance.teachers.all()), teacher_names)
    self.assertEqual(self._as_id(instance.assistants.all()), assistant_names)
    # Check the full clone
    new_instance_1 = CourseInstance.objects.get(course=instance.course, url="another1")
    self.assertEqual(new_instance_1.course.name, course_name)
    self.assertEqual(new_instance_1.instance_name, "instance1")
    self.assertFalse(new_instance_1.visible_to_students)
    self.assertEqual(self._as_id(new_instance_1.teachers.all()), teacher_names)
    self.assertEqual(self._as_id(new_instance_1.assistants.all()), assistant_names)
    # Check the partial clone
    new_instance_2 = CourseInstance.objects.get(course=instance.course, url="another2")
    self.assertEqual(new_instance_2.course.name, course_name)
    self.assertEqual(new_instance_2.instance_name, "instance2")
    self.assertFalse(new_instance_2.visible_to_students)
    self.assertEqual(self._as_id(new_instance_2.teachers.all()), teacher_names)
    self.assertEqual(new_instance_2.assistants.count(), 0)