github.com/devgek/webskeleton@v0.1.12-0.20231108100924-b903f5172d69/services/entityservicesimpl_test.go (about)

     1  package services
     2  
     3  import (
     4  	"github.com/devgek/webskeleton/data"
     5  	"github.com/devgek/webskeleton/models"
     6  	genmodels "github.com/devgek/webskeleton/models/generated"
     7  	"github.com/stretchr/testify/assert"
     8  	"testing"
     9  )
    10  
    11  func TestServices_GetEntityOptions(t *testing.T) {
    12  	mockedDB := data.MockedDatastore{}
    13  	ef := genmodels.NewEntityFactoryImpl()
    14  	services := NewServices(ef, &mockedDB)
    15  
    16  	u := models.User{}
    17  	us := []models.User{}
    18  	users := []models.User{}
    19  	users = append(users, models.User{Name: "Maxi", Pass: "xyz", Email: "maxi@test.at", Role: 0})
    20  	users = append(users, models.User{Name: "Franzi", Pass: "xyz", Email: "franzi@test.at", Role: 0})
    21  	// setup expectations
    22  	mockedDB.On("GetAllEntities", &u, &us).Return(users)
    23  
    24  	// call the code we are testing
    25  	userOptions, err := services.GetEntityOptions(genmodels.EntityTypeUser)
    26  	assert.Nil(t, err, "No error expected")
    27  	assert.NotNil(t, userOptions, "Returned options expected")
    28  	assert.Equal(t, 2, len(userOptions), "Expected 2 user options")
    29  	assert.Equal(t, "Maxi:maxi@test.at", userOptions[0].Value, "Expected Maxi option")
    30  	assert.Equal(t, "Franzi:franzi@test.at", userOptions[1].Value, "Expected Franzi option")
    31  
    32  	// assert that the expectations were met
    33  	mockedDB.AssertNumberOfCalls(t, "GetAllEntities", 1)
    34  	mockedDB.AssertExpectations(t)
    35  }