Current section
Files
Jump to
Current section
Files
test/fsdb_test.exs
defmodule FsdbTest do
use ExUnit.Case
doctest Fsdb
@path "_build/test/.fsdb"
test "direct crud" do
db = Path.expand(@path)
File.rm_rf!(db)
assert :ok == Fsdb.init(db)
assert File.exists?(db)
assert !File.exists?(Path.join(db, "table1"))
assert :ok == Fsdb.create(db, "table1")
assert File.exists?(Path.join(db, "table1"))
assert File.exists?(Path.join([db, "table1", "row.id"]))
assert [] == Fsdb.list(db, "table1")
assert :nf == Fsdb.fetch(db, "table1", 1)
assert :nf == Fsdb.update(db, "table1", 1, "row1")
assert :nf == Fsdb.delete(db, "table1", 1)
assert {:ok, 1} == Fsdb.insert(db, "table1", "row1")
assert File.exists?(Path.join([db, "table1", "row.000001"]))
assert {:ok, "row1"} == Fsdb.fetch(db, "table1", 1)
assert [{1, "row1"}] == Fsdb.list(db, "table1")
assert {:ok, "row1"} == Fsdb.update(db, "table1", 1, "row1+")
assert {:ok, "row1+"} == Fsdb.fetch(db, "table1", 1)
assert [{1, "row1+"}] == Fsdb.list(db, "table1")
assert {:ok, "row1+"} == Fsdb.delete(db, "table1", 1)
assert !File.exists?(Path.join([db, "table1", "row.000001"]))
assert [] == Fsdb.list(db, "table1")
assert :nf == Fsdb.fetch(db, "table1", 1)
assert :nf == Fsdb.delete(db, "table1", 1)
assert :nf == Fsdb.update(db, "table1", 1, "row1++")
#create should not reset id file
assert :ok == Fsdb.create(db, "table1")
assert {:ok, 2} == Fsdb.insert(db, "table1", "row2")
#save bypasses the id generator
assert :ok == Fsdb.save(db, "table1", 5, "row5")
assert {:ok, "row2"} == Fsdb.save(db, "table1", 2, "row2+")
#save updates current id to maximum
assert {:ok, 6} == Fsdb.insert(db, "table1", "row6")
#tuples may not be ID ordered
assert [{2, "row2+"}, {5, "row5"}, {6, "row6"}] == Fsdb.list(db, "table1")
assert :ok == Fsdb.drop(db, "table1")
assert !File.exists?(Path.join(db, "table1"))
end
test "server crud" do
path = Path.expand(@path)
File.rm_rf!(path)
{:ok, db} = Fsdb.Server.start_link([path: path])
assert File.exists?(path)
assert !File.exists?(Path.join(path, "table1"))
assert :ok == Fsdb.Server.create(db, "table1")
assert File.exists?(Path.join(path, "table1"))
assert File.exists?(Path.join([path, "table1", "row.id"]))
assert [] == Fsdb.Server.list(db, "table1")
assert :nf == Fsdb.Server.fetch(db, "table1", 1)
assert :nf == Fsdb.Server.update(db, "table1", 1, "row1")
assert :nf == Fsdb.Server.delete(db, "table1", 1)
assert {:ok, 1} == Fsdb.Server.insert(db, "table1", "row1")
assert File.exists?(Path.join([path, "table1", "row.000001"]))
assert {:ok, "row1"} == Fsdb.Server.fetch(db, "table1", 1)
assert [{1, "row1"}] == Fsdb.Server.list(db, "table1")
assert {:ok, "row1"} == Fsdb.Server.update(db, "table1", 1, "row1+")
assert {:ok, "row1+"} == Fsdb.Server.fetch(db, "table1", 1)
assert [{1, "row1+"}] == Fsdb.Server.list(db, "table1")
assert {:ok, "row1+"} == Fsdb.Server.delete(db, "table1", 1)
assert !File.exists?(Path.join([path, "table1", "row.000001"]))
assert [] == Fsdb.Server.list(db, "table1")
assert :nf == Fsdb.Server.fetch(db, "table1", 1)
assert :nf == Fsdb.Server.delete(db, "table1", 1)
assert :nf == Fsdb.Server.update(db, "table1", 1, "row1++")
#create should not reset id file
assert :ok == Fsdb.Server.create(db, "table1")
assert {:ok, 2} == Fsdb.Server.insert(db, "table1", "row2")
#save bypasses the id generator
assert :ok == Fsdb.Server.save(db, "table1", 5, "row5")
assert {:ok, "row2"} == Fsdb.Server.save(db, "table1", 2, "row2+")
#save updates current id to maximum
assert {:ok, 6} == Fsdb.Server.insert(db, "table1", "row6")
#tuples may not be ID ordered
assert [{2, "row2+"}, {5, "row5"}, {6, "row6"}] == Fsdb.Server.list(db, "table1")
assert :ok == Fsdb.Server.drop(db, "table1")
assert !File.exists?(Path.join(path, "table1"))
:ok = Fsdb.Server.stop(db)
end
end