github.com/jxgolibs/go-oauth2-server@v1.0.1/util/sql_test.go (about)

     1  package util_test
     2  
     3  import (
     4  	"database/sql"
     5  	"database/sql/driver"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/RichardKnop/go-oauth2-server/util"
    10  	"github.com/lib/pq"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestIntOrNull(t *testing.T) {
    15  	nullInt := util.PositiveIntOrNull(1)
    16  	assert.True(t, nullInt.Valid)
    17  
    18  	value, err := nullInt.Value()
    19  	assert.Nil(t, err)
    20  	assert.Equal(t, int64(1), value)
    21  }
    22  
    23  func TestPositiveIntOrNull(t *testing.T) {
    24  	var (
    25  		nullInt sql.NullInt64
    26  		value   driver.Value
    27  		err     error
    28  	)
    29  
    30  	// When the number is negative
    31  	nullInt = util.PositiveIntOrNull(-1)
    32  
    33  	// nullInt.Valid should be false
    34  	assert.False(t, nullInt.Valid)
    35  
    36  	// nullInt.Value() should return nil
    37  	value, err = nullInt.Value()
    38  	assert.Nil(t, err)
    39  	assert.Nil(t, value)
    40  
    41  	// When the number is greater than zero
    42  	nullInt = util.PositiveIntOrNull(1)
    43  
    44  	// nullInt.Valid should be true
    45  	assert.True(t, nullInt.Valid)
    46  
    47  	// nullInt.Value() should return the integer
    48  	value, err = nullInt.Value()
    49  	assert.Nil(t, err)
    50  	assert.Equal(t, int64(1), value)
    51  }
    52  
    53  func TestFloatOrNull(t *testing.T) {
    54  	nullFloat := util.FloatOrNull(1.5)
    55  	assert.True(t, nullFloat.Valid)
    56  
    57  	value, err := nullFloat.Value()
    58  	assert.Nil(t, err)
    59  	assert.Equal(t, 1.5, value)
    60  }
    61  
    62  func TestPositiveFloatOrNull(t *testing.T) {
    63  	var (
    64  		nullFloat sql.NullFloat64
    65  		value     driver.Value
    66  		err       error
    67  	)
    68  
    69  	// When the number is negative
    70  	nullFloat = util.PositiveFloatOrNull(-0.5)
    71  
    72  	// nullFloat.Valid should be false
    73  	assert.False(t, nullFloat.Valid)
    74  
    75  	// nullFloat.Value() should return nil
    76  	value, err = nullFloat.Value()
    77  	assert.Nil(t, err)
    78  	assert.Nil(t, value)
    79  
    80  	// When the number is greater than zero
    81  	nullFloat = util.PositiveFloatOrNull(1.5)
    82  
    83  	// nullFloat.Valid should be true
    84  	assert.True(t, nullFloat.Valid)
    85  
    86  	// nullFloat.Value() should return the integer
    87  	value, err = nullFloat.Value()
    88  	assert.Nil(t, err)
    89  	assert.Equal(t, 1.5, value)
    90  }
    91  
    92  func TestStringOrNull(t *testing.T) {
    93  	var (
    94  		nullString sql.NullString
    95  		value      driver.Value
    96  		err        error
    97  	)
    98  
    99  	// When the string is empty
   100  	nullString = util.StringOrNull("")
   101  
   102  	// nullString.Valid should be false
   103  	assert.False(t, nullString.Valid)
   104  
   105  	// nullString.Value() should return nil
   106  	value, err = nullString.Value()
   107  	assert.Nil(t, err)
   108  	assert.Nil(t, value)
   109  
   110  	// When the string is not empty
   111  	nullString = util.StringOrNull("foo")
   112  
   113  	// nullString.Valid should be true
   114  	assert.True(t, nullString.Valid)
   115  
   116  	// nullString.Value() should return the string
   117  	value, err = nullString.Value()
   118  	assert.Nil(t, err)
   119  	assert.Equal(t, "foo", value)
   120  }
   121  
   122  func TestTimeOrNull(t *testing.T) {
   123  	var (
   124  		nullTime pq.NullTime
   125  		value    driver.Value
   126  		err      error
   127  	)
   128  
   129  	// When the time is nil
   130  	nullTime = util.TimeOrNull(nil)
   131  
   132  	// nullTime.Valid should be false
   133  	assert.False(t, nullTime.Valid)
   134  
   135  	// nullInt.Value() should return nil
   136  	value, err = nullTime.Value()
   137  	assert.Nil(t, err)
   138  	assert.Nil(t, value)
   139  
   140  	// When the time is time.Time instance
   141  	now := time.Now()
   142  	nullTime = util.TimeOrNull(&now)
   143  
   144  	// nullTime.Valid should be true
   145  	assert.True(t, nullTime.Valid)
   146  
   147  	// nullTime.Value() should return the time.Time
   148  	value, err = nullTime.Value()
   149  	assert.Nil(t, err)
   150  	assert.Equal(t, now, value)
   151  }