|
import { test, runIfMain } from "https://deno.land/std/testing/mod.ts"; |
|
import { assertEquals } from "https://deno.land/std/testing/asserts.ts"; |
|
import { EnvFile } from "./deno_env_file.ts"; |
|
|
|
test(function simpleRoundTrip() { |
|
let content = `KEY1=value1 |
|
KEY2=value2 |
|
KEY3=value3`; |
|
assertEquals(content, new EnvFile(content).serialise()); |
|
}); |
|
|
|
test(function quotingRoundTrip() { |
|
let content = `KEY1='value1'\nKEY2=val'ue2\nKEY3="value3"`; |
|
assertEquals(content, new EnvFile(content).serialise()); |
|
}); |
|
|
|
test(function commentRoundTrip() { |
|
let content = `# this is a comment\nKEY1='value1'\nKEY2=value2\n#this is also a comment\nKEY3="value3"`; |
|
assertEquals(content, new EnvFile(content).serialise()); |
|
}); |
|
|
|
test(function blankLinesRoundTrip() { |
|
let content = ` |
|
KEY1='value1' |
|
KEY2=value2 |
|
|
|
#this is also a comment |
|
KEY3="value3"`; |
|
assertEquals(content, new EnvFile(content).serialise()); |
|
}); |
|
|
|
test(function badRoundTrip() { |
|
let content = `KEY1=value1 |
|
blah this isn't a line |
|
.`; |
|
assertEquals(content, new EnvFile(content).serialise()); |
|
}); |
|
|
|
test(function removeSpacesAroundVariables() { |
|
let content = " KEY =value"; |
|
let file = new EnvFile(content); |
|
let result = file.edit("KEY", "other"); |
|
assertEquals(true, result); |
|
assertEquals("KEY=other", file.serialise()); |
|
}); |
|
|
|
test(function maintainSpacesInValues() { |
|
let content = "KEY= val ue "; |
|
let file = new EnvFile(content); |
|
assertEquals(" val ue ", file.get("KEY")); |
|
assertEquals("KEY= val ue ", file.serialise()); |
|
}); |
|
|
|
test(function simpleGet() { |
|
let content = `KEY1=value1\nKEY2=value2\nKEY3=value3`; |
|
let file = new EnvFile(content); |
|
assertEquals("value1", file.get("KEY1")); |
|
assertEquals("value3", file.get("KEY3")); |
|
assertEquals(null, file.get("KEY4")); |
|
assertEquals(null, file.get("KEY")); |
|
assertEquals(null, file.get("")); |
|
}); |
|
|
|
test(function getValueThatLooksLikeComment() { |
|
let content = "KEY=value # this is not a comment"; |
|
assertEquals( |
|
"value # this is not a comment", |
|
new EnvFile(content).get("KEY") |
|
); |
|
}); |
|
|
|
test(function editValue() { |
|
let content = "KEY=value"; |
|
let file = new EnvFile(content); |
|
file.edit("KEY", "other"); |
|
assertEquals("KEY=other", file.serialise()); |
|
}); |
|
|
|
test(function editValueThatLooksLikeComment() { |
|
let content = "KEY=value # this is not a comment"; |
|
let file = new EnvFile(content); |
|
let result = file.edit("KEY", "other"); |
|
assertEquals(true, result); |
|
assertEquals("KEY=other", file.serialise()); |
|
}); |
|
|
|
test(function editQuotedValue() { |
|
let content = `KEY1="value1"\nKEY2='value2'`; |
|
let file = new EnvFile(content); |
|
file.edit("KEY1", "other1"); |
|
file.edit("KEY2", "other2"); |
|
assertEquals(`KEY1="other1"\nKEY2='other2'`, file.serialise()); |
|
}); |
|
|
|
test(function dontEditComments() { |
|
let content = "#KEY=value"; |
|
let file = new EnvFile(content); |
|
let result = file.edit("KEY", "other"); |
|
assertEquals(false, result); |
|
assertEquals(content, file.serialise()); |
|
}); |
|
|
|
test(function appendSimple() { |
|
let content = "KEY1=value1"; |
|
let file = new EnvFile(content); |
|
file.append("KEY2", "value2"); |
|
assertEquals("KEY1=value1\nKEY2=value2", file.serialise()); |
|
}); |
|
|
|
test(function appendExisting() { |
|
let content = "KEY1=value1"; |
|
let file = new EnvFile(content); |
|
file.append("KEY1", "value2"); |
|
assertEquals("KEY1=value1\nKEY1=value2", file.serialise()); |
|
}); |
|
|
|
test(function setNew() { |
|
let content = "KEY1=value1"; |
|
let file = new EnvFile(content); |
|
let result = file.set("KEY2", "value2"); |
|
assertEquals(EnvFile.Appended, result); |
|
assertEquals("KEY1=value1\nKEY2=value2", file.serialise()); |
|
}); |
|
|
|
test(function setExisting() { |
|
let content = "KEY1=value1"; |
|
let file = new EnvFile(content); |
|
let result = file.set("KEY1", "value2"); |
|
assertEquals(EnvFile.Edited, result); |
|
assertEquals("KEY1=value2", file.serialise()); |
|
}); |
|
|
|
runIfMain(import.meta); |