110 lines
2.6 KiB
Go
110 lines
2.6 KiB
Go
package database
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// Unit Tests sollten niemals auf der Produktivdatenbank stattfinden.
|
|
// Sie sollten nicht wie Unit Tests betrachtet werden.
|
|
const (
|
|
connectionString = "root:eliogeheim@tcp(127.0.0.1:3306)/elio_test?parseTime=true"
|
|
)
|
|
|
|
func Setup(dbr *DatabaseReader) error {
|
|
_, err := dbr.DatabaseWriter.db.Exec("drop table if exists elio_test.warehouseproducts")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = dbr.DatabaseWriter.db.Exec("drop table if exists elio_test.deliverytimes")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = dbr.DatabaseWriter.createDeliveryTableIfNotExist()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = dbr.DatabaseWriter.createWarehouseTableIfNotExist()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
statements := strings.Split(CreateInserts, ";")
|
|
statementsDlvry := strings.Split(CreateDeliveryInserts, ";")
|
|
statements = append(statements, statementsDlvry...)
|
|
|
|
tx, err := dbr.db.Begin()
|
|
defer func() error {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
return fmt.Errorf("Scheiße passiert!")
|
|
} else if err != nil {
|
|
_:
|
|
tx.Rollback()
|
|
return fmt.Errorf("Scheiße passiert!")
|
|
} else {
|
|
err = tx.Commit()
|
|
if err != nil {
|
|
return fmt.Errorf("Scheiße passiert!")
|
|
}
|
|
}
|
|
return nil
|
|
}()
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for _, stmt := range statements {
|
|
_, err := tx.Exec(stmt)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func TestDatabaseConnection(t *testing.T) {
|
|
var dbr = NewDatabaseReader(connectionString)
|
|
err := dbr.db.Ping()
|
|
if err != nil {
|
|
t.Errorf("Datenbankverbindung fehlgeschlagen! %s", err)
|
|
}
|
|
}
|
|
|
|
func TestSelectStatementNoDatasetsAvailable(t *testing.T) {
|
|
var dbr = NewDatabaseReader(connectionString)
|
|
err := Setup(dbr)
|
|
if err != nil {
|
|
t.Errorf("Setup failed! %s", err)
|
|
}
|
|
_, err = dbr.GetProductByProductIdDeliveryCountryAndState("X9299", "EU", "")
|
|
if err != nil {
|
|
t.Errorf("Es dürfen keine Datensätze gefunden werden! %s", err)
|
|
}
|
|
}
|
|
|
|
func TestSelectStatement(t *testing.T) {
|
|
var dbr = NewDatabaseReader(connectionString)
|
|
data, err := dbr.GetProductByProductIdDeliveryCountryAndState("A6053", "EU", "")
|
|
if err != nil {
|
|
t.Errorf("Es sollten keine Datensätze auffinbdar sein! %s", err)
|
|
}
|
|
|
|
if len(data) != 3 {
|
|
t.Errorf("Es müssen drei Datensätze vorhanden sein. Stattdessen sind es %d", len(data))
|
|
}
|
|
|
|
compareStr := "[{7507 DE 23 2} {500 EU 1 2} {8508 AT 4 4}]"
|
|
dbResultStr := fmt.Sprintln(data)
|
|
dbResultStr = strings.Trim(dbResultStr, "\n")
|
|
if strings.Compare(compareStr, dbResultStr) != 0 {
|
|
t.Errorf("Error: die Datensätze sind ungleich. \nSoll sein :\n%s\n ist aber: \n%s", compareStr, dbResultStr)
|
|
}
|
|
}
|