Skip to content

Commit

Permalink
fix: convert error
Browse files Browse the repository at this point in the history
  • Loading branch information
devhaozi committed Dec 5, 2023
1 parent 4309dc4 commit 4b66470
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 51 deletions.
13 changes: 6 additions & 7 deletions queue/driver_async_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package queue

import (
"context"
"encoding/json"
"sync"
"testing"
"time"
Expand Down Expand Up @@ -78,7 +77,7 @@ func (s *DriverAsyncTestSuite) TestDefaultAsyncQueue() {
time.Sleep(2 * time.Second)
s.Nil(s.app.Job(&TestAsyncJob{}, []queue.Arg{
{Type: "string", Value: "TestDefaultAsyncQueue"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
}).Dispatch())
time.Sleep(2 * time.Second)
s.Equal(1, testAsyncJob)
Expand Down Expand Up @@ -109,7 +108,7 @@ func (s *DriverAsyncTestSuite) TestDelayAsyncQueue() {
time.Sleep(2 * time.Second)
s.Nil(s.app.Job(&TestDelayAsyncJob{}, []queue.Arg{
{Type: "string", Value: "TestDelayAsyncQueue"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
}).OnQueue("delay").Delay(carbon.Now().AddSeconds(3)).Dispatch())
time.Sleep(2 * time.Second)
s.Equal(0, testDelayAsyncJob)
Expand Down Expand Up @@ -144,7 +143,7 @@ func (s *DriverAsyncTestSuite) TestCustomAsyncQueue() {
time.Sleep(2 * time.Second)
s.Nil(s.app.Job(&TestCustomAsyncJob{}, []queue.Arg{
{Type: "string", Value: "TestCustomAsyncQueue"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
}).OnConnection("custom").OnQueue("custom1").Dispatch())
time.Sleep(2 * time.Second)
s.Equal(1, testCustomAsyncJob)
Expand Down Expand Up @@ -176,7 +175,7 @@ func (s *DriverAsyncTestSuite) TestErrorAsyncQueue() {
time.Sleep(2 * time.Second)
s.Error(s.app.Job(&TestErrorAsyncJob{}, []queue.Arg{
{Type: "string", Value: "TestErrorAsyncQueue"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
}).OnConnection("redis").OnQueue("error1").Dispatch())
time.Sleep(2 * time.Second)
s.Equal(0, testErrorAsyncJob)
Expand Down Expand Up @@ -211,14 +210,14 @@ func (s *DriverAsyncTestSuite) TestChainAsyncQueue() {
Job: &TestChainAsyncJob{},
Args: []queue.Arg{
{Type: "string", Value: "TestChainAsyncJob"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
},
},
{
Job: &TestAsyncJob{},
Args: []queue.Arg{
{Type: "string", Value: "TestAsyncJob"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
},
},
}).OnQueue("chain").Dispatch())
Expand Down
13 changes: 6 additions & 7 deletions queue/driver_redis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package queue

import (
"context"
"encoding/json"
"sync"
"testing"
"time"
Expand Down Expand Up @@ -98,7 +97,7 @@ func (s *DriverRedisTestSuite) TestDefaultRedisQueue() {
time.Sleep(2 * time.Second)
s.Nil(s.app.Job(&TestRedisJob{}, []queue.Arg{
{Type: "string", Value: "TestDefaultRedisQueue"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
}).Dispatch())
time.Sleep(2 * time.Second)
s.Equal(1, testRedisJob)
Expand Down Expand Up @@ -134,7 +133,7 @@ func (s *DriverRedisTestSuite) TestDelayRedisQueue() {
time.Sleep(2 * time.Second)
s.Nil(s.app.Job(&TestDelayRedisJob{}, []queue.Arg{
{Type: "string", Value: "TestDelayRedisQueue"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
}).OnQueue("delay").Delay(carbon.Now().AddSeconds(3)).Dispatch())
time.Sleep(2 * time.Second)
s.Equal(0, testDelayRedisJob)
Expand Down Expand Up @@ -174,7 +173,7 @@ func (s *DriverRedisTestSuite) TestCustomRedisQueue() {
time.Sleep(2 * time.Second)
s.Nil(s.app.Job(&TestCustomRedisJob{}, []queue.Arg{
{Type: "string", Value: "TestCustomRedisQueue"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
}).OnConnection("custom").OnQueue("custom1").Dispatch())
time.Sleep(2 * time.Second)
s.Equal(1, testCustomRedisJob)
Expand Down Expand Up @@ -210,7 +209,7 @@ func (s *DriverRedisTestSuite) TestErrorRedisQueue() {
time.Sleep(2 * time.Second)
s.Nil(s.app.Job(&TestErrorRedisJob{}, []queue.Arg{
{Type: "string", Value: "TestErrorRedisQueue"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
}).OnConnection("redis").OnQueue("error1").Dispatch())
time.Sleep(2 * time.Second)
s.Equal(0, testErrorRedisJob)
Expand Down Expand Up @@ -250,14 +249,14 @@ func (s *DriverRedisTestSuite) TestChainRedisQueue() {
Job: &TestChainRedisJob{},
Args: []queue.Arg{
{Type: "string", Value: "TestChainRedisJob"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
},
},
{
Job: &TestRedisJob{},
Args: []queue.Arg{
{Type: "string", Value: "TestRedisJob"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
},
},
}).OnQueue("chain").Dispatch())
Expand Down
7 changes: 3 additions & 4 deletions queue/driver_sync_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package queue

import (
"encoding/json"
"sync"
"testing"
"time"
Expand Down Expand Up @@ -49,7 +48,7 @@ func (s *DriverSyncTestSuite) TestSyncQueue() {

s.Nil(s.app.Job(&TestSyncJob{}, []queue.Arg{
{Type: "string", Value: "TestSyncQueue"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
}).DispatchSync())
s.Equal(1, testSyncJob)

Expand All @@ -67,14 +66,14 @@ func (s *DriverSyncTestSuite) TestChainSyncQueue() {
Job: &TestChainSyncJob{},
Args: []queue.Arg{
{Type: "string", Value: "TestChainSyncJob"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
},
},
{
Job: &TestSyncJob{},
Args: []queue.Arg{
{Type: "string", Value: "TestSyncJob"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
},
},
}).OnQueue("chain").Dispatch())
Expand Down
3 changes: 1 addition & 2 deletions queue/utils_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package queue

import (
"encoding/json"
"reflect"
"testing"

Expand Down Expand Up @@ -161,7 +160,7 @@ func TestEvents2Tasks(t *testing.T) {
func TestArgsToValuesWithValidArgs(t *testing.T) {
args := []contractsqueue.Arg{
{Type: "string", Value: "test"},
{Type: "int", Value: json.Number("1")},
{Type: "int", Value: 1},
}

values, err := argsToValues(args)
Expand Down
28 changes: 13 additions & 15 deletions support/convert/value.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"reflect"
"strconv"
"strings"

"github.com/spf13/cast"
)

var (
Expand Down Expand Up @@ -259,8 +261,8 @@ func reflectValues(valueType string, value any) (reflect.Value, error) {
}

func getBoolValue(theType string, value any) (bool, error) {
b, ok := value.(bool)
if !ok {
b, err := cast.ToBoolE(value)
if err != nil {
return false, typeConversionError(value, typesMap[theType].String())
}

Check warning on line 267 in support/convert/value.go

View check run for this annotation

Codecov / codecov/patch

support/convert/value.go#L266-L267

Added lines #L266 - L267 were not covered by tests

Expand All @@ -280,8 +282,8 @@ func getIntValue(theType string, value any) (int64, error) {
return n.Int64()
}

n, ok := value.(int64)
if !ok {
n, err := cast.ToInt64E(value)
if err != nil {
return 0, typeConversionError(value, typesMap[theType].String())
}

Check warning on line 288 in support/convert/value.go

View check run for this annotation

Codecov / codecov/patch

support/convert/value.go#L285-L288

Added lines #L285 - L288 were not covered by tests

Expand All @@ -306,15 +308,11 @@ func getUintValue(theType string, value any) (uint64, error) {
return uintVal, nil
}

var n uint64
switch value := value.(type) {
case uint64:
n = value
case uint8:
n = uint64(value)
default:
n, err := cast.ToUint64E(value)
if err != nil {
return 0, typeConversionError(value, typesMap[theType].String())
}

Check warning on line 314 in support/convert/value.go

View check run for this annotation

Codecov / codecov/patch

support/convert/value.go#L311-L314

Added lines #L311 - L314 were not covered by tests

return n, nil

Check warning on line 316 in support/convert/value.go

View check run for this annotation

Codecov / codecov/patch

support/convert/value.go#L316

Added line #L316 was not covered by tests
}

Expand All @@ -330,17 +328,17 @@ func getFloatValue(theType string, value any) (float64, error) {
return n.Float64()
}

f, ok := value.(float64)
if !ok {
f, err := cast.ToFloat64E(value)
if err != nil {
return 0, typeConversionError(value, typesMap[theType].String())
}

Check warning on line 334 in support/convert/value.go

View check run for this annotation

Codecov / codecov/patch

support/convert/value.go#L331-L334

Added lines #L331 - L334 were not covered by tests

return f, nil

Check warning on line 336 in support/convert/value.go

View check run for this annotation

Codecov / codecov/patch

support/convert/value.go#L336

Added line #L336 was not covered by tests
}

func getStringValue(theType string, value any) (string, error) {
s, ok := value.(string)
if !ok {
s, err := cast.ToStringE(value)
if err != nil {
return "", typeConversionError(value, typesMap[theType].String())
}

Check warning on line 343 in support/convert/value.go

View check run for this annotation

Codecov / codecov/patch

support/convert/value.go#L342-L343

Added lines #L342 - L343 were not covered by tests

Expand Down
32 changes: 16 additions & 16 deletions support/convert/value_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import (
var (
reflectValuesTestCases = []struct {
name string
value any
value interface{}
expectedType string
expectedValue any
expectedValue interface{}
}{
// basic types
{
Expand Down Expand Up @@ -106,85 +106,85 @@ var (
// slices
{
name: "[]bool",
value: []any{false, true},
value: []interface{}{false, true},
expectedType: "[]bool",
expectedValue: []bool{false, true},
},
{
name: "[]int",
value: []any{json.Number("1"), json.Number("2")},
value: []interface{}{json.Number("1"), json.Number("2")},
expectedType: "[]int",
expectedValue: []int{1, 2},
},
{
name: "[]int8",
value: []any{json.Number("1"), json.Number("2")},
value: []interface{}{json.Number("1"), json.Number("2")},
expectedType: "[]int8",
expectedValue: []int8{1, 2},
},
{
name: "[]int16",
value: []any{json.Number("1"), json.Number("2")},
value: []interface{}{json.Number("1"), json.Number("2")},
expectedType: "[]int16",
expectedValue: []int16{1, 2},
},
{
name: "[]int32",
value: []any{json.Number("1"), json.Number("2")},
value: []interface{}{json.Number("1"), json.Number("2")},
expectedType: "[]int32",
expectedValue: []int32{1, 2},
},
{
name: "[]int64",
value: []any{json.Number("1"), json.Number("2")},
value: []interface{}{json.Number("1"), json.Number("2")},
expectedType: "[]int64",
expectedValue: []int64{1, 2},
},
{
name: "[]uint",
value: []any{json.Number("1"), json.Number("2")},
value: []interface{}{json.Number("1"), json.Number("2")},
expectedType: "[]uint",
expectedValue: []uint{1, 2},
},
{
name: "[]uint8",
value: []any{json.Number("1"), json.Number("2")},
value: []interface{}{json.Number("1"), json.Number("2")},
expectedType: "[]uint8",
expectedValue: []uint8{1, 2},
},
{
name: "[]uint16",
value: []any{json.Number("1"), json.Number("2")},
value: []interface{}{json.Number("1"), json.Number("2")},
expectedType: "[]uint16",
expectedValue: []uint16{1, 2},
},
{
name: "[]uint32",
value: []any{json.Number("1"), json.Number("2")},
value: []interface{}{json.Number("1"), json.Number("2")},
expectedType: "[]uint32",
expectedValue: []uint32{1, 2},
},
{
name: "[]uint64",
value: []any{json.Number("1"), json.Number("2")},
value: []interface{}{json.Number("1"), json.Number("2")},
expectedType: "[]uint64",
expectedValue: []uint64{1, 2},
},
{
name: "[]float32",
value: []any{json.Number("0.5"), json.Number("1.28")},
value: []interface{}{json.Number("0.5"), json.Number("1.28")},
expectedType: "[]float32",
expectedValue: []float32{0.5, 1.28},
},
{
name: "[]float64",
value: []any{json.Number("0.5"), json.Number("1.28")},
value: []interface{}{json.Number("0.5"), json.Number("1.28")},
expectedType: "[]float64",
expectedValue: []float64{0.5, 1.28},
},
{
name: "[]string",
value: []any{"foo", "bar"},
value: []interface{}{"foo", "bar"},
expectedType: "[]string",
expectedValue: []string{"foo", "bar"},
},
Expand Down

0 comments on commit 4b66470

Please sign in to comment.