diff --git a/tests/src/Unit/ConfigDifferTest.php b/tests/src/Unit/ConfigDifferTest.php
index 9e6a614..9b2ad57 100644
--- a/tests/src/Unit/ConfigDifferTest.php
+++ b/tests/src/Unit/ConfigDifferTest.php
@@ -46,7 +46,6 @@ class ConfigDifferTest extends UnitTestCase {
    */
   public function testSame($a, $b, $expected) {
     $this->assertEquals($expected, $this->configDiffer->same($a, $b));
-
   }
 
   /**
@@ -192,4 +191,118 @@ class ConfigDifferTest extends UnitTestCase {
     ];
   }
 
+  /**
+   * @covers \Drupal\config_update\ConfigDiffer::diff
+   */
+  public function testDiff() {
+    $configOne = [
+      'uuid' => '1234-5678-90',
+      'id' => 'test.config.id',
+      'id_to_remove' => 'test.remove.id',
+      'type' => 'old_type',
+      'true_value' => TRUE,
+      'nested_array' => [
+        'flat_array' => [
+          'value2',
+          'value1',
+          'value3',
+        ],
+        'custom_key' => 'value',
+      ],
+    ];
+
+    $configTwo = [
+      'uuid' => '09-8765-4321',
+      'id' => 'test.config.id',
+      'type' => 'new_type',
+      'true_value' => FALSE,
+      'nested_array' => [
+        'flat_array' => [
+          'value2',
+          'value3',
+        ],
+        'custom_key' => 'value',
+        'custom_key_2' => 'value2',
+      ],
+    ];
+
+    $edits = $this->configDiffer->diff($configOne, $configTwo)->getEdits();
+
+    $expectedEdits = [
+      [
+        'copy' => [
+          'orig' => [
+            'id : test.config.id',
+          ],
+          'closing' => [
+            'id : test.config.id',
+          ],
+        ],
+      ],
+      [
+        'delete' => [
+          'orig' => [
+            'id_to_remove : test.remove.id',
+          ],
+          'closing' => FALSE,
+        ],
+      ],
+      [
+        'copy' => [
+          'orig' => [
+            'nested_array',
+            'nested_array::custom_key : value',
+          ],
+          'closing' => [
+            'nested_array',
+            'nested_array::custom_key : value',
+          ],
+        ],
+      ],
+      [
+        'add' => [
+          'orig' => FALSE,
+          'closing' => [
+            'nested_array::custom_key_2 : value2',
+          ],
+        ],
+      ],
+      [
+        'copy' => [
+          'orig' => [
+            'nested_array::flat_array',
+            'nested_array::flat_array::0 : value2',
+          ],
+          'closing' => [
+            'nested_array::flat_array',
+            'nested_array::flat_array::0 : value2',
+          ],
+        ],
+      ],
+      [
+        'change' => [
+          'orig' => [
+            'nested_array::flat_array::1 : value1',
+            'nested_array::flat_array::2 : value3',
+            'true_value : 1',
+            'type : old_type',
+          ],
+          'closing' => [
+            'nested_array::flat_array::1 : value3',
+            'true_value : ',
+            'type : new_type',
+          ],
+        ],
+      ],
+    ];
+
+    $this->assertEquals(count($expectedEdits), count($edits));
+
+    /** @var \Drupal\Component\Diff\Engine\DiffOp $diffOp */
+    foreach ($edits as $index => $diffOp) {
+      $this->assertEquals($expectedEdits[$index][$diffOp->type]['orig'], $diffOp->orig);
+      $this->assertEquals($expectedEdits[$index][$diffOp->type]['closing'], $diffOp->closing);
+    }
+  }
+
 }
