@@ -5,7 +5,7 @@ use crate::{
5
5
Config , Storage ,
6
6
} ;
7
7
use chrono:: { DateTime , Utc } ;
8
- use iron:: { IronResult , Request , Response } ;
8
+ use iron:: { IronError , IronResult , Request , Response } ;
9
9
use router:: Router ;
10
10
use serde:: Serialize ;
11
11
@@ -35,7 +35,9 @@ pub fn build_details_handler(req: &mut Request) -> IronResult<Response> {
35
35
let router = extension ! ( req, Router ) ;
36
36
let name = cexpect ! ( req, router. find( "name" ) ) ;
37
37
let version = cexpect ! ( req, router. find( "version" ) ) ;
38
- let id: i32 = ctry ! ( req, cexpect!( req, router. find( "id" ) ) . parse( ) ) ;
38
+ let id: i32 = cexpect ! ( req, router. find( "id" ) )
39
+ . parse ( )
40
+ . map_err ( |_| -> IronError { Nope :: BuildNotFound . into ( ) } ) ?;
39
41
40
42
let mut conn = extension ! ( req, Pool ) . get ( ) ?;
41
43
@@ -89,6 +91,7 @@ pub fn build_details_handler(req: &mut Request) -> IronResult<Response> {
89
91
mod tests {
90
92
use crate :: test:: { wrapper, FakeBuild } ;
91
93
use kuchiki:: traits:: TendrilSink ;
94
+ use test_case:: test_case;
92
95
93
96
#[ test]
94
97
fn db_build_logs ( ) {
@@ -185,15 +188,18 @@ mod tests {
185
188
} ) ;
186
189
}
187
190
188
- #[ test]
189
- fn non_existing_build ( ) {
191
+ #[ test_case( "42" ) ]
192
+ #[ test_case( "nan" ) ]
193
+ fn non_existing_build ( build_id : & str ) {
190
194
wrapper ( |env| {
191
195
env. fake_release ( ) . name ( "foo" ) . version ( "0.1.0" ) . create ( ) ?;
192
196
193
- let res = env. frontend ( ) . get ( "/crate/foo/0.1.0/builds/42" ) . send ( ) ?;
197
+ let res = env
198
+ . frontend ( )
199
+ . get ( & format ! ( "/crate/foo/0.1.0/builds/{}" , build_id) )
200
+ . send ( ) ?;
194
201
assert_eq ! ( res. status( ) , 404 ) ;
195
- // TODO: blocked on https://github.com/rust-lang/docs.rs/issues/55
196
- // assert!(res.text()?.contains("no such build"));
202
+ assert ! ( res. text( ) ?. contains( "no such build" ) ) ;
197
203
198
204
Ok ( ( ) )
199
205
} ) ;
0 commit comments