package entity_test

import (
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/tidbcloud/dataflow-service/app/repo/entity"
)

func Test_BackupSetting_IsPiTREnabled(t *testing.T) {
	b := entity.BackupSetting{}

	// PiTR is null
	b.PiTR = nil
	assert.False(t, b.IsPiTREnabled())

	// PiTR not null, enable
	b.PiTR = &entity.PiTRSetting{Enable: true}
	assert.True(t, b.IsPiTREnabled())

	// PiTR not null, disable
	b.PiTR = &entity.PiTRSetting{Enable: false}
	assert.False(t, b.IsPiTREnabled())
}

func Test_BackupSetting_SetPiTREnable(t *testing.T) {
	b := entity.BackupSetting{}

	// PiTR is nil, set true
	b.PiTR = nil
	b.SetPiTREnable(true)
	assert.True(t, b.PiTR.Enable)

	// PiTR is not nil, set false
	b.PiTR = &entity.PiTRSetting{}
	b.SetPiTREnable(false)
	assert.False(t, b.PiTR.Enable)
}

func Test_BackupSetting_IsAutoBackupDisabled(t *testing.T) {
	b := entity.BackupSetting{}

	// AutoBackup is null, default it's enable
	b.AutoBackup = nil
	assert.False(t, b.IsAutoBackupDisabled())

	// AutoBackup not null, AutoBackup is enable
	b.AutoBackup = &entity.AutoBackupSetting{Disable: false}
	assert.False(t, b.IsAutoBackupDisabled())

	// AutoBackup not null, AutoBackup is disable
	b.AutoBackup = &entity.AutoBackupSetting{Disable: true}
	assert.True(t, b.IsAutoBackupDisabled())
}

func Test_BackupSetting_SetAutoBackupDisable(t *testing.T) {
	b := entity.BackupSetting{}

	// AutoBackup is nil, set disable
	b.AutoBackup = nil
	b.SetAutoBackupDisable(true)
	assert.True(t, b.AutoBackup.Disable)

	// AutoBackup is disable, set enable
	b.AutoBackup = &entity.AutoBackupSetting{Disable: true}
	b.SetAutoBackupDisable(false)
	assert.False(t, b.AutoBackup.Disable)
}
