@@ -66,7 +66,25 @@ func TestAddProduct_Err(t *testing.T) {
6666 router .ServeHTTP (w , req )
6767
6868 if w .Code != http .StatusInternalServerError {
69- t .Errorf ("Expected status 200, got %d" , w .Code )
69+ t .Errorf ("Expected status 500, got %d" , w .Code )
70+ }
71+ }
72+
73+ func TestEditProduct_InvalidPayload (t * testing.T ) {
74+ gin .SetMode (gin .TestMode )
75+ router := gin .Default ()
76+ mockService := new (mocks.IService )
77+ ctrl := controller .NewCartController (mockService )
78+ router .POST ("/cart/edit-product" , ctrl .EditProduct )
79+
80+ payload := `{"client_id":"invalid-uuid","product_id":"123e4567-e89b-12d3-a456-426614174001","quantity":1}`
81+ req , _ := http .NewRequest (http .MethodPost , "/cart/edit-product" , strings .NewReader (payload ))
82+ req .Header .Set ("Content-Type" , "application/json" )
83+ w := httptest .NewRecorder ()
84+ router .ServeHTTP (w , req )
85+
86+ if w .Code != http .StatusBadRequest {
87+ t .Errorf ("Expected status 400, got %d" , w .Code )
7088 }
7189}
7290
@@ -89,6 +107,43 @@ func TestEditProduct_Success(t *testing.T) {
89107 }
90108}
91109
110+ func TestEditProduct_Error (t * testing.T ) {
111+ gin .SetMode (gin .TestMode )
112+ router := gin .Default ()
113+ mockService := new (mocks.IService )
114+ mockService .On ("EditProduct" , mock .Anything , mock .Anything , mock .Anything ).Return (errors .New ("error" ))
115+ ctrl := controller .NewCartController (mockService )
116+ router .POST ("/cart/edit-product" , ctrl .EditProduct )
117+
118+ payload := `{"client_id":"123e4567-e89b-12d3-a456-426614174000","product_id":"123e4567-e89b-12d3-a456-426614174001","quantity":2}`
119+ req , _ := http .NewRequest (http .MethodPost , "/cart/edit-product" , strings .NewReader (payload ))
120+ req .Header .Set ("Content-Type" , "application/json" )
121+ w := httptest .NewRecorder ()
122+ router .ServeHTTP (w , req )
123+
124+ if w .Code != http .StatusInternalServerError {
125+ t .Errorf ("Expected status 500, got %d" , w .Code )
126+ }
127+ }
128+
129+ func TestRemoveProduct_InvalidPayload (t * testing.T ) {
130+ gin .SetMode (gin .TestMode )
131+ router := gin .Default ()
132+ mockService := new (mocks.IService )
133+ ctrl := controller .NewCartController (mockService )
134+ router .POST ("/cart/remove-product" , ctrl .RemoveProduct )
135+
136+ payload := `{"client_id":"invalid-uuid","product_id":"123e4567-e89b-12d3-a456-426614174001","quantity":1}`
137+ req , _ := http .NewRequest (http .MethodPost , "/cart/remove-product" , strings .NewReader (payload ))
138+ req .Header .Set ("Content-Type" , "application/json" )
139+ w := httptest .NewRecorder ()
140+ router .ServeHTTP (w , req )
141+
142+ if w .Code != http .StatusBadRequest {
143+ t .Errorf ("Expected status 400, got %d" , w .Code )
144+ }
145+ }
146+
92147func TestRemoveProduct_Success (t * testing.T ) {
93148 gin .SetMode (gin .TestMode )
94149 router := gin .Default ()
@@ -108,6 +163,43 @@ func TestRemoveProduct_Success(t *testing.T) {
108163 }
109164}
110165
166+ func TestRemoveProduct_Error (t * testing.T ) {
167+ gin .SetMode (gin .TestMode )
168+ router := gin .Default ()
169+ mockService := new (mocks.IService )
170+ mockService .On ("RemoveProduct" , mock .Anything , mock .Anything , mock .Anything ).Return (errors .New ("error" ))
171+ ctrl := controller .NewCartController (mockService )
172+ router .POST ("/cart/remove-product" , ctrl .RemoveProduct )
173+
174+ payload := `{"client_id":"123e4567-e89b-12d3-a456-426614174000","product_id":"123e4567-e89b-12d3-a456-426614174001"}`
175+ req , _ := http .NewRequest (http .MethodPost , "/cart/remove-product" , strings .NewReader (payload ))
176+ req .Header .Set ("Content-Type" , "application/json" )
177+ w := httptest .NewRecorder ()
178+ router .ServeHTTP (w , req )
179+
180+ if w .Code != http .StatusInternalServerError {
181+ t .Errorf ("Expected status 500, got %d" , w .Code )
182+ }
183+ }
184+
185+ func TestOverview_InvalidPayload (t * testing.T ) {
186+ gin .SetMode (gin .TestMode )
187+ router := gin .Default ()
188+ mockService := new (mocks.IService )
189+ ctrl := controller .NewCartController (mockService )
190+ router .POST ("/cart/overview" , ctrl .Overview )
191+
192+ payload := `{"client_id":"invalid-uuid"}`
193+ req , _ := http .NewRequest (http .MethodPost , "/cart/overview" , strings .NewReader (payload ))
194+ req .Header .Set ("Content-Type" , "application/json" )
195+ w := httptest .NewRecorder ()
196+ router .ServeHTTP (w , req )
197+
198+ if w .Code != http .StatusBadRequest {
199+ t .Errorf ("Expected status 400, got %d" , w .Code )
200+ }
201+ }
202+
111203func TestOverview_Success (t * testing.T ) {
112204 gin .SetMode (gin .TestMode )
113205 router := gin .Default ()
@@ -126,3 +218,22 @@ func TestOverview_Success(t *testing.T) {
126218 t .Errorf ("Expected status 200, got %d" , w .Code )
127219 }
128220}
221+
222+ func TestOverview_Error (t * testing.T ) {
223+ gin .SetMode (gin .TestMode )
224+ router := gin .Default ()
225+ mockService := new (mocks.IService )
226+ mockService .On ("GetFullCart" , mock .Anything ).Return (nil , errors .New ("error" ))
227+ ctrl := controller .NewCartController (mockService )
228+ router .POST ("/cart/overview" , ctrl .Overview )
229+
230+ payload := `{"client_id":"123e4567-e89b-12d3-a456-426614174000"}`
231+ req , _ := http .NewRequest (http .MethodPost , "/cart/overview" , strings .NewReader (payload ))
232+ req .Header .Set ("Content-Type" , "application/json" )
233+ w := httptest .NewRecorder ()
234+ router .ServeHTTP (w , req )
235+
236+ if w .Code != http .StatusInternalServerError {
237+ t .Errorf ("Expected status 500, got %d" , w .Code )
238+ }
239+ }
0 commit comments