package driver import ( "encoding/json" "log" "os" ) type Step struct { Input string `json:"input"` ExpectedContent string `json:"expectedContent"` } // Group represents a group of steps type Group struct { Name string `json:"name"` Steps []Step `json:"steps"` } type TestCase struct { Name string Input string ExpectedContent string } // DataGroup represents the overall structure of the JSON. type DataGroup struct { Groups []Group `json:"groups"` } type Session struct { Name string `json:"name"` Groups []Group `json:"groups"` } func ReadData() []Session { data, err := os.ReadFile("test_setup.json") if err != nil { log.Fatalf("Failed to read file: %v", err) } // Unmarshal JSON data var sessions []Session err = json.Unmarshal(data, &sessions) if err != nil { log.Fatalf("Failed to unmarshal JSON: %v", err) } return sessions } func FilterGroupsByName(groups []Group, name string) []Group { var filteredGroups []Group for _, group := range groups { if group.Name == name { filteredGroups = append(filteredGroups, group) } } return filteredGroups } func LoadTestGroups(filePath string) (DataGroup, error) { var sessionsData DataGroup data, err := os.ReadFile(filePath) if err != nil { return sessionsData, err } err = json.Unmarshal(data, &sessionsData) return sessionsData, err } func CreateTestCases(group DataGroup) []TestCase { var tests []TestCase for _, group := range group.Groups { for _, step := range group.Steps { // Create a test case for each group tests = append(tests, TestCase{ Name: group.Name, Input: step.Input, ExpectedContent: step.ExpectedContent, }) } } return tests }