package cleaner

import (
	"github.com/cyrilix/pod-cleaner/pkg/monitor"
	"testing"
)

func TestPodWatcher_Watch(t *testing.T) {
	type fields struct {
		logfile string
	}
	tests := []struct {
		name         string
		fields       fields
		wantPodDir   string
		wantNumError int
	}{
		{
			name: "one error in file",
			fields: fields{
				logfile: "test_data/one-error.log",
			},
			wantPodDir:   "/var/lib/kubelet/pods/1d4bfc07-3469-4eaa-992f-6d23c17f3aee",
			wantNumError: 1,
		},
		{
			name: "no error",
			fields: fields{
				logfile: "test_data/no-error.log",
			},
			wantPodDir:   "",
			wantNumError: 0,
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			w := NewPodWatcher(tt.fields.logfile)
			w.m = monitor.New(monitor.WithTailFollow(false), monitor.WithReOpen(false))
			w.Watch()
			gotNumErr := w.GetNumErrors()
			if gotNumErr != tt.wantNumError {
				t.Errorf("PodWatcher_Watch(), bad numErrors found: %v, want %v", gotNumErr, tt.wantNumError)
			}
			gotPodDir := w.GetPodDirInError()
			if gotPodDir != tt.wantPodDir {
				t.Errorf("PodWatcher_Watch(), bad pod directory found: %v, want %v", gotPodDir, tt.wantPodDir)
			}
		})
	}
}
