package rbac

import (
	"context"
	"log"
	"os"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/smartystreets/goconvey/convey"
	"github.com/tidbcloud/account/internel/dao"
	ddbDao "github.com/tidbcloud/account/internel/dao/ddb"
	"github.com/tidbcloud/account/pkg/docker_db"
	"gorm.io/gorm"
)

var db *gorm.DB

// TODO: init
var ddbClient *ddbDao.DynamoDBClient

func init() {
	var err error
	db, err = docker_db.TryInitCentralDB(true)
	if err != nil {
		log.Printf("Failed to init docker db: %s", err)
		os.Exit(-1)
		return
	}
}

func TestRbacRoleSvc_GetRbacRoleByID(t *testing.T) {
	ctrl := gomock.NewController(t)
	defer ctrl.Finish()
	mockedDaoHub := dao.NewDaoMockHub(ctrl).NewHub()
	ctx := context.TODO()
	svc := NewRbacRolesSvc(db, mockedDaoHub)
	convey.Convey("GetRbacRoleByID", t, func() {
		var rbacRoleID uint64 = 1
		mockedDaoHub.Mock.Rbac.EXPECT().GetRbacRoleByID(ctx, gomock.Any(), rbacRoleID)
		_, err := svc.GetRbacRoleByID(ctx, rbacRoleID)

		convey.So(err, convey.ShouldBeNil)
	})
}

/*
func TestRbacRoleSvc_CreateRbacRole(t *testing.T) {
	ctrl := gomock.NewController(t)
	defer ctrl.Finish()
	mockedDaoHub := dao.NewDaoMockHub(ctrl).NewHub()
	ctx := context.TODO()
	svc := NewRbacRolesSvc(nil, mockedDaoHub)
	var name string = "testName"
	var displayName string = "displayName-test"
	var description string = "testName"
	var scopeType string = "testName"

	_ = svc.CreateRbacRole(ctx, name, description, scopeType, displayName)
	convey.Convey("GetRbacRoleByID", t, func() {
		var rbacRoleID uint64 = 1
		mockedDaoHub.Mock.Rbac.EXPECT().GetRbacRoleByID(ctx, nil, rbacRoleID)
		r, err := svc.GetRbacRoleByID(ctx, rbacRoleID)

		convey.So(r.Name, convey.ShouldEqual, name)
		convey.So(err, convey.ShouldBeNil)
	})
}
*/
