flamingo.me/flamingo-commerce/v3@v3.11.0/search/application/searchService_test.go (about) 1 package application 2 3 import ( 4 "reflect" 5 "testing" 6 7 "flamingo.me/flamingo-commerce/v3/search/domain" 8 ) 9 10 func TestBuildFilters(t *testing.T) { 11 type args struct { 12 request SearchRequest 13 defaultPageSize int 14 } 15 tests := []struct { 16 name string 17 args args 18 want []domain.Filter 19 }{ 20 { 21 name: "default page size", 22 args: args{ 23 request: SearchRequest{ 24 AdditionalFilter: []domain.Filter{domain.NewKeyValueFilter("key", []string{"value1", "value2"})}, 25 Page: 3, 26 SortBy: "price", 27 SortDirection: "desc", 28 Query: "query", 29 }, 30 defaultPageSize: 15, 31 }, 32 want: []domain.Filter{ 33 domain.NewQueryFilter("query"), 34 domain.NewPaginationPageFilter(3), 35 domain.NewPaginationPageSizeFilter(15), 36 domain.NewSortFilter("price", "desc"), 37 domain.NewKeyValueFilter("key", []string{"value1", "value2"}), 38 }, 39 }, 40 { 41 name: "given page size", 42 args: args{ 43 request: SearchRequest{ 44 AdditionalFilter: []domain.Filter{domain.NewKeyValueFilter("key", []string{"value1", "value2"})}, 45 46 Page: 3, 47 PageSize: 33, 48 SortBy: "price", 49 SortDirection: "desc", 50 Query: "query", 51 }, 52 defaultPageSize: 15, 53 }, 54 want: []domain.Filter{ 55 domain.NewQueryFilter("query"), 56 domain.NewPaginationPageFilter(3), 57 domain.NewPaginationPageSizeFilter(33), 58 domain.NewSortFilter("price", "desc"), 59 domain.NewKeyValueFilter("key", []string{"value1", "value2"}), 60 }, 61 }, 62 } 63 for _, tt := range tests { 64 t.Run(tt.name, func(t *testing.T) { 65 got := BuildFilters(tt.args.request, tt.args.defaultPageSize) 66 for i, want := range tt.want { 67 if len(got) <= i { 68 t.Fatalf("too few entries in filter: want %d, got %d", len(tt.want), len(got)) 69 } 70 if !reflect.DeepEqual(got[i], want) { 71 t.Errorf("BuildFilters() = %#v, want %#v", got[i], want) 72 } 73 } 74 }) 75 } 76 }