github.com/liucxer/courier@v1.7.1/sqlx/generator/utils_test.go (about)

     1  package generator
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/liucxer/courier/sqlx/builder"
     8  	"github.com/onsi/gomega"
     9  )
    10  
    11  func init() {
    12  	_ = os.Chdir("./test")
    13  }
    14  
    15  func TestParseIndexesFromDoc(t *testing.T) {
    16  	t.Run("parse primary", func(t *testing.T) {
    17  		keys, other := parseKeysFromDoc(`
    18  @def primary ID
    19  summary
    20  desc
    21  `)
    22  		gomega.NewWithT(t).Expect(keys).To(gomega.Equal(&Keys{
    23  			Primary: []string{"ID"},
    24  		}))
    25  
    26  		gomega.NewWithT(t).Expect(other).To(gomega.Equal([]string{
    27  			"summary",
    28  			"desc",
    29  		}))
    30  	})
    31  	t.Run("parse index", func(t *testing.T) {
    32  		keys, _ := parseKeysFromDoc(`
    33  @def index I_name   Name
    34  @def index I_nickname/HASH Nickname Name
    35  `)
    36  		gomega.NewWithT(t).Expect(keys).To(gomega.Equal(&Keys{
    37  			Indexes: builder.Indexes{
    38  				"I_name":          []string{"Name"},
    39  				"I_nickname/HASH": []string{"Nickname", "Name"},
    40  			},
    41  		}))
    42  	})
    43  	t.Run("parse all", func(t *testing.T) {
    44  		keys, _ := parseKeysFromDoc(`
    45  @def primary ID
    46  @def index I_nickname/BTREE Nickname
    47  @def index I_username Username
    48  @def index I_geom/SPATIAL Geom
    49  @def unique_index I_name Name
    50  `)
    51  		gomega.NewWithT(t).Expect(keys).To(gomega.Equal(&Keys{
    52  			Primary: []string{"ID"},
    53  			Indexes: builder.Indexes{
    54  				"I_nickname/BTREE": []string{"Nickname"},
    55  				"I_username":       []string{"Username"},
    56  				"I_geom/SPATIAL":   []string{"Geom"},
    57  			},
    58  			UniqueIndexes: builder.Indexes{
    59  				"I_name": []string{"Name"},
    60  			},
    61  		}))
    62  	})
    63  }
    64  
    65  func TestParseColRel(t *testing.T) {
    66  	t.Run("rel", func(t *testing.T) {
    67  		rel, others := parseColRelFromComment(`
    68  @rel Account.AccountID
    69  
    70  summary
    71  
    72  desc
    73  `)
    74  		gomega.NewWithT(t).Expect(rel).To(gomega.Equal("Account.AccountID"))
    75  		gomega.NewWithT(t).Expect(others).To(gomega.Equal([]string{
    76  			"summary",
    77  			"desc",
    78  		}))
    79  	})
    80  }