Files
bamort/backend/tests/importJsontoDB_test.go
T
2024-12-29 00:01:31 +01:00

212 lines
8.1 KiB
Go

package tests
import (
"bamort/database"
"bamort/models"
"bamort/stammdaten"
"encoding/json"
"fmt"
"os"
"testing"
"github.com/stretchr/testify/assert"
"gorm.io/gorm"
)
func initTestDB4Import() *gorm.DB {
db := SetupTestDB()
db.AutoMigrate(
/*
&models.ImAp{},
&models.ImEigenschaft{},
&models.ImAusruestung{},
&models.ImFertigkeit{},
&models.ImZauber{},
&models.ImWaffenfertigkeit{},
&models.ImWaffe{},
&models.ImMerkmale{},
&models.ImLp{},
&models.ImGestalt{},
&models.ImErfahrungsschatz{},
&models.ImEigenschaften{},
&models.ImBennies{},
&models.ImBehaeltniss{},
&models.ImAp{},
&models.ImB{},
&models.ImTransportation{},
&models.ImMagisch{},
&models.ImCharacterImport{},
*/
&models.LookupSkill{}, //needed for stammdaten.CheckFertigkeit
&models.LookupSpell{}, //needed for stammdaten.CheckZauber
)
return db
}
func TestImportVTTStructure(t *testing.T) {
// Setup test database
//testDB := SetupTestDB()
//DB = testDB // Assign test DB to global DB
// loading file to Modell
fileName := fmt.Sprintf("../testdata/%s", "VTT_Import1.json")
assert.Equal(t, "../testdata/VTT_Import1.json", fileName)
fileContent, err := os.ReadFile(fileName)
assert.NoError(t, err, "Expected no error when reading file "+fileName)
character := models.ImCharacterImport{}
err = json.Unmarshal(fileContent, &character)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
assert.Equal(t, "Harsk Hammerhuter, Zen", character.Name)
assert.Equal(t, "Zwerg", character.Rasse)
assert.Equal(t, "Hören", character.Fertigkeiten[0].Name)
assert.Equal(t, 1, len(character.Zauber))
assert.Equal(t, 17, character.Lp.Value)
assert.Equal(t, 96, character.Eigenschaften.Gs)
assert.Equal(t, 74, character.Eigenschaften.Au)
assert.Equal(t, 1, len(character.Ausruestung))
assert.Equal(t, "Lederrüstung", character.Ausruestung[0].Name)
assert.Equal(t, "blau", character.Merkmale.Augenfarbe)
assert.Equal(t, "Lederrucksack", character.Behaeltnisse[0].Name)
assert.Equal(t, "Armbrust:schwer", character.Waffen[0].Name)
assert.Equal(t, 31, character.Ap.Value)
assert.Equal(t, "Armbrüste", character.Waffenfertigkeiten[0].Name)
assert.Equal(t, 3, len(character.Spezialisierung))
assert.Equal(t, "Kriegshammer", character.Spezialisierung[0])
assert.Equal(t, "Armbrust:schwer", character.Spezialisierung[1])
//fmt.Println(character)
}
func TestImportFertigkeitenStammdatenSingle(t *testing.T) {
// Setup test database
testDB := initTestDB4Import()
database.DB = testDB // Assign test DB to global DB
// loading file to Modell
fileName := fmt.Sprintf("../testdata/%s", "VTT_Import1.json")
assert.Equal(t, "../testdata/VTT_Import1.json", fileName)
fileContent, err := os.ReadFile(fileName)
assert.NoError(t, err, "Expected no error when reading file "+fileName)
character := models.ImCharacterImport{}
err = json.Unmarshal(fileContent, &character)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
//checke Fertigkeit auf vorhandensein in den Stammdaten
fertigkeit := character.Fertigkeiten[1]
stammF, err := stammdaten.CheckSkill(&fertigkeit, false)
assert.Error(t, err, "expexted Error does not exist in Fertigkeit Stammdaten")
if stammF == nil && err != nil {
stammF, err = stammdaten.CheckSkill(&fertigkeit, true)
}
assert.NoError(t, err, "Expected to finds the Fertigkeit Stammdaten in the database")
assert.Equal(t, fertigkeit.Name, stammF.Name)
assert.Equal(t, fertigkeit.Beschreibung, stammF.Beschreibung)
assert.Equal(t, fertigkeit.Quelle, stammF.Quelle)
assert.Equal(t, 5, stammF.Initialkeitswert)
assert.Equal(t, "keine", stammF.Bonuseigenschaft)
assert.Equal(t, "midgard", stammF.System)
assert.Equal(t, 1, int(stammF.ID))
// und noch mal
//checke Fertigkeit auf vorhandensein in den Stammdaten
//fertigkeit := character.Fertigkeiten[1]
stammF, err = stammdaten.CheckSkill(&fertigkeit, false)
assert.NoError(t, err, "expexted no Error exist in Fertigkeit Stammdaten")
if stammF == nil && err != nil {
stammF, err = stammdaten.CheckSkill(&fertigkeit, true)
}
assert.NoError(t, err, "Expected to finds the Fertigkeit Stammdaten in the database")
assert.Equal(t, fertigkeit.Name, stammF.Name)
assert.Equal(t, fertigkeit.Beschreibung, stammF.Beschreibung)
assert.Equal(t, fertigkeit.Quelle, stammF.Quelle)
assert.Equal(t, 5, stammF.Initialkeitswert)
assert.Equal(t, "keine", stammF.Bonuseigenschaft)
assert.Equal(t, "midgard", stammF.System)
assert.Equal(t, 1, int(stammF.ID))
}
func TestImportFertigkeitenStammdatenMulti(t *testing.T) {
// Setup test database
testDB := initTestDB4Import()
database.DB = testDB // Assign test DB to global DB
// loading file to Modell
fileName := fmt.Sprintf("../testdata/%s", "VTT_Import1.json")
assert.Equal(t, "../testdata/VTT_Import1.json", fileName)
fileContent, err := os.ReadFile(fileName)
assert.NoError(t, err, "Expected no error when reading file "+fileName)
character := models.ImCharacterImport{}
err = json.Unmarshal(fileContent, &character)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
//for index, fertigkeit := range character.Fertigkeiten {
for _, fertigkeit := range character.Fertigkeiten {
fmt.Println(fertigkeit.Name)
stammF, err := stammdaten.CheckSkill(&fertigkeit, true)
assert.NoError(t, err, "Expected to finds the Fertigkeit Stammdaten in the database")
assert.Equal(t, fertigkeit.Name, stammF.Name, "Name should be equal")
if fertigkeit.Name != "Sprache" {
assert.Equal(t, fertigkeit.Beschreibung, stammF.Beschreibung, "Beschreibung should be equal")
} else {
assert.Equal(t, "", stammF.Beschreibung, "Beschreibung should be equal")
}
assert.Equal(t, fertigkeit.Quelle, stammF.Quelle, "Quelle should be equal")
//assert.Equal(t, 5, stammF.Initialkeitswert, "Initialkeitswert should be equal")
assert.Equal(t, "keine", stammF.Bonuseigenschaft, "Bonuseigenschaft should be equal")
assert.Equal(t, "midgard", stammF.System, "System should be equal")
//assert.NotEmpty(t, index+1, int(stammF.ID), "ID should be equal")
}
}
func TestImportZauberStammdatenSingle(t *testing.T) {
// Setup test database
testDB := initTestDB4Import()
database.DB = testDB // Assign test DB to global DB
// loading file to Modell
fileName := fmt.Sprintf("../testdata/%s", "VTT_Import1.json")
assert.Equal(t, "../testdata/VTT_Import1.json", fileName)
fileContent, err := os.ReadFile(fileName)
assert.NoError(t, err, "Expected no error when reading file "+fileName)
character := models.ImCharacterImport{}
err = json.Unmarshal(fileContent, &character)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
//checke zauber auf vorhandensein in den Stammdaten
zauber := character.Zauber[0]
stammF, err := stammdaten.CheckSpell(&zauber, false)
assert.Error(t, err, "expexted Error does not exist in zauber Stammdaten")
if stammF == nil && err != nil {
stammF, err = stammdaten.CheckSpell(&zauber, true)
}
assert.NoError(t, err, "Expected to finds the zauber Stammdaten in the database")
assert.Equal(t, zauber.Name, stammF.Name)
assert.Equal(t, zauber.Beschreibung, stammF.Beschreibung)
assert.Equal(t, zauber.Quelle, stammF.Quelle)
assert.Equal(t, 1, stammF.AP)
assert.Equal(t, 1, stammF.Stufe)
assert.Equal(t, "Zauberer", stammF.Wirkungsziel)
assert.Equal(t, 15, stammF.Reichweite)
assert.Equal(t, "midgard", stammF.System)
assert.Equal(t, 1, int(stammF.ID))
// und noch mal
//checke zauber auf vorhandensein in den Stammdaten
//zauber := character.zauberen[1]
stammF, err = stammdaten.CheckSpell(&zauber, false)
assert.NoError(t, err, "expexted no Error exist in zauber Stammdaten")
if stammF == nil && err != nil {
stammF, err = stammdaten.CheckSpell(&zauber, true)
}
assert.NoError(t, err, "Expected to finds the zauber Stammdaten in the database")
assert.Equal(t, zauber.Name, stammF.Name)
assert.Equal(t, zauber.Beschreibung, stammF.Beschreibung)
assert.Equal(t, zauber.Quelle, stammF.Quelle)
assert.Equal(t, 1, stammF.AP)
assert.Equal(t, 1, stammF.Stufe)
assert.Equal(t, "Zauberer", stammF.Wirkungsziel)
assert.Equal(t, 15, stammF.Reichweite)
assert.Equal(t, "midgard", stammF.System)
assert.Equal(t, 1, int(stammF.ID))
}