Added test to create gsmaster data from import
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user