pw_blob_store: Update return for Invalidate()

Update Invalidate() to return OK or INTERNAL rather than the kvs Delete
return value.

Change-Id: If873fd1309e1aaa3147426e64384135f9cea9016
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/18687
Reviewed-by: Ewout van Bekkum <ewout@google.com>
Commit-Queue: David Rogers <davidrogers@google.com>
diff --git a/pw_blob_store/blob_store.cc b/pw_blob_store/blob_store.cc
index a1181c4..96a40f8 100644
--- a/pw_blob_store/blob_store.cc
+++ b/pw_blob_store/blob_store.cc
@@ -478,7 +478,11 @@
   write_address_ = 0;
   flash_address_ = 0;
 
-  return kvs_.Delete(MetadataKey());
+  Status status = kvs_.Delete(MetadataKey());
+
+  return (status == Status::OK || status == Status::NOT_FOUND)
+             ? Status::OK
+             : Status::INTERNAL;
 }
 
 Status BlobStore::ValidateChecksum() {
diff --git a/pw_blob_store/blob_store_test.cc b/pw_blob_store/blob_store_test.cc
index af1a717..d21bd9d 100644
--- a/pw_blob_store/blob_store_test.cc
+++ b/pw_blob_store/blob_store_test.cc
@@ -146,6 +146,21 @@
   EXPECT_EQ(Status::OK, blob.Init());
 }
 
+TEST_F(BlobStoreTest, Discard) {
+  InitSourceBufferToRandom(0x8675309);
+  WriteTestBlock();
+
+  kvs::ChecksumCrc16 checksum;
+  BlobStoreBuffer<256> blob(
+      "TestBlobBlock", partition_, &checksum, kvs::TestKvs());
+  EXPECT_EQ(Status::OK, blob.Init());
+
+  BlobStore::BlobWriter writer(blob);
+  EXPECT_EQ(Status::OK, writer.Open());
+  EXPECT_EQ(Status::OK, writer.Discard());
+  EXPECT_EQ(Status::OK, writer.Close());
+}
+
 TEST_F(BlobStoreTest, MultipleErase) {
   BlobStoreBuffer<256> blob("Blob_OK", partition_, nullptr, kvs::TestKvs());
   EXPECT_EQ(Status::OK, blob.Init());