diff --git a/storage/versioned/kv_test.go b/storage/versioned/kv_test.go
index db8d691d8d6336af6d99a4a1a625bbd54f3fc39b..d311109b6717d5afd9ee01c231198a7595b46e6e 100644
--- a/storage/versioned/kv_test.go
+++ b/storage/versioned/kv_test.go
@@ -9,9 +9,11 @@ package versioned
 
 import (
 	"bytes"
-	"gitlab.com/elixxir/ekv"
+	"errors"
 	"testing"
 	"time"
+
+	"gitlab.com/elixxir/ekv"
 )
 
 // KV Get should call the Upgrade function when it's available
@@ -30,8 +32,8 @@ func TestVersionedKV_Get_Err(t *testing.T) {
 	}
 }
 
-// Test versioned KV Upgrade path
-func TestVersionedKV_Get_Upgrade(t *testing.T) {
+// Test versioned KV happy path
+func TestVersionedKV_GetUpgrade(t *testing.T) {
 	// Set up a dummy KV with the required data
 	kv := make(ekv.Memstore)
 	vkv := NewKV(kv)
@@ -44,7 +46,15 @@ func TestVersionedKV_Get_Upgrade(t *testing.T) {
 	originalSerialized := original.Marshal()
 	kv[key] = originalSerialized
 
-	result, err := vkv.Get(key)
+	upgrade := []Upgrade{func(oldObject *Object) (*Object, error) {
+		return &Object{
+			Version:   1,
+			Timestamp: time.Now(),
+			Data:      []byte("this object was upgraded from v0 to v1"),
+		}, nil
+	}}
+
+	result, err := vkv.GetUpgrade(key, upgrade)
 	if err != nil {
 		t.Fatalf("Error getting something that should have been in: %v",
 			err)
@@ -56,6 +66,80 @@ func TestVersionedKV_Get_Upgrade(t *testing.T) {
 	}
 }
 
+// Test versioned KV key not found path
+func TestVersionedKV_GetUpgrade_KeyNotFound(t *testing.T) {
+	// Set up a dummy KV with the required data
+	kv := make(ekv.Memstore)
+	vkv := NewKV(kv)
+	key := MakeKeyWithPrefix("test", "12345")
+
+	upgrade := []Upgrade{func(oldObject *Object) (*Object, error) {
+		return &Object{
+			Version:   1,
+			Timestamp: time.Now(),
+			Data:      []byte("this object was upgraded from v0 to v1"),
+		}, nil
+	}}
+
+	_, err := vkv.GetUpgrade(key, upgrade)
+	if err == nil {
+		t.Fatalf("Error getting something that should have been in: %v",
+			err)
+	}
+}
+
+// Test versioned KV upgrade func returns error path
+func TestVersionedKV_GetUpgrade_UpgradeReturnsError(t *testing.T) {
+	// Set up a dummy KV with the required data
+	kv := make(ekv.Memstore)
+	vkv := NewKV(kv)
+	key := MakeKeyWithPrefix("test", "12345")
+	original := Object{
+		Version:   0,
+		Timestamp: time.Now(),
+		Data:      []byte("not upgraded"),
+	}
+	originalSerialized := original.Marshal()
+	kv[key] = originalSerialized
+
+	upgrade := []Upgrade{func(oldObject *Object) (*Object, error) {
+		return &Object{}, errors.New("test error")
+	}}
+
+	defer func() {
+        if r := recover(); r == nil {
+            t.Errorf("The code did not panic")
+        }
+    }()
+
+	_, _ = vkv.GetUpgrade(key, upgrade)
+}
+
+// Test delete key happy path
+func TestVersionedKV_Delete(t *testing.T) {
+	// Set up a dummy KV with the required data
+	kv := make(ekv.Memstore)
+	vkv := NewKV(kv)
+	key := MakeKeyWithPrefix("test", "12345")
+	original := Object{
+		Version:   0,
+		Timestamp: time.Now(),
+		Data:      []byte("not upgraded"),
+	}
+	originalSerialized := original.Marshal()
+	kv[key] = originalSerialized
+
+	err := vkv.Delete(key)
+	if err != nil {
+		t.Fatalf("Error getting something that should have been in: %v",
+			err)
+	}
+
+	if _, ok := kv[key]; ok {
+		t.Fatal("Key still exists in kv map")
+	}
+}
+
 // Test Get without Upgrade path
 func TestVersionedKV_Get(t *testing.T) {
 	// Set up a dummy KV with the required data