Skip to content

Commit abbdd70

Browse files
committed
Add status code detection to the response class
1 parent 61cd67c commit abbdd70

3 files changed

Lines changed: 85 additions & 5 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
/tests/results
33
/tests/resources/app/coldbox
44
/node_modules
5-
/modules
5+
/modules
6+
jmimemagic.log

models/HyperResponse.cfc

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,27 @@ component accessors="true" {
2020
return deserializeJSON( getData() );
2121
}
2222

23+
function isSuccess() {
24+
return left( getStatusCode(), 1 ) == "2";
25+
}
26+
27+
function isRedirect() {
28+
return left( getStatusCode(), 1 ) == "3";
29+
}
30+
31+
function isError() {
32+
return left( getStatusCode(), 1 ) == "4" ||
33+
left( getStatusCode(), 1 ) == "5";
34+
}
35+
36+
function isClientError() {
37+
return left( getStatusCode(), 1 ) == "4";
38+
}
39+
40+
function isServerError() {
41+
return left( getStatusCode(), 1 ) == "5";
42+
}
43+
2344
private function populateFromCFHTTP( res ) {
2445
variables.charset = res.charset;
2546
variables.statusCode = res.responseheader.status_code;
@@ -35,8 +56,4 @@ component accessors="true" {
3556
return variables.headers[ lcase( name ) ];
3657
}
3758

38-
function isRedirect() {
39-
return left( getStatusCode(), 1 ) == "3";
40-
}
41-
4259
}

tests/specs/unit/HyperResponseSpec.cfc

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,68 @@ component extends="testbox.system.BaseSpec" {
1414
var json = res.json();
1515
} ).toThrow( "DeserializeJsonException" );
1616
} );
17+
18+
describe( "status code detection", function() {
19+
it( "can tell if a request is a success", function() {
20+
var res = new Hyper.models.HyperResponse( createStub(), {
21+
"charset" = "UTF-8",
22+
"responseheader" = {
23+
"status_code" = "200"
24+
},
25+
"filecontent" = ""
26+
} );
27+
expect( res.isSuccess() ).toBeTrue();
28+
expect( res.isRedirect() ).toBeFalse();
29+
expect( res.isError() ).toBeFalse();
30+
expect( res.isClientError() ).toBeFalse();
31+
expect( res.isServerError() ).toBeFalse();
32+
} );
33+
34+
it( "can tell if a request is a redirect", function() {
35+
var res = new Hyper.models.HyperResponse( createStub(), {
36+
"charset" = "UTF-8",
37+
"responseheader" = {
38+
"status_code" = "302"
39+
},
40+
"filecontent" = ""
41+
} );
42+
expect( res.isSuccess() ).toBeFalse();
43+
expect( res.isRedirect() ).toBeTrue();
44+
expect( res.isError() ).toBeFalse();
45+
expect( res.isClientError() ).toBeFalse();
46+
expect( res.isServerError() ).toBeFalse();
47+
} );
48+
49+
it( "can tell if a request is a client error", function() {
50+
var res = new Hyper.models.HyperResponse( createStub(), {
51+
"charset" = "UTF-8",
52+
"responseheader" = {
53+
"status_code" = "422"
54+
},
55+
"filecontent" = ""
56+
} );
57+
expect( res.isSuccess() ).toBeFalse();
58+
expect( res.isRedirect() ).toBeFalse();
59+
expect( res.isError() ).toBeTrue();
60+
expect( res.isClientError() ).toBeTrue();
61+
expect( res.isServerError() ).toBeFalse();
62+
} );
63+
64+
it( "can tell if a request is a server error", function() {
65+
var res = new Hyper.models.HyperResponse( createStub(), {
66+
"charset" = "UTF-8",
67+
"responseheader" = {
68+
"status_code" = "500"
69+
},
70+
"filecontent" = ""
71+
} );
72+
expect( res.isSuccess() ).toBeFalse();
73+
expect( res.isRedirect() ).toBeFalse();
74+
expect( res.isError() ).toBeTrue();
75+
expect( res.isClientError() ).toBeFalse();
76+
expect( res.isServerError() ).toBeTrue();
77+
} );
78+
} );
1779
} );
1880
}
1981

0 commit comments

Comments
 (0)