-
Notifications
You must be signed in to change notification settings - Fork 0
/
main_test.go
115 lines (93 loc) · 2.8 KB
/
main_test.go
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
108
109
110
111
112
113
114
115
package friendlymongo_test
import (
"context"
"flag"
"fmt"
"testing"
"github.com/pmatteo/friendlymongo"
)
var uri string
var testDB string
var testCollection string
var repo *friendlymongo.BaseRepository[*customModel]
var artworksRepo *friendlymongo.BaseRepository[*artwork]
func newCustomModelRepo() *friendlymongo.BaseRepository[*customModel] {
i := friendlymongo.GetInstance()
return friendlymongo.NewBaseRepository(i.Database(testDB), testCollection, new(customModel))
}
func newOtherModelRepo() *friendlymongo.BaseRepository[*otherModel] {
i := friendlymongo.GetInstance()
return friendlymongo.NewBaseRepository(i.Database(testDB), "otherCollection", new(otherModel))
}
func newArtworkRepo() *friendlymongo.BaseRepository[*artwork] {
i := friendlymongo.GetInstance()
return friendlymongo.NewBaseRepository(i.Database(testDB), "artwork", new(artwork))
}
func TestMain(m *testing.M) {
flag.StringVar(&uri, "uri", "mongodb://root:toor@localhost:27017", "MongoDB URI")
flag.StringVar(&testDB, "db", "testDatabase", "database name")
flag.StringVar(&testCollection, "collection", "testCollection", "collection name")
flag.Parse()
if friendlymongo.GetInstance() != nil {
panic("Instance already set")
}
i := friendlymongo.SetInstance(uri)
err := i.Connect()
if err != nil {
panic(fmt.Sprintf("Error connecting to database: %v", err))
}
defer disconnect()
defer cleanUp()
repo = newCustomModelRepo()
artworksRepo = newArtworkRepo()
initArtwork()
m.Run()
}
func cleanUp() {
i := friendlymongo.GetInstance()
// CleanUp database
err := i.Database(testDB).Drop(context.Background())
if err != nil {
fmt.Println("Error deleting documents:", err)
return
}
}
func disconnect() {
i := friendlymongo.GetInstance()
err := i.Disconnect()
if err != nil {
fmt.Println("Error disconnecting from database:", err)
}
}
func initArtwork() {
var artworks = []*artwork{
{
Title: "The Pillars of Society", Artist: "Grosz", Year: 1926, Price: 199.99,
Tags: []string{"painting", "satire", "Expressionism", "caricature"},
},
{
Title: "Melancholy III", Artist: "Munch", Year: 1902, Price: 280.00,
Tags: []string{"woodcut", "Expressionism"},
},
{
Title: "Dancer", Artist: "Miro", Year: 1925, Price: 76.04,
Tags: []string{"oil", "Surrealism", "painting"},
},
{
Title: "The Great Wave off Kanagawa", Artist: "Hokusai", Price: 167.30,
Tags: []string{"woodblock", "ukiyo-e"},
},
{
Title: "The Persistence of Memory", Artist: "Dali", Year: 1931, Price: 483.00,
Tags: []string{"Surrealism", "painting", "oil"},
},
{
Title: "Composition VII", Artist: "Kandinsky", Year: 1913, Price: 385.00,
Tags: []string{"oil", "painting", "abstract"},
},
}
err := artworksRepo.InsertMany(context.Background(), artworks)
if err != nil {
fmt.Println("Error inserting documents:", err)
}
}