mirror of
https://github.com/axllent/mailpit.git
synced 2025-03-17 21:18:19 +02:00
Testing: Database total/unread statistics tests
This commit is contained in:
parent
15859f7be9
commit
444b65d371
@ -12,6 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/axllent/mailpit/config"
|
"github.com/axllent/mailpit/config"
|
||||||
"github.com/jhillyerd/enmime"
|
"github.com/jhillyerd/enmime"
|
||||||
|
"github.com/ostafen/clover/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -25,6 +26,9 @@ func TestTextEmailInserts(t *testing.T) {
|
|||||||
|
|
||||||
RepeatTest:
|
RepeatTest:
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
|
|
||||||
|
assertEqualStats(t, 0, 0)
|
||||||
|
|
||||||
for i := 0; i < 1000; i++ {
|
for i := 0; i < 1000; i++ {
|
||||||
if _, err := Store(DefaultMailbox, testTextEmail); err != nil {
|
if _, err := Store(DefaultMailbox, testTextEmail); err != nil {
|
||||||
t.Log("error ", err)
|
t.Log("error ", err)
|
||||||
@ -42,6 +46,8 @@ RepeatTest:
|
|||||||
|
|
||||||
t.Logf("inserted 1,000 text emails in %s\n", time.Since(start))
|
t.Logf("inserted 1,000 text emails in %s\n", time.Since(start))
|
||||||
|
|
||||||
|
assertEqualStats(t, 1000, 1000)
|
||||||
|
|
||||||
delStart := time.Now()
|
delStart := time.Now()
|
||||||
if err := DeleteAllMessages(DefaultMailbox); err != nil {
|
if err := DeleteAllMessages(DefaultMailbox); err != nil {
|
||||||
t.Log("error ", err)
|
t.Log("error ", err)
|
||||||
@ -58,6 +64,8 @@ RepeatTest:
|
|||||||
|
|
||||||
t.Logf("deleted 1,000 text emails in %s\n", time.Since(delStart))
|
t.Logf("deleted 1,000 text emails in %s\n", time.Since(delStart))
|
||||||
|
|
||||||
|
assertEqualStats(t, 0, 0)
|
||||||
|
|
||||||
db.Close()
|
db.Close()
|
||||||
if config.DataDir == "" {
|
if config.DataDir == "" {
|
||||||
setup(true)
|
setup(true)
|
||||||
@ -74,6 +82,9 @@ func TestMimeEmailInserts(t *testing.T) {
|
|||||||
|
|
||||||
RepeatTest:
|
RepeatTest:
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
|
|
||||||
|
assertEqualStats(t, 0, 0)
|
||||||
|
|
||||||
for i := 0; i < 1000; i++ {
|
for i := 0; i < 1000; i++ {
|
||||||
if _, err := Store(DefaultMailbox, testMimeEmail); err != nil {
|
if _, err := Store(DefaultMailbox, testMimeEmail); err != nil {
|
||||||
t.Log("error ", err)
|
t.Log("error ", err)
|
||||||
@ -91,6 +102,8 @@ RepeatTest:
|
|||||||
|
|
||||||
t.Logf("inserted 1,000 emails with mime attachments in %s\n", time.Since(start))
|
t.Logf("inserted 1,000 emails with mime attachments in %s\n", time.Since(start))
|
||||||
|
|
||||||
|
assertEqualStats(t, 1000, 1000)
|
||||||
|
|
||||||
delStart := time.Now()
|
delStart := time.Now()
|
||||||
if err := DeleteAllMessages(DefaultMailbox); err != nil {
|
if err := DeleteAllMessages(DefaultMailbox); err != nil {
|
||||||
t.Log("error ", err)
|
t.Log("error ", err)
|
||||||
@ -107,6 +120,8 @@ RepeatTest:
|
|||||||
|
|
||||||
t.Logf("deleted 1,000 mime emails in %s\n", time.Since(delStart))
|
t.Logf("deleted 1,000 mime emails in %s\n", time.Since(delStart))
|
||||||
|
|
||||||
|
assertEqualStats(t, 0, 0)
|
||||||
|
|
||||||
db.Close()
|
db.Close()
|
||||||
if config.DataDir == "" {
|
if config.DataDir == "" {
|
||||||
setup(true)
|
setup(true)
|
||||||
@ -158,6 +173,50 @@ RepeatTest:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDatabaseStats(t *testing.T) {
|
||||||
|
setup(false)
|
||||||
|
t.Log("Testing database stats")
|
||||||
|
assertEqualStats(t, 0, 0)
|
||||||
|
|
||||||
|
for i := 0; i < 100; i++ {
|
||||||
|
if _, err := Store(DefaultMailbox, testTextEmail); err != nil {
|
||||||
|
t.Log("error ", err)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEqualStats(t, 100, 100)
|
||||||
|
|
||||||
|
// mark 10 as read
|
||||||
|
docs, err := db.FindAll(
|
||||||
|
clover.NewQuery(DefaultMailbox).
|
||||||
|
Limit(10),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Log("error ", err)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, d := range docs {
|
||||||
|
_, err := GetMessage(DefaultMailbox, d.ObjectId())
|
||||||
|
if err != nil {
|
||||||
|
t.Log("error ", err)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEqualStats(t, 100, 90)
|
||||||
|
|
||||||
|
if err := MarkAllRead(DefaultMailbox); err != nil {
|
||||||
|
t.Log("error ", err)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEqualStats(t, 100, 0)
|
||||||
|
|
||||||
|
db.Close()
|
||||||
|
}
|
||||||
|
|
||||||
func TestSearch(t *testing.T) {
|
func TestSearch(t *testing.T) {
|
||||||
setup(false)
|
setup(false)
|
||||||
t.Log("Testing memory storage")
|
t.Log("Testing memory storage")
|
||||||
@ -296,3 +355,14 @@ func assertEqual(t *testing.T, a interface{}, b interface{}, message string) {
|
|||||||
message = fmt.Sprintf("%s: \"%v\" != \"%v\"", message, a, b)
|
message = fmt.Sprintf("%s: \"%v\" != \"%v\"", message, a, b)
|
||||||
t.Fatal(message)
|
t.Fatal(message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func assertEqualStats(t *testing.T, total int, unread int) {
|
||||||
|
s := StatsGet(DefaultMailbox)
|
||||||
|
if total != s.Total {
|
||||||
|
t.Fatal(fmt.Sprintf("Incorrect total mailbox stats: \"%d\" != \"%d\"", total, s.Total))
|
||||||
|
}
|
||||||
|
|
||||||
|
if unread != s.Unread {
|
||||||
|
t.Fatal(fmt.Sprintf("Incorrect unread mailbox stats: \"%d\" != \"%d\"", unread, s.Unread))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user