...

Source file src/go.einride.tech/aip/cmd/protoc-gen-go-aip/internal/genaip/testdata/test/single/pattern_test.go

Documentation: go.einride.tech/aip/cmd/protoc-gen-go-aip/internal/genaip/testdata/test/single

     1  package single
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"gotest.tools/v3/assert"
     8  )
     9  
    10  func TestBookResourceName(t *testing.T) {
    11  	t.Run("good", func(t *testing.T) {
    12  		const (
    13  			shelf = "shelf"
    14  			book  = "book"
    15  		)
    16  		pattern := fmt.Sprintf("shelves/%s/books/%s", shelf, book)
    17  		var name BookResourceName
    18  		err := name.UnmarshalString(pattern)
    19  		assert.NilError(t, err)
    20  		assert.Equal(t, name.Shelf, shelf)
    21  		assert.Equal(t, name.Book, book)
    22  
    23  		marshalled, err := name.MarshalString()
    24  		assert.NilError(t, err)
    25  		assert.Equal(t, marshalled, pattern)
    26  	})
    27  
    28  	t.Run("bad top-level", func(t *testing.T) {
    29  		var name BookResourceName
    30  		err := name.UnmarshalString("books/book")
    31  		assert.Error(
    32  			t,
    33  			err,
    34  			"parse resource name 'books/book' with pattern 'shelves/{shelf}/books/{book}': segment shelves: got books",
    35  		)
    36  	})
    37  
    38  	t.Run("bad wrong parent", func(t *testing.T) {
    39  		var name BookResourceName
    40  		err := name.UnmarshalString("others/other/books/book")
    41  		assert.Error(
    42  			t,
    43  			err,
    44  			"parse resource name 'others/other/books/book' with pattern 'shelves/{shelf}/books/{book}': segment shelves: got others",
    45  		)
    46  	})
    47  }
    48  
    49  func TestShelfResourceName(t *testing.T) {
    50  	t.Run("good", func(t *testing.T) {
    51  		const shelf = "shelf"
    52  		pattern := fmt.Sprintf("shelves/%s", shelf)
    53  		var name ShelfResourceName
    54  		err := name.UnmarshalString(pattern)
    55  		assert.NilError(t, err)
    56  		assert.Equal(t, name.Shelf, shelf)
    57  
    58  		marshalled, err := name.MarshalString()
    59  		assert.NilError(t, err)
    60  		assert.Equal(t, marshalled, pattern)
    61  	})
    62  
    63  	t.Run("invalid", func(t *testing.T) {
    64  		var name ShelfResourceName
    65  		err := name.UnmarshalString("others/other")
    66  		assert.Error(t, err, "parse resource name 'others/other' with pattern 'shelves/{shelf}': segment shelves: got others")
    67  	})
    68  
    69  	t.Run("bad wrong parent", func(t *testing.T) {
    70  		var name ShelfResourceName
    71  		err := name.UnmarshalString("others/other/shelves/shelf")
    72  		assert.Error(
    73  			t,
    74  			err,
    75  			"parse resource name 'others/other/shelves/shelf' with pattern 'shelves/{shelf}': segment shelves: got others",
    76  		)
    77  	})
    78  }
    79  

View as plain text