Added test to create gsmaster data from import

This commit is contained in:
2025-01-01 21:51:22 +01:00
parent a558856ee4
commit bd4971b2a2
2 changed files with 94 additions and 3 deletions
+42
View File
@@ -1,5 +1,11 @@
package importer
import (
"bamort/gsmaster"
"fmt"
"regexp"
)
type ImportBase struct {
ID string `json:"id"`
Name string `json:"name"`
@@ -173,3 +179,39 @@ type CharacterImport struct {
Spezialisierung []string `json:"spezialisierung"`
Image string `json:"image,omitempty"`
}
func TransformImportFertigkeit2GSDMaster(object *Fertigkeit) (*gsmaster.Skill, error) {
gsmobj := gsmaster.Skill{}
err := gsmobj.First(object.Name)
// if found check if we need to adjust masterdata
if err == nil {
return &gsmobj, nil
}
// if not found insert to masterdata
gsmobj.Name = object.Name
gsmobj.Beschreibung = object.Beschreibung
gsmobj.Initialkeitswert = object.Fertigkeitswert
gsmobj.Quelle = object.Quelle
gsmobj.Bonuseigenschaft = "check"
re := regexp.MustCompile(`moam-ability-\\d+`)
if re.MatchString(object.ID) {
gsmobj.Improvable = true
}
gsmobj.System = "midgard"
err = gsmobj.Create()
if err != nil {
return nil, fmt.Errorf("creating gsmaster record failed: %s", err)
}
return &gsmobj, nil
}
func CheckFertigkeiten2GSMaster(objects []*Fertigkeit) error {
for i := range objects {
gsmobj, err := TransformImportFertigkeit2GSDMaster(objects[i])
if err != nil {
return fmt.Errorf("creating gsmaster failed for 1 record: %s, %v", err, gsmobj)
}
}
return nil
}
+52 -3
View File
@@ -1,6 +1,8 @@
package tests
import (
"bamort/database"
"bamort/gsmaster"
"bamort/importer"
"encoding/json"
"fmt"
@@ -8,9 +10,18 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"gorm.io/gorm"
)
func readImportChat(fileName string) (*importer.CharacterImport, error) {
func initTestDB4Import() *gorm.DB {
db := SetupTestDB()
db.AutoMigrate(
&gsmaster.Skill{},
)
return db
}
func readImportChar(fileName string) (*importer.CharacterImport, error) {
// loading file to Modell
fileContent, err := os.ReadFile(fileName)
if err != nil {
@@ -197,7 +208,7 @@ func testTransportation(t *testing.T, objects []importer.Transportation) {
func TestImportVTTStructure(t *testing.T) {
fileName := fmt.Sprintf("../testdata/%s", "VTT_Import1.json")
character, err := readImportChat(fileName)
character, err := readImportChar(fileName)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
testChar(t, character)
testSkill(t, character.Fertigkeiten)
@@ -207,10 +218,48 @@ func TestImportVTTStructure(t *testing.T) {
testWaepon(t, character.Waffen)
testContainer(t, character.Behaeltnisse)
testTransportation(t, character.Transportmittel)
//fmt.Println(character)
}
func TestImportSkill2GSMaster(t *testing.T) {
testDB := initTestDB4Import()
database.DB = testDB // Assign test DB to global DB
fileName := fmt.Sprintf("../testdata/%s", "VTT_Import1.json")
character, err := readImportChar(fileName)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
//for i := range character.Fertigkeiten {
skill, erro := importer.TransformImportFertigkeit2GSDMaster(&character.Fertigkeiten[0])
assert.NoError(t, erro, "Expected no error when Unmarshal filecontent")
assert.GreaterOrEqual(t, int(skill.ID), 1)
assert.Equal(t, "Hören", skill.Name)
assert.Equal(t, "", skill.Beschreibung)
assert.Equal(t, 6, skill.Initialkeitswert)
assert.Equal(t, "check", skill.Bonuseigenschaft)
assert.Equal(t, "KOD5 99", skill.Quelle)
assert.Equal(t, false, skill.Improvable)
assert.Equal(t, "midgard", skill.System)
//}
skill2 := gsmaster.Skill{}
erro = skill2.First("Hören")
assert.NoError(t, erro, "Expected no error when finding Record by name")
assert.Equal(t, 1, int(skill.ID))
skill3 := gsmaster.Skill{}
erro = skill3.FirstId(1)
assert.NoError(t, erro, "Expected no error when finding Record by ID")
assert.Equal(t, "Hören", skill3.Name)
assert.Equal(t, skill2.ID, skill3.ID)
assert.Equal(t, skill2.Name, skill3.Name)
assert.Equal(t, skill2.Beschreibung, skill3.Beschreibung)
assert.Equal(t, skill2.Initialkeitswert, skill3.Initialkeitswert)
assert.Equal(t, skill2.Bonuseigenschaft, skill3.Bonuseigenschaft)
assert.Equal(t, skill2.Quelle, skill3.Quelle)
assert.Equal(t, skill2.Improvable, skill3.Improvable)
assert.Equal(t, skill2.System, skill3.System)
}
/*
func TestImportFertigkeitenStammdatenSingle(t *testing.T) {
// Setup test database