]> git.r.bdr.sh - rbdr/mobius/blob - internal/mobius/threaded_news_test.go
9269a858dd45a2632ddc1cb0a0f31df41554b1e0
[rbdr/mobius] / internal / mobius / threaded_news_test.go
1 package mobius
2
3 import (
4 "github.com/stretchr/testify/assert"
5 "os"
6 "testing"
7 )
8
9 type TestData struct {
10 Name string `yaml:"name"`
11 Value int `yaml:"value"`
12 }
13
14 func TestLoadFromYAMLFile(t *testing.T) {
15 tests := []struct {
16 name string
17 fileName string
18 content string
19 wantData TestData
20 wantErr bool
21 }{
22 {
23 name: "Valid YAML file",
24 fileName: "valid.yaml",
25 content: "name: Test\nvalue: 123\n",
26 wantData: TestData{Name: "Test", Value: 123},
27 wantErr: false,
28 },
29 {
30 name: "File not found",
31 fileName: "nonexistent.yaml",
32 content: "",
33 wantData: TestData{},
34 wantErr: true,
35 },
36 {
37 name: "Invalid YAML content",
38 fileName: "invalid.yaml",
39 content: "name: Test\nvalue: invalid_int\n",
40 wantData: TestData{},
41 wantErr: true,
42 },
43 }
44
45 for _, tt := range tests {
46 t.Run(tt.name, func(t *testing.T) {
47 // Setup: Create a temporary file with the provided content if content is not empty
48 if tt.content != "" {
49 err := os.WriteFile(tt.fileName, []byte(tt.content), 0644)
50 assert.NoError(t, err)
51 defer os.Remove(tt.fileName) // Cleanup the file after the test
52 }
53
54 var data TestData
55 err := loadFromYAMLFile(tt.fileName, &data)
56
57 if tt.wantErr {
58 assert.Error(t, err)
59 } else {
60 assert.NoError(t, err)
61 assert.Equal(t, tt.wantData, data)
62 }
63 })
64 }
65 }