diff --git a/smash/web/tests/view/test_study.py b/smash/web/tests/view/test_study.py
new file mode 100644
index 0000000000000000000000000000000000000000..93f9919b0e2378c168bd9c7eaf6e20e19bf2a7e3
--- /dev/null
+++ b/smash/web/tests/view/test_study.py
@@ -0,0 +1,63 @@
+import logging
+
+from django.urls import reverse
+
+from web.forms import StudyEditForm, StudyNotificationParametersEditForm, StudyColumnsEditForm
+from web.models.constants import GLOBAL_STUDY_ID
+from web.tests import LoggedInWithWorkerTestCase
+from web.tests.functions import get_test_study, format_form_field
+
+logger = logging.getLogger(__name__)
+
+
+class SubjectsViewTests(LoggedInWithWorkerTestCase):
+    def setUp(self):
+        super(SubjectsViewTests, self).setUp()
+        self.study = get_test_study()
+
+    def test_render_study_edit(self):
+        response = self.client.get(reverse('web.views.edit_study', kwargs={'study_id': GLOBAL_STUDY_ID}))
+        self.assertEqual(response.status_code, 200)
+
+    def test_save_study(self):
+        form_data = self.create_edit_form_data_for_study()
+
+        response = self.client.post(
+            reverse('web.views.edit_study', kwargs={'study_id': GLOBAL_STUDY_ID}), data=form_data)
+
+        self.assertEqual(response.status_code, 302)
+        self.assertFalse("edit" in response['Location'])
+
+    def test_save_invalid_data(self):
+        form_data = {}
+
+        response = self.client.post(
+            reverse('web.views.edit_study', kwargs={'study_id': GLOBAL_STUDY_ID}), data=form_data)
+
+        self.assertEqual(response.status_code, 200)
+
+    def test_save_study_without_changing_page(self):
+        form_data = self.create_edit_form_data_for_study()
+        form_data['_continue'] = True
+
+        response = self.client.post(
+            reverse('web.views.edit_study', kwargs={'study_id': GLOBAL_STUDY_ID}), data=form_data)
+
+        self.assertEqual(response.status_code, 302)
+        self.assertTrue("edit" in response['Location'])
+
+    def create_edit_form_data_for_study(self):
+        study_form = StudyEditForm(instance=self.study, prefix="study")
+        notifications_form = StudyNotificationParametersEditForm(instance=self.study.notification_parameters,
+                                                                 prefix="notifications")
+        study_columns_form = StudyColumnsEditForm(instance=self.study.columns,
+                                                  prefix="columns")
+
+        form_data = {}
+        for key, value in study_form.initial.items():
+            form_data['study-{}'.format(key)] = format_form_field(value)
+        for key, value in notifications_form.initial.items():
+            form_data['notifications-{}'.format(key)] = format_form_field(value)
+        for key, value in study_columns_form.initial.items():
+            form_data['columns-{}'.format(key)] = format_form_field(value)
+        return form_data