diff --git a/core/modules/statistics/src/Tests/StatisticsUpdateTest.php b/core/modules/statistics/src/Tests/StatisticsUpdateTest.php
new file mode 100644
index 0000000..e1e1663
--- /dev/null
+++ b/core/modules/statistics/src/Tests/StatisticsUpdateTest.php
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\statistics\Tests\StatisticsUpdateTest.
+ */
+
+namespace Drupal\statistics\Tests;
+
+use Drupal\system\Tests\Update\UpdatePathTestBase;
+
+/**
+ * Tests the upgrade path for Statistics.
+ *
+ * @see https://www.drupal.org/node/2421663
+ *
+ * @group Update
+ */
+class StatisticsUpdateTest extends UpdatePathTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = ['node', 'statistics'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setUp() {
+    $this->databaseDumpFiles = [
+      __DIR__ . '/../../../system/tests/fixtures/update/drupal-8.bare.standard.php.gz',
+    ];
+    parent::setUp();
+  }
+
+  /**
+   * Tests the update path for the Statistics module.
+   */
+  public function testUpdate() {
+    // Check the Schema version.
+    $schema_version = drupal_get_installed_schema_version('statistics');
+    $this->assertEqual($schema_version, '8001', 'Schema version is 8001');
+
+    // Set schema version to 0 for statistics module so all update hooks run.
+    drupal_set_installed_schema_version('statistics', '8000');
+
+    // Check the Schema version.
+    $schema_version = drupal_get_installed_schema_version('statistics');
+    $this->assertEqual($schema_version, '8000', 'Schema version is 8000');
+
+    // Make sure the node module was enabled in the first place.
+    $this->assertTrue(\Drupal::moduleHandler()->moduleExists('node'), 'Node module is enabled');
+
+    // Make sure the test setup enabled the statistics module.
+    $this->assertTrue(\Drupal::moduleHandler()->moduleExists('statistics'), 'Statistics module is enabled');
+
+    // Uninstall the node module.
+    \Drupal::service('module_installer')->uninstall(array('node'), FALSE);
+
+    // Make sure the node module was in fact disabled.
+    $this->assertFalse(\Drupal::moduleHandler()->moduleExists('node'), 'Node module is disabled');
+
+    // Run the update hooks.
+    $this->runUpdates();
+
+    // Check the Schema version.
+    $schema_version = drupal_get_installed_schema_version('statistics');
+    $this->assertEqual($schema_version, '8001', 'Schema version is 8001');
+
+    // Make sure the statistics module was disabled by the update hook.
+    $this->assertFalse(\Drupal::moduleHandler()->moduleExists('statistics'), 'Statistics module is disabled');
+  }
+}
diff --git a/core/modules/statistics/statistics.info.yml b/core/modules/statistics/statistics.info.yml
index 6582bec..e758f5c 100644
--- a/core/modules/statistics/statistics.info.yml
+++ b/core/modules/statistics/statistics.info.yml
@@ -5,3 +5,5 @@ package: Core
 version: VERSION
 core: 8.x
 configure: statistics.settings
+dependencies:
+  - node
diff --git a/core/modules/statistics/statistics.install b/core/modules/statistics/statistics.install
index 4451341..be1e19d 100644
--- a/core/modules/statistics/statistics.install
+++ b/core/modules/statistics/statistics.install
@@ -57,3 +57,13 @@ function statistics_schema() {
 
   return $schema;
 }
+
+/**
+ * Disable the Statistics module if the node module is not enabled.
+ */
+function statistics_update_8001() {
+  if (!\Drupal::moduleHandler()->moduleExists('node')) {
+    \Drupal::service('module_installer')->uninstall(array('statistics'), TRUE);
+    drupal_set_message('The statistics module depends on the node module and has therefore been uninstalled.', 'status');
+  }
+}
