Files

150 lines
3.8 KiB
Go
Raw Permalink Normal View History

2026-01-04 17:49:04 +01:00
package gsmaster
import (
"bamort/database"
"bamort/models"
"testing"
)
func TestCreateSkillWithCategories(t *testing.T) {
setupTestEnvironment(t)
database.SetupTestDB()
// Create test dependencies
source := getOrCreateSource("TSTCRT", "TestCreate")
category := getOrCreateCategory("Alltag", source.ID)
difficulty := getOrCreateDifficulty("normal")
// Prepare create request
req := SkillUpdateRequest{
Skill: models.Skill{
Name: "Neue Fertigkeit",
2026-01-29 09:49:36 +01:00
GameSystemId: 1,
2026-01-04 17:49:04 +01:00
Beschreibung: "Test Fertigkeit",
Initialwert: 5,
BasisWert: 0,
Bonuseigenschaft: "In",
Improvable: true,
InnateSkill: false,
SourceID: source.ID,
PageNumber: 42,
},
CategoryDifficulties: []CategoryDifficultyPair{
{
CategoryID: category.ID,
DifficultyID: difficulty.ID,
},
},
}
// Test creating new skill
skillID, err := CreateSkillWithCategories(req)
if err != nil {
t.Fatalf("CreateSkillWithCategories failed: %v", err)
}
if skillID == 0 {
t.Fatalf("Expected non-zero skill ID, got 0")
}
// Verify skill was created
var skill models.Skill
if err := database.DB.First(&skill, skillID).Error; err != nil {
t.Fatalf("Failed to retrieve created skill: %v", err)
}
if skill.Name != "Neue Fertigkeit" {
t.Errorf("Expected name 'Neue Fertigkeit', got '%s'", skill.Name)
}
if skill.Initialwert != 5 {
t.Errorf("Expected initialwert 5, got %d", skill.Initialwert)
}
if skill.BasisWert != 0 {
t.Errorf("Expected basiswert 0, got %d", skill.BasisWert)
}
// Verify category-difficulty relationship
var scd models.SkillCategoryDifficulty
if err := database.DB.Where("skill_id = ?", skillID).First(&scd).Error; err != nil {
t.Fatalf("Failed to retrieve skill category difficulty: %v", err)
}
if scd.SkillCategoryID != category.ID {
t.Errorf("Expected category ID %d, got %d", category.ID, scd.SkillCategoryID)
}
if scd.SkillDifficultyID != difficulty.ID {
t.Errorf("Expected difficulty ID %d, got %d", difficulty.ID, scd.SkillDifficultyID)
}
}
func TestCreateSkillWithMultipleCategories(t *testing.T) {
setupTestEnvironment(t)
database.SetupTestDB()
// Create test dependencies
source := getOrCreateSource("TSTMLT", "TestMultiple")
category1 := getOrCreateCategory("Körper", source.ID)
category2 := getOrCreateCategory("Geist", source.ID)
difficulty1 := getOrCreateDifficulty("leicht")
difficulty2 := getOrCreateDifficulty("schwer")
// Prepare create request with multiple categories
req := SkillUpdateRequest{
Skill: models.Skill{
2026-01-29 09:49:36 +01:00
Name: "Multi-Kategorie Fertigkeit",
GameSystemId: 1,
Initialwert: 10,
Improvable: true,
SourceID: source.ID,
2026-01-04 17:49:04 +01:00
},
CategoryDifficulties: []CategoryDifficultyPair{
{
CategoryID: category1.ID,
DifficultyID: difficulty1.ID,
},
{
CategoryID: category2.ID,
DifficultyID: difficulty2.ID,
},
},
}
// Test creating skill with multiple categories
skillID, err := CreateSkillWithCategories(req)
if err != nil {
t.Fatalf("CreateSkillWithCategories failed: %v", err)
}
// Verify both category-difficulty relationships exist
var scds []models.SkillCategoryDifficulty
if err := database.DB.Where("skill_id = ?", skillID).Find(&scds).Error; err != nil {
t.Fatalf("Failed to retrieve skill category difficulties: %v", err)
}
if len(scds) != 2 {
t.Fatalf("Expected 2 category-difficulty relationships, got %d", len(scds))
}
}
func TestCreateSkillValidation(t *testing.T) {
setupTestEnvironment(t)
database.SetupTestDB()
// Test creating skill without name
req := SkillUpdateRequest{
Skill: models.Skill{
2026-01-29 09:49:36 +01:00
GameSystemId: 1,
Initialwert: 5,
2026-01-04 17:49:04 +01:00
},
CategoryDifficulties: []CategoryDifficultyPair{},
}
_, err := CreateSkillWithCategories(req)
if err == nil {
t.Error("Expected error when creating skill without name, got nil")
}
}