diff --git a/public/uploads/.gitignore b/public/uploads/.gitignore
old mode 100644
new mode 100755
diff --git a/resources/assets/sass/_header.scss b/resources/assets/sass/_header.scss
index 938464228..8fed6aef7 100644
--- a/resources/assets/sass/_header.scss
+++ b/resources/assets/sass/_header.scss
@@ -161,7 +161,7 @@ form.search-box {
   }
 }
 
-.faded > span.faded-text {
+.faded span.faded-text {
   display: inline-block;
   padding: $-s;
   opacity: 0.5;
@@ -189,6 +189,9 @@ form.search-box {
       padding-left: 0;
     }
   }
+  &.text-center {
+    text-align: center;
+  }
 }
 
 .setting-nav {
diff --git a/resources/views/pages/form.blade.php b/resources/views/pages/form.blade.php
index b8194cda7..a5beabacf 100644
--- a/resources/views/pages/form.blade.php
+++ b/resources/views/pages/form.blade.php
@@ -14,14 +14,11 @@
                     </div>
                 </div>
                 <div class="col-sm-4 faded text-center">
-                    <div class="action-buttons text-center" ng-cloak>
-                        <span class="faded-text" ng-bind="draftText"></span>
-                        <button type="button" ng-if="isDraft" ng-click="discardDraft()" class="text-button text-neg"><i class="zmdi zmdi-close-circle"></i>Discard Draft</button>
-                    </div>
+                    <span class="faded-text" ng-bind="draftText"></span>
                 </div>
                 <div class="col-sm-4 faded">
-                    <div class="action-buttons">
-
+                    <div class="action-buttons" ng-cloak>
+                        <button type="button" ng-if="isDraft" ng-click="discardDraft()" class="text-button text-neg"><i class="zmdi zmdi-close-circle"></i>Discard Draft</button>
                         <button type="submit" id="save-button" class="text-button  text-pos"><i class="zmdi zmdi-floppy"></i>Save Page</button>
                     </div>
                 </div>
diff --git a/tests/EntitySearchTest.php b/tests/Entity/EntitySearchTest.php
similarity index 100%
rename from tests/EntitySearchTest.php
rename to tests/Entity/EntitySearchTest.php
diff --git a/tests/EntityTest.php b/tests/Entity/EntityTest.php
similarity index 100%
rename from tests/EntityTest.php
rename to tests/Entity/EntityTest.php
diff --git a/tests/Entity/PageUpdateDraftTest.php b/tests/Entity/PageUpdateDraftTest.php
new file mode 100644
index 000000000..d321974db
--- /dev/null
+++ b/tests/Entity/PageUpdateDraftTest.php
@@ -0,0 +1,62 @@
+<?php
+
+
+class PageUpdateDraftTest extends TestCase
+{
+    protected $page;
+    protected $pageRepo;
+
+    public function setUp()
+    {
+        parent::setUp();
+        $this->page = \BookStack\Page::first();
+        $this->pageRepo = app('\BookStack\Repos\PageRepo');
+    }
+
+    public function test_draft_content_shows_if_available()
+    {
+        $addedContent = '<p>test message content</p>';
+        $this->asAdmin()->visit($this->page->getUrl() . '/edit')
+            ->dontSeeInField('html', $addedContent);
+
+        $newContent = $this->page->html . $addedContent;
+        $this->pageRepo->saveUpdateDraft($this->page, ['html' => $newContent]);
+        $this->asAdmin()->visit($this->page->getUrl() . '/edit')
+            ->seeInField('html', $newContent);
+    }
+
+    public function test_draft_not_visible_by_others()
+    {
+        $addedContent = '<p>test message content</p>';
+        $this->asAdmin()->visit($this->page->getUrl() . '/edit')
+            ->dontSeeInField('html', $addedContent);
+
+        $newContent = $this->page->html . $addedContent;
+        $newUser = $this->getNewUser();
+        $this->pageRepo->saveUpdateDraft($this->page, ['html' => $newContent]);
+        $this->actingAs($newUser)->visit($this->page->getUrl() . '/edit')
+            ->dontSeeInField('html', $newContent);
+    }
+
+    public function test_alert_message_shows_if_editing_draft()
+    {
+        $this->asAdmin();
+        $this->pageRepo->saveUpdateDraft($this->page, ['html' => 'test content']);
+        $this->asAdmin()->visit($this->page->getUrl() . '/edit')
+            ->see('You are currently editing a draft');
+    }
+
+    public function test_alert_message_shows_if_someone_else_editing()
+    {
+        $addedContent = '<p>test message content</p>';
+        $this->asAdmin()->visit($this->page->getUrl() . '/edit')
+            ->dontSeeInField('html', $addedContent);
+
+        $newContent = $this->page->html . $addedContent;
+        $newUser = $this->getNewUser();
+        $this->pageRepo->saveUpdateDraft($this->page, ['html' => $newContent]);
+        $this->actingAs($newUser)->visit($this->page->getUrl() . '/edit')
+            ->see('Admin has started editing this page');
+    }
+
+}
diff --git a/tests/RestrictionsTest.php b/tests/Permissions/RestrictionsTest.php
similarity index 100%
rename from tests/RestrictionsTest.php
rename to tests/Permissions/RestrictionsTest.php
diff --git a/tests/RolesTest.php b/tests/Permissions/RolesTest.php
similarity index 100%
rename from tests/RolesTest.php
rename to tests/Permissions/RolesTest.php