diff --git a/apps/wei/tests/test_wei_algorithm_2021.py b/apps/wei/tests/test_wei_algorithm_2021.py
new file mode 100644
index 0000000000000000000000000000000000000000..c64c4c9e3450eb29267a8f84232a15dca62864a5
--- /dev/null
+++ b/apps/wei/tests/test_wei_algorithm_2021.py
@@ -0,0 +1,65 @@
+import random
+
+from django.contrib.auth.models import User
+from django.test import TestCase
+
+from wei.forms.surveys.wei2021 import WEIBusInformation2021, WEISurvey2021, WORDS, WEISurveyInformation2021
+from wei.models import Bus, WEIClub, WEIRegistration
+
+
+class TestWEIAlgorithm(TestCase):
+    """
+    Run some tests to ensure that the WEI algorithm is working well.
+    """
+    fixtures = ('initial',)
+
+    def setUp(self):
+        """
+        Create some test data, with one WEI and 10 buses with random score attributions.
+        """
+        self.wei = WEIClub.objects.create(
+            name="WEI 2021",
+            email="wei2021@example.com",
+            date_start='2021-09-17',
+            date_end='2021-09-19',
+        )
+
+        self.buses = []
+        for i in range(10):
+            bus = Bus.objects.create(wei=self.wei, name=f"Bus {i}", size=50)
+            self.buses.append(bus)
+            information = WEIBusInformation2021(bus)
+            for word in WORDS:
+                information.scores[word] = random.randint(0, 101)
+            information.save()
+            bus.save()
+
+    def test_survey_algorithm_small(self):
+        """
+        There are only a few people in each bus, ensure that each person has its best bus
+        """
+        # Add a few users
+        for i in range(50):
+            user = User.objects.create(username=f"user{i}")
+            registration = WEIRegistration.objects.create(
+                user=user,
+                wei=self.wei,
+                first_year=True,
+                birth_date='2000-01-01',
+            )
+            information = WEISurveyInformation2021(registration)
+            for j in range(1, 21):
+                setattr(information, f'word{j}', random.choice(WORDS))
+            information.step = 20
+            information.save(registration)
+            registration.save()
+
+        # Run algorithm
+        WEISurvey2021.get_algorithm_class()().run_algorithm()
+
+        # Ensure that everyone has its first choice
+        for r in WEIRegistration.objects.filter(wei=self.wei).all():
+            survey = WEISurvey2021(r)
+            preferred_bus = survey.ordered_buses()[0][0]
+            chosen_bus = survey.information.get_selected_bus()
+            self.assertEqual(preferred_bus, chosen_bus)
diff --git a/apps/wei/tests/test_wei_registration.py b/apps/wei/tests/test_wei_registration.py
index 71eded3aed0adbc1fbddd46c29dc7240e77f014e..2a49a5d88c32f0bf0d160aa60e0330b310868843 100644
--- a/apps/wei/tests/test_wei_registration.py
+++ b/apps/wei/tests/test_wei_registration.py
@@ -3,7 +3,6 @@
 
 import subprocess
 from datetime import timedelta, date
-from unittest import skip
 
 from api.tests import TestAPI
 from django.conf import settings
@@ -813,10 +812,6 @@ class TestWEISurveyAlgorithm(TestCase):
         )
         CurrentSurvey(self.registration).save()
 
-    @skip  # FIXME Write good unit tests
-    def test_survey_algorithm(self):
-        CurrentSurvey.get_algorithm_class()().run_algorithm()
-
 
 class TestWeiAPI(TestAPI):
     def setUp(self) -> None: