flamingo.me/flamingo-commerce/v3@v3.11.0/category/infrastructure/fake/category_service_test.go (about) 1 package fake_test 2 3 import ( 4 "context" 5 "testing" 6 7 "flamingo.me/flamingo/v3/framework/flamingo" 8 "github.com/stretchr/testify/assert" 9 10 "flamingo.me/flamingo-commerce/v3/category/domain" 11 "flamingo.me/flamingo-commerce/v3/category/infrastructure/fake" 12 ) 13 14 func TestCategoryService_Tree(t *testing.T) { 15 service := &fake.CategoryService{} 16 service.Inject(flamingo.NullLogger{}, nil) 17 18 t.Run("category not found", func(t *testing.T) { 19 _, err := service.Tree(context.Background(), "not-found") 20 if assert.NotNil(t, err) { 21 assert.Equal(t, err, domain.ErrNotFound) 22 } 23 }) 24 t.Run("empty category should return all", func(t *testing.T) { 25 tree, err := service.Tree(context.Background(), "") 26 if assert.Nil(t, err) { 27 assert.Equal(t, "", tree.Code()) 28 assert.Equal(t, true, tree.Active()) 29 if assert.Equal(t, len(tree.SubTrees()), 2) { 30 electronicsTree := tree.SubTrees()[0] 31 assert.Equal(t, "electronics", electronicsTree.Code()) 32 clothingTree := tree.SubTrees()[1] 33 assert.Equal(t, "clothing", clothingTree.Code()) 34 } 35 } 36 }) 37 t.Run("category electronics", func(t *testing.T) { 38 tree, err := service.Tree(context.Background(), "electronics") 39 if assert.Nil(t, err) { 40 assert.Equal(t, "electronics", tree.Code()) 41 assert.Equal(t, true, tree.Active()) 42 } 43 }) 44 t.Run("category headphones", func(t *testing.T) { 45 tree, err := service.Tree(context.Background(), "headphones") 46 if assert.Nil(t, err) { 47 assert.Equal(t, "electronics", tree.Code()) 48 assert.Equal(t, true, tree.Active()) 49 50 if assert.Equal(t, len(tree.SubTrees()), 3) { 51 headphonesTree := tree.SubTrees()[1] 52 assert.Equal(t, true, headphonesTree.Active()) 53 } 54 } 55 }) 56 t.Run("category headphone_accessories", func(t *testing.T) { 57 tree, err := service.Tree(context.Background(), "headphone_accessories") 58 if assert.Nil(t, err) { 59 assert.Equal(t, "electronics", tree.Code()) 60 assert.Equal(t, true, tree.Active()) 61 62 if assert.Equal(t, 3, len(tree.SubTrees())) { 63 headphonesTree := tree.SubTrees()[1] 64 assert.Equal(t, true, headphonesTree.Active()) 65 if assert.Equal(t, 1, len(headphonesTree.SubTrees())) { 66 accessoriesTree := headphonesTree.SubTrees()[0] 67 assert.Equal(t, true, accessoriesTree.Active()) 68 } 69 } 70 } 71 }) 72 t.Run("category clothing", func(t *testing.T) { 73 tree, err := service.Tree(context.Background(), "clothing") 74 if assert.Nil(t, err) { 75 assert.Equal(t, "clothing", tree.Code()) 76 assert.Equal(t, true, tree.Active()) 77 } 78 }) 79 t.Run("category jumpsuits", func(t *testing.T) { 80 tree, err := service.Tree(context.Background(), "jumpsuits") 81 if assert.Nil(t, err) { 82 assert.Equal(t, "clothing", tree.Code()) 83 assert.Equal(t, true, tree.Active()) 84 85 if assert.Equal(t, 1, len(tree.SubTrees())) { 86 jumpsuitsTree := tree.SubTrees()[0] 87 assert.Equal(t, true, jumpsuitsTree.Active()) 88 } 89 } 90 }) 91 } 92 93 func TestCategoryService_Get(t *testing.T) { 94 service := &fake.CategoryService{} 95 service.Inject(flamingo.NullLogger{}, nil) 96 97 t.Run("category not found", func(t *testing.T) { 98 _, err := service.Get(context.Background(), "not-found") 99 if assert.NotNil(t, err) { 100 assert.Equal(t, err, domain.ErrNotFound) 101 } 102 }) 103 t.Run("category electronics", func(t *testing.T) { 104 category, err := service.Get(context.Background(), "electronics") 105 if assert.Nil(t, err) { 106 assert.Equal(t, "electronics", category.Code()) 107 assert.True(t, category.Promoted()) 108 assert.Equal(t, "promotion", category.CategoryType()) 109 assert.Equal(t, 1, len(category.Media())) 110 assert.Equal(t, "Promotion", category.Attributes().Get("promo").Label) 111 112 if categoryData, ok := category.(domain.CategoryData); ok { 113 assert.Equal(t, "application/pdf", categoryData.Promotion.LinkType) 114 assert.Equal(t, "blank", categoryData.Promotion.LinkTarget) 115 assert.Equal(t, 1, len(categoryData.Promotion.Media)) 116 } 117 } 118 }) 119 t.Run("category headphones", func(t *testing.T) { 120 category, err := service.Get(context.Background(), "headphones") 121 if assert.Nil(t, err) { 122 assert.Equal(t, "headphones", category.Code()) 123 assert.Equal(t, 0, len(category.Media())) 124 } 125 }) 126 t.Run("category headphone_accessories", func(t *testing.T) { 127 category, err := service.Get(context.Background(), "headphone_accessories") 128 if assert.Nil(t, err) { 129 assert.Equal(t, "headphone_accessories", category.Code()) 130 assert.Equal(t, 0, len(category.Media())) 131 } 132 }) 133 t.Run("category clothing", func(t *testing.T) { 134 category, err := service.Get(context.Background(), "clothing") 135 if assert.Nil(t, err) { 136 assert.Equal(t, "clothing", category.Code()) 137 assert.Equal(t, 0, len(category.Media())) 138 } 139 }) 140 t.Run("category jumpsuits", func(t *testing.T) { 141 category, err := service.Get(context.Background(), "jumpsuits") 142 if assert.Nil(t, err) { 143 assert.Equal(t, "jumpsuits", category.Code()) 144 assert.Equal(t, 0, len(category.Media())) 145 } 146 }) 147 }