package goconfluence

import (
	"fmt"
	"testing"

	"github.com/stretchr/testify/assert"
)

type apiTestValue struct {
	Input []string
	Error error
}

func TestNewAPI(t *testing.T) {
	testValues := []apiTestValue{
		{[]string{"", "username", "token"}, fmt.Errorf("url, username or token empty")},
		{[]string{"test", "", "token"}, fmt.Errorf("url, username or token empty")},
		{[]string{"test", "username", ""}, fmt.Errorf("url, username or token empty")},
		{[]string{"https://test.test", "username", "token"}, nil},
		{[]string{"test", "username", "token"}, fmt.Errorf("parse test: invalid URI for request")},
	}

	for _, test := range testValues {
		api, err := NewAPI(test.Input[0], test.Input[1], test.Input[2])
		if err != nil {
			assert.Equal(t, test.Error.Error(), err.Error())
		} else {
			assert.Equal(t, test.Input[0], api.endPoint.String())
			assert.Equal(t, test.Input[1], api.username)
			assert.Equal(t, test.Input[2], api.token)
		}
	}
}

func TestSetDebug(t *testing.T) {
	assert.False(t, DebugFlag)
	SetDebug(true)
	assert.True(t, DebugFlag)
	SetDebug(false)
	assert.False(t, DebugFlag)
}