diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 85776e1..f9fc60c 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,14 +4,9 @@
-
-
-
+
+
-
-
-
-
@@ -237,44 +232,44 @@
false
-
+
-
+
- true
+ false
true
false
-
+
-
+
-
+
- true
+ false
true
false
@@ -299,18 +294,18 @@
-
-
+
+
+
+
-
-
@@ -439,7 +434,14 @@
1622283383268
-
+
+ 1622284601372
+
+
+
+ 1622284601372
+
+
@@ -472,7 +474,8 @@
-
+
+
diff --git a/src/test/kotlin/org/hmcore/extensions/FileTest.kt b/src/test/kotlin/org/hmcore/extensions/FileTest.kt
new file mode 100644
index 0000000..dd12506
--- /dev/null
+++ b/src/test/kotlin/org/hmcore/extensions/FileTest.kt
@@ -0,0 +1,73 @@
+package org.hmcore.extensions
+
+import io.mockk.*
+import java.io.File
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+class FileTest {
+ @Test
+ fun `Ensure exists should create a file with default content if it does not exist`() {
+ val file = mockk()
+ mockkStatic("kotlin.io.FilesKt__FileReadWriteKt")
+
+ every { file.exists() } returns false
+ every { file.createNewFile() } returns true
+ every { file.writeText(any()) } just Runs
+
+ file.ensureExists("Default Text")
+
+ verifySequence {
+ file.exists()
+ file.createNewFile()
+ file.writeText("Default Text")
+ }
+ }
+
+ @Test
+ fun `Ensure exists should create a file if supplied with null but not write text`() {
+ val file = mockk()
+ mockkStatic("kotlin.io.FilesKt__FileReadWriteKt")
+
+ every { file.exists() } returns false
+ every { file.createNewFile() } returns true
+ every { file.writeText(any()) } just Runs
+
+ file.ensureExists(null)
+
+ verifySequence {
+ file.exists()
+ file.createNewFile()
+ }
+ }
+
+ @Test
+ fun `Ensure exists should not touch the file if it exists`() {
+ val file = mockk()
+ mockkStatic("kotlin.io.FilesKt__FileReadWriteKt")
+
+ every { file.exists() } returns true
+ every { file.createNewFile() } returns true
+ every { file.writeText(any()) } just Runs
+
+ file.ensureExists(null)
+
+ verifySequence {
+ file.exists()
+ }
+ }
+
+ @Test
+ fun `Ensure exists should return itself`() {
+ val file = mockk()
+ mockkStatic("kotlin.io.FilesKt__FileReadWriteKt")
+
+ every { file.exists() } returns true
+ every { file.createNewFile() } returns true
+ every { file.writeText(any()) } just Runs
+
+ val f2 = file.ensureExists(null)
+
+ assertEquals(file, f2)
+ }
+}
\ No newline at end of file