github.com/goravel/framework@v1.13.9/queue/machinery_test.go (about)

     1  package queue
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/suite"
     7  
     8  	configmock "github.com/goravel/framework/contracts/config/mocks"
     9  	logmock "github.com/goravel/framework/contracts/log/mocks"
    10  )
    11  
    12  type MachineryTestSuite struct {
    13  	suite.Suite
    14  	mockConfig *configmock.Config
    15  	mockLog    *logmock.Log
    16  	machinery  *Machinery
    17  }
    18  
    19  func TestMachineryTestSuite(t *testing.T) {
    20  	suite.Run(t, new(MachineryTestSuite))
    21  }
    22  
    23  func (s *MachineryTestSuite) SetupTest() {
    24  	s.mockConfig = &configmock.Config{}
    25  	s.mockLog = &logmock.Log{}
    26  	s.machinery = NewMachinery(NewConfig(s.mockConfig), s.mockLog)
    27  }
    28  
    29  func (s *MachineryTestSuite) TestServer() {
    30  	tests := []struct {
    31  		name         string
    32  		connection   string
    33  		queue        string
    34  		setup        func()
    35  		expectServer bool
    36  		expectErr    bool
    37  	}{
    38  		{
    39  			name:       "sync",
    40  			connection: "sync",
    41  			setup: func() {
    42  				s.mockConfig.On("GetString", "queue.connections.sync.driver").Return("sync").Once()
    43  			},
    44  		},
    45  		{
    46  			name:       "redis",
    47  			connection: "redis",
    48  			setup: func() {
    49  				s.mockConfig.On("GetString", "queue.connections.redis.driver").Return("redis").Once()
    50  				s.mockConfig.On("GetString", "queue.connections.redis.connection").Return("default").Once()
    51  				s.mockConfig.On("GetString", "database.redis.default.host").Return("127.0.0.1").Once()
    52  				s.mockConfig.On("GetString", "database.redis.default.password").Return("").Once()
    53  				s.mockConfig.On("GetInt", "database.redis.default.port").Return(6379).Once()
    54  				s.mockConfig.On("GetInt", "database.redis.default.database").Return(0).Once()
    55  				s.mockConfig.On("GetString", "queue.connections.redis.queue", "default").Return("default").Once()
    56  				s.mockConfig.On("GetString", "app.name").Return("goravel").Once()
    57  				s.mockConfig.On("GetBool", "app.debug").Return(true).Once()
    58  			},
    59  			expectServer: true,
    60  		},
    61  		{
    62  			name:       "error",
    63  			connection: "custom",
    64  			setup: func() {
    65  				s.mockConfig.On("GetString", "queue.connections.custom.driver").Return("custom").Once()
    66  
    67  			},
    68  			expectErr: true,
    69  		},
    70  	}
    71  
    72  	for _, test := range tests {
    73  		s.Run(test.name, func() {
    74  			test.setup()
    75  			server, err := s.machinery.Server(test.connection, test.queue)
    76  			s.Equal(test.expectServer, server != nil)
    77  			s.Equal(test.expectErr, err != nil)
    78  			s.mockConfig.AssertExpectations(s.T())
    79  		})
    80  	}
    81  }