github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/internal/rpc/core/env_test.go (about)

     1  package core
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestPaginationPage(t *testing.T) {
    11  	cases := []struct {
    12  		totalCount int
    13  		perPage    int
    14  		page       int
    15  		newPage    int
    16  		expErr     bool
    17  	}{
    18  		{0, 10, 1, 1, false},
    19  
    20  		{0, 10, 0, 1, false},
    21  		{0, 10, 1, 1, false},
    22  		{0, 10, 2, 0, true},
    23  
    24  		{5, 10, -1, 0, true},
    25  		{5, 10, 0, 1, false},
    26  		{5, 10, 1, 1, false},
    27  		{5, 10, 2, 0, true},
    28  		{5, 10, 2, 0, true},
    29  
    30  		{5, 5, 1, 1, false},
    31  		{5, 5, 2, 0, true},
    32  		{5, 5, 3, 0, true},
    33  
    34  		{5, 3, 2, 2, false},
    35  		{5, 3, 3, 0, true},
    36  
    37  		{5, 2, 2, 2, false},
    38  		{5, 2, 3, 3, false},
    39  		{5, 2, 4, 0, true},
    40  	}
    41  
    42  	for _, c := range cases {
    43  		p, err := validatePage(&c.page, c.perPage, c.totalCount)
    44  		if c.expErr {
    45  			assert.Error(t, err)
    46  			continue
    47  		}
    48  
    49  		assert.Equal(t, c.newPage, p, fmt.Sprintf("%v", c))
    50  	}
    51  
    52  	// nil case
    53  	p, err := validatePage(nil, 1, 1)
    54  	if assert.NoError(t, err) {
    55  		assert.Equal(t, 1, p)
    56  	}
    57  }
    58  
    59  func TestPaginationPerPage(t *testing.T) {
    60  	cases := []struct {
    61  		perPage    int
    62  		newPerPage int
    63  	}{
    64  		{0, defaultPerPage},
    65  		{1, 1},
    66  		{2, 2},
    67  		{defaultPerPage, defaultPerPage},
    68  		{maxPerPage - 1, maxPerPage - 1},
    69  		{maxPerPage, maxPerPage},
    70  		{maxPerPage + 1, maxPerPage},
    71  	}
    72  
    73  	env := &Environment{}
    74  
    75  	for _, c := range cases {
    76  		p := env.validatePerPage(&c.perPage)
    77  		assert.Equal(t, c.newPerPage, p, fmt.Sprintf("%v", c))
    78  	}
    79  
    80  	// nil case
    81  	p := env.validatePerPage(nil)
    82  	assert.Equal(t, defaultPerPage, p)
    83  
    84  	// test in unsafe mode
    85  	env.Config.Unsafe = true
    86  	perPage := 1000
    87  	p = env.validatePerPage(&perPage)
    88  	assert.Equal(t, perPage, p)
    89  	env.Config.Unsafe = false
    90  }