/
database_instance_acceptance.exs
107 lines (76 loc) · 2.45 KB
/
database_instance_acceptance.exs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Code.require_file "../../acceptance_helper.exs", __FILE__
defmodule DatabaseInstanceAcceptance do
use ExUnit.Case, async: false
@fixture_db "fixture"
use CouchGears.Database.Fixtures
@doc_x "x"
@doc_x_body [{"_id","x"}, {"number", 1}]
create_fixture @doc_x_body
test "tries to open a missing db" do
missing_db = DB.open("missing_db")
assert missing_db == :no_db_file
end
test "opens a db" do
db = DB.open(@fixture_db)
assert is_record(db, CouchGears.Database)
end
test "closes a db" do
db = DB.open(@fixture_db)
db = db.close()
refute db.raw_db
refute db.db
end
test "returns a raw document" do
db = DB.open(@fixture_db)
doc = db.find(@doc_x)
assert doc["_id"] == @doc_x
end
test "returns a filtered document (except: ['number', 'string'])" do
{ doc_id, doc_body } = { "except", [{"_id","except"}, {"number",1}, {"string","s"}, {"boolean",true}] }
create_fixture doc_body
doc = DB.open(@fixture_db).find(doc_id, [except: ["number", "string"]])
assert Enum.count(doc) == 3
assert doc["_id"] == doc_id
assert doc["boolean"]
end
test "returns a filtered document (only: ['number', 'string'])" do
{ doc_id, doc_body } = { "only", [{"_id","only"}, {"number",1}, {"string","s"}, {"boolean",true}] }
create_fixture doc_body
doc = DB.open(@fixture_db).find(doc_id, [only: ["number", "string"]])
assert doc == [{"number", 1}, {"string", "s"}]
end
test "creates a document (as a list) w/ specific id" do
id = "strict_a"
rev = DB.open(@fixture_db).create_doc([{"_id", id},{"boolean", false}])
doc = DB.open(@fixture_db).find(id)
assert Dict.size(doc) == 3
assert doc["_id"] == id
assert doc["_rev"] == rev
end
test "creates a document w/ out id" do
rev = DB.open(@fixture_db).create_doc([{"boolean", false}])
{1, _} = :couch_doc.parse_rev(rev)
end
test "updates a document" do
db = DB.open(@fixture_db)
doc = db.find(@doc_x)
doc = Dict.put(doc, "boolean", true)
prev_rev = doc["_rev"]
new_rev = db.update(doc)
db.close()
db = DB.open(@fixture_db)
doc = db.find(@doc_x)
assert doc["boolean"]
refute prev_rev == new_rev
end
test "creates a db" do
DB.create_db("x1")
db = DB.open!("x1")
assert is_record(db, CouchGears.Database)
end
test "removes a db" do
DB.create_db("x2")
DB.delete_db("x2")
assert DB.open("x2") == :no_db_file
end
end