github.com/abolfazlbeh/zhycan@v0.0.0-20230819144214-24cf38237387/internal/logger/zap_wrapper_test.go (about)

     1  package logger
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/json"
     6  	"github.com/abolfazlbeh/zhycan/internal/config"
     7  	"os"
     8  	"testing"
     9  	"time"
    10  )
    11  
    12  func Test_ZapFileLogger(t *testing.T) {
    13  	path := "../.."
    14  	initialMode := "test"
    15  	prefix := "ZHYCAN"
    16  
    17  	err := config.CreateManager(path, initialMode, prefix)
    18  	if err != nil {
    19  		t.Errorf("Initializig Config without error, but got %v", err)
    20  		return
    21  	}
    22  
    23  	logg := &ZapWrapper{}
    24  	logg.Constructor("logger")
    25  
    26  	expectedModule := "tester"
    27  	expectedService := "zhycan"
    28  	expectedLogType := "FUNC_MAINT"
    29  	expectedM := "TEST"
    30  	expectedL := "\\u001b[35mDEBUG\\u001b[0m"
    31  
    32  	logg.Log(NewLogObject(
    33  		DEBUG, "tester", FuncMaintenanceType, time.Now().UTC(), "TEST", nil))
    34  	logg.Sync()
    35  
    36  	// read a log file to ensure it writes ok --> for now it must be written to /tmp folder
    37  	file, err := os.OpenFile("/tmp/zhycan.log", os.O_RDONLY, 0)
    38  	if err != nil {
    39  		t.Errorf("Opening the logs file in /tmp folder, but got %v", err)
    40  		return
    41  	}
    42  	defer file.Close()
    43  
    44  	if file.Name() != "/tmp/zhycan.log" {
    45  		t.Errorf("Expected the name of the log file be %v, but got %v", "/tmp/zhycan.log", file.Name())
    46  		return
    47  	}
    48  
    49  	buf := new(bytes.Buffer)
    50  	buf.ReadFrom(file)
    51  	contents := buf.String()
    52  
    53  	// encode str to json
    54  	var result map[string]any
    55  	err = json.Unmarshal([]byte(contents), &result)
    56  	if err != nil {
    57  		// json deserialize error
    58  		t.Errorf("Expected json content able to be deserialized, but got %v", err)
    59  		return
    60  	}
    61  
    62  	if !(result["L"] != expectedL && result["M"] == expectedM && result["module"] == expectedModule &&
    63  		result["service"] == expectedService && result["log_type"] == expectedLogType && result["additional"] == nil) {
    64  
    65  		t.Errorf("Expected Value Is Not Correct: ")
    66  		t.Errorf("Expected %v, but got %v --", result["L"], expectedL)
    67  		t.Errorf("Expected %v, but got %v --", result["M"], expectedM)
    68  		t.Errorf("Expected %v, but got %v --", result["module"], expectedModule)
    69  		t.Errorf("Expected %v, but got %v --", result["service"], expectedService)
    70  		t.Errorf("Expected %v, but got %v --", result["log_type"], expectedLogType)
    71  		t.Errorf("Expected %v, but got %v --", result["additional"], nil)
    72  		return
    73  	}
    74  
    75  }