// Copyright 2022 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cloud .

package iplibrary_test

import (
	"io"
	"testing"
	"time"

	"github.com/TeaOSLab/EdgeCommon/pkg/iplibrary"
	"github.com/iwind/TeaGo/Tea"
	_ "github.com/iwind/TeaGo/bootstrap"
)

type updaterSource struct {
	t *testing.T
}

func (this *updaterSource) DataDir() string {
	return Tea.Root + "/data"
}

func (this *updaterSource) FindLatestFile() (code string, fileId int64, err error) {
	return "CODE", 1, nil
}

func (this *updaterSource) DownloadFile(fileId int64, writer io.Writer) error {
	this.t.Log("downloading file:", fileId, "writer:", writer)
	_, err := writer.Write(iplibrary.DefaultIPLibraryData())
	return err
}

func (this *updaterSource) LogInfo(message string) {
	this.t.Log(message)
}

func (this *updaterSource) LogError(err error) {
	this.t.Fatal(err)
}

func TestNewUpdater(t *testing.T) {
	var updater = iplibrary.NewUpdater(&updaterSource{
		t: t,
	}, 1*time.Minute)
	err := updater.Init()
	if err != nil {
		t.Fatal(err)
	}

	err = updater.Loop()
	if err != nil {
		t.Fatal(err)
	}
}
