mirror of
				https://github.com/elyby/chrly.git
				synced 2025-05-31 14:11:51 +05:30 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package mojangtextures
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/elyby/chrly/api/mojang"
 | 
						|
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
	"github.com/stretchr/testify/mock"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
type uuidsStorageMock struct {
 | 
						|
	mock.Mock
 | 
						|
}
 | 
						|
 | 
						|
func (m *uuidsStorageMock) GetUuid(username string) (string, error) {
 | 
						|
	args := m.Called(username)
 | 
						|
	return args.String(0), args.Error(1)
 | 
						|
}
 | 
						|
 | 
						|
func (m *uuidsStorageMock) StoreUuid(username string, uuid string) error {
 | 
						|
	m.Called(username, uuid)
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
type texturesStorageMock struct {
 | 
						|
	mock.Mock
 | 
						|
}
 | 
						|
 | 
						|
func (m *texturesStorageMock) GetTextures(uuid string) (*mojang.SignedTexturesResponse, error) {
 | 
						|
	args := m.Called(uuid)
 | 
						|
	var result *mojang.SignedTexturesResponse
 | 
						|
	if casted, ok := args.Get(0).(*mojang.SignedTexturesResponse); ok {
 | 
						|
		result = casted
 | 
						|
	}
 | 
						|
 | 
						|
	return result, args.Error(1)
 | 
						|
}
 | 
						|
 | 
						|
func (m *texturesStorageMock) StoreTextures(uuid string, textures *mojang.SignedTexturesResponse) {
 | 
						|
	m.Called(uuid, textures)
 | 
						|
}
 | 
						|
 | 
						|
func TestSplittedStorage(t *testing.T) {
 | 
						|
	createMockedStorage := func() (*SeparatedStorage, *uuidsStorageMock, *texturesStorageMock) {
 | 
						|
		uuidsStorage := &uuidsStorageMock{}
 | 
						|
		texturesStorage := &texturesStorageMock{}
 | 
						|
 | 
						|
		return &SeparatedStorage{uuidsStorage, texturesStorage}, uuidsStorage, texturesStorage
 | 
						|
	}
 | 
						|
 | 
						|
	t.Run("GetUuid", func(t *testing.T) {
 | 
						|
		storage, uuidsMock, _ := createMockedStorage()
 | 
						|
		uuidsMock.On("GetUuid", "username").Once().Return("find me", nil)
 | 
						|
		result, err := storage.GetUuid("username")
 | 
						|
		assert.Nil(t, err)
 | 
						|
		assert.Equal(t, "find me", result)
 | 
						|
		uuidsMock.AssertExpectations(t)
 | 
						|
	})
 | 
						|
 | 
						|
	t.Run("StoreUuid", func(t *testing.T) {
 | 
						|
		storage, uuidsMock, _ := createMockedStorage()
 | 
						|
		uuidsMock.On("StoreUuid", "username", "result").Once()
 | 
						|
		_ = storage.StoreUuid("username", "result")
 | 
						|
		uuidsMock.AssertExpectations(t)
 | 
						|
	})
 | 
						|
 | 
						|
	t.Run("GetTextures", func(t *testing.T) {
 | 
						|
		result := &mojang.SignedTexturesResponse{Id: "mock id"}
 | 
						|
		storage, _, texturesMock := createMockedStorage()
 | 
						|
		texturesMock.On("GetTextures", "uuid").Once().Return(result, nil)
 | 
						|
		returned, err := storage.GetTextures("uuid")
 | 
						|
		assert.Nil(t, err)
 | 
						|
		assert.Equal(t, result, returned)
 | 
						|
		texturesMock.AssertExpectations(t)
 | 
						|
	})
 | 
						|
 | 
						|
	t.Run("StoreTextures", func(t *testing.T) {
 | 
						|
		toStore := &mojang.SignedTexturesResponse{}
 | 
						|
		storage, _, texturesMock := createMockedStorage()
 | 
						|
		texturesMock.On("StoreTextures", "mock id", toStore).Once()
 | 
						|
		storage.StoreTextures("mock id", toStore)
 | 
						|
		texturesMock.AssertExpectations(t)
 | 
						|
	})
 | 
						|
}
 | 
						|
 | 
						|
func TestValueNotFound_Error(t *testing.T) {
 | 
						|
	err := &ValueNotFound{}
 | 
						|
	assert.Equal(t, "value not found in the storage", err.Error())
 | 
						|
}
 |