Add coverage tests on engine

This commit is contained in:
armirveliaj
2024-09-06 11:00:17 -04:00
committed by Dan Christian Bogos
parent b56220933a
commit 03e5ee65ac
2 changed files with 140 additions and 0 deletions

View File

@@ -19,8 +19,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
package engine
import (
"encoding/csv"
"os"
"path/filepath"
"strings"
"testing"
"github.com/cgrates/cgrates/utils"
@@ -209,3 +211,92 @@ func TestOpen(t *testing.T) {
t.Errorf("Failed to close file: %v", err)
}
}
func TestCsvFileRead(t *testing.T) {
input := "subject,duration,destination\n101,60,1001\n102,45,1002\n"
reader := strings.NewReader(input)
csvReader := csv.NewReader(reader)
csvFileInstance := &csvFile{
csvReader: csvReader,
}
expectedRecord1 := []string{"subject", "duration", "destination"}
record1, err := csvFileInstance.Read()
if err != nil {
t.Fatalf("expected no error, got %v", err)
}
if len(record1) != len(expectedRecord1) {
t.Fatalf("expected %d fields, got %d", len(expectedRecord1), len(record1))
}
for i, field := range record1 {
if field != expectedRecord1[i] {
t.Errorf("expected field %d to be %s, got %s", i, expectedRecord1[i], field)
}
}
expectedRecord2 := []string{"101", "60", "1001"}
record2, err := csvFileInstance.Read()
if err != nil {
t.Fatalf("expected no error, got %v", err)
}
if len(record2) != len(expectedRecord2) {
t.Fatalf("expected %d fields, got %d", len(expectedRecord2), len(record2))
}
for i, field := range record2 {
if field != expectedRecord2[i] {
t.Errorf("expected field %d to be %s, got %s", i, expectedRecord2[i], field)
}
}
expectedRecord3 := []string{"102", "45", "1002"}
record3, err := csvFileInstance.Read()
if err != nil {
t.Fatalf("expected no error, got %v", err)
}
if len(record3) != len(expectedRecord3) {
t.Fatalf("expected %d fields, got %d", len(expectedRecord3), len(record3))
}
for i, field := range record3 {
if field != expectedRecord3[i] {
t.Errorf("expected field %d to be %s, got %s", i, expectedRecord3[i], field)
}
}
_, err = csvFileInstance.Read()
if err == nil {
t.Fatalf("expected EOF error, got nil")
}
}
func TestCsvURLRead(t *testing.T) {
input := "field1,field2,field3\nvalue1,value2,value3\n"
reader := strings.NewReader(input)
csvReader := csv.NewReader(reader)
csvURLInstance := &csvURL{
csvReader: csvReader,
}
expectedRecord := []string{"field1", "field2", "field3"}
record, err := csvURLInstance.Read()
if err != nil {
t.Fatalf("expected no error, got %v", err)
}
if len(record) != len(expectedRecord) {
t.Fatalf("expected %d fields, got %d", len(expectedRecord), len(record))
}
for i, field := range record {
if field != expectedRecord[i] {
t.Errorf("expected field %d to be %s, got %s", i, expectedRecord[i], field)
}
}
expectedRecord2 := []string{"value1", "value2", "value3"}
record2, err := csvURLInstance.Read()
if err != nil {
t.Fatalf("expected no error, got %v", err)
}
if len(record2) != len(expectedRecord2) {
t.Fatalf("expected %d fields, got %d", len(expectedRecord2), len(record2))
}
for i, field := range record2 {
if field != expectedRecord2[i] {
t.Errorf("expected field %d to be %s, got %s", i, expectedRecord2[i], field)
}
}
}

View File

@@ -164,3 +164,52 @@ func TestNewTPExporter(t *testing.T) {
}
})
}
func TestTPExporterWriteOut(t *testing.T) {
type Data struct {
Field1 string
Field2 string
}
tpExp := &TPExporter{
compress: false,
exportPath: "",
fileFormat: utils.CSV,
sep: ',',
}
t.Run("empty tpData", func(t *testing.T) {
err := tpExp.writeOut("testfile.csv", []any{})
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
})
t.Run("exportPath is set", func(t *testing.T) {
tmpDir := t.TempDir()
tpExp.exportPath = tmpDir
tpData := []any{
Data{"ID1", "ID2"},
Data{"ID3", "ID4"},
}
err := tpExp.writeOut("testfile.csv", tpData)
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
expectedFilePath := path.Join(tmpDir, "testfile.csv")
if _, err := os.Stat(expectedFilePath); err != nil {
t.Errorf("Expected file to be created at %v, but got error: %v", expectedFilePath, err)
}
defer os.Remove(expectedFilePath)
})
t.Run("write to buffer", func(t *testing.T) {
tpExp.exportPath = ""
tpData := []any{
Data{"ID1", "ID2"},
Data{"ID3", "ID4"},
}
err := tpExp.writeOut("testfile.csv", tpData)
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
})
}