@@ -13,6 +13,16 @@ import (
1313 "github.com/stretchr/testify/assert"
1414)
1515
16+ func createTestBudget (t * testing.T , c models.BudgetCreate ) controllers.BudgetResponse {
17+ r := test .Request (t , http .MethodPost , "/v1/budgets" , c )
18+ test .AssertHTTPStatus (t , http .StatusCreated , & r )
19+
20+ var a controllers.BudgetResponse
21+ test .DecodeResponse (t , & r , & a )
22+
23+ return a
24+ }
25+
1626func TestGetBudgets (t * testing.T ) {
1727 recorder := test .Request (t , "GET" , "/v1/budgets" , "" )
1828
@@ -34,6 +44,53 @@ func TestGetBudgets(t *testing.T) {
3444 assert .LessOrEqual (t , diff , test .TOLERANCE )
3545}
3646
47+ func TestGetBudgetsFilter (t * testing.T ) {
48+ _ = createTestBudget (t , models.BudgetCreate {
49+ Name : "Exact String Match" ,
50+ Note : "This is a specific note" ,
51+ Currency : "€" ,
52+ })
53+
54+ _ = createTestBudget (t , models.BudgetCreate {
55+ Name : "Another String" ,
56+ Note : "This is a specific note" ,
57+ Currency : "$" ,
58+ })
59+
60+ _ = createTestBudget (t , models.BudgetCreate {
61+ Name : "Another String" ,
62+ Note : "A different note" ,
63+ Currency : "€" ,
64+ })
65+
66+ var re controllers.BudgetListResponse
67+
68+ r := test .Request (t , http .MethodGet , "/v1/budgets?currency=€" , "" )
69+ test .AssertHTTPStatus (t , http .StatusOK , & r )
70+ test .DecodeResponse (t , & r , & re )
71+ assert .Equal (t , 2 , len (re .Data ))
72+
73+ r = test .Request (t , http .MethodGet , "/v1/budgets?currency=$" , "" )
74+ test .AssertHTTPStatus (t , http .StatusOK , & r )
75+ test .DecodeResponse (t , & r , & re )
76+ assert .Equal (t , 1 , len (re .Data ))
77+
78+ r = test .Request (t , http .MethodGet , "/v1/budgets?currency=€&name=Another String" , "" )
79+ test .AssertHTTPStatus (t , http .StatusOK , & r )
80+ test .DecodeResponse (t , & r , & re )
81+ assert .Equal (t , 1 , len (re .Data ))
82+
83+ r = test .Request (t , http .MethodGet , "/v1/budgets?note=This is a specific note" , "" )
84+ test .AssertHTTPStatus (t , http .StatusOK , & r )
85+ test .DecodeResponse (t , & r , & re )
86+ assert .Equal (t , 2 , len (re .Data ))
87+
88+ r = test .Request (t , http .MethodGet , "/v1/budgets?name=Exact String Match" , "" )
89+ test .AssertHTTPStatus (t , http .StatusOK , & r )
90+ test .DecodeResponse (t , & r , & re )
91+ assert .Equal (t , 1 , len (re .Data ))
92+ }
93+
3794func TestNoBudgetNotFound (t * testing.T ) {
3895 recorder := test .Request (t , "GET" , "/v1/budgets/65064e6f-04b4-46e0-8bbc-88c96c6b21bd" , "" )
3996
0 commit comments