package database import ( "fmt" "log" "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.reservations") if err != nil { return err } _, 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 } err = dbr.DatabaseWriter.createReservationTableIfNotExist() 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 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 34} {500 EU 1 2 60} {8508 AT 4 4 64}]" 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) } } func TestInsertStatement(t *testing.T) { var dbr = NewDatabaseReader(connectionString) data, err := dbr.GetProductByProductIdDeliveryCountryAndState("A6053", "EU", "") if err != nil { t.Errorf("Es sollten Datensätze auffinbdar sein! %s", err) } log.Println(data) }