1
1
use conduit:: { Handler , Method } ;
2
- use conduit_test:: MockRequest ;
3
2
4
3
use cargo_registry:: category:: { Category , EncodableCategory , EncodableCategoryWithSubcategories } ;
5
4
@@ -42,6 +41,7 @@ fn index() {
42
41
. create_or_update ( & conn)
43
42
. unwrap ( ) ;
44
43
}
44
+
45
45
let mut response = ok_resp ! ( middle. call( & mut req) ) ;
46
46
let json: CategoryList = :: json ( & mut response) ;
47
47
@@ -64,7 +64,6 @@ fn show() {
64
64
{
65
65
let conn = t ! ( app. diesel_database. get( ) ) ;
66
66
67
- // Create a category and a subcategory
68
67
t ! ( :: new_category( "Foo Bar" , "foo-bar" ) . create_or_update( & conn) ) ;
69
68
t ! ( :: new_category( "Foo Bar::Baz" , "foo-bar::baz" ) . create_or_update( & conn) ) ;
70
69
}
@@ -82,11 +81,13 @@ fn show() {
82
81
fn update_crate ( ) {
83
82
let ( _b, app, middle) = :: app ( ) ;
84
83
let mut req = :: req ( app. clone ( ) , Method :: Get , "/api/v1/categories/foo" ) ;
85
- let cnt = |req : & mut MockRequest , cat : & str | {
86
- req. with_path ( & format ! ( "/api/v1/categories/{}" , cat) ) ;
87
- let mut response = ok_resp ! ( middle. call( req) ) ;
88
- :: json :: < GoodCategory > ( & mut response) . category . crates_cnt as usize
89
- } ;
84
+ macro_rules! cnt {
85
+ ( $req: expr, $cat: expr) => { {
86
+ $req. with_path( & format!( "/api/v1/categories/{}" , $cat) ) ;
87
+ let mut response = ok_resp!( middle. call( $req) ) ;
88
+ :: json:: <GoodCategory >( & mut response) . category. crates_cnt as usize
89
+ } }
90
+ }
90
91
91
92
let krate = {
92
93
let conn = t ! ( app. diesel_database. get( ) ) ;
@@ -97,61 +98,48 @@ fn update_crate() {
97
98
} ;
98
99
99
100
// Updating with no categories has no effect
100
- {
101
- let conn = t ! ( app. diesel_database. get( ) ) ;
102
- Category :: update_crate ( & conn, & krate, & [ ] ) . unwrap ( ) ;
103
- }
104
- assert_eq ! ( cnt( & mut req, "cat1" ) , 0 ) ;
105
- assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
101
+ Category :: update_crate ( & app. diesel_database . get ( ) . unwrap ( ) , & krate, & [ ] ) . unwrap ( ) ;
102
+ assert_eq ! ( cnt!( & mut req, "cat1" ) , 0 ) ;
103
+ assert_eq ! ( cnt!( & mut req, "category-2" ) , 0 ) ;
106
104
107
105
// Happy path adding one category
108
- {
109
- let conn = t ! ( app. diesel_database. get( ) ) ;
110
- Category :: update_crate ( & conn, & krate, & [ "cat1" ] ) . unwrap ( ) ;
111
- }
112
- assert_eq ! ( cnt( & mut req, "cat1" ) , 1 ) ;
113
- assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
106
+ Category :: update_crate ( & app. diesel_database . get ( ) . unwrap ( ) , & krate, & [ "cat1" ] ) . unwrap ( ) ;
107
+ assert_eq ! ( cnt!( & mut req, "cat1" ) , 1 ) ;
108
+ assert_eq ! ( cnt!( & mut req, "category-2" ) , 0 ) ;
114
109
115
110
// Replacing one category with another
116
- {
117
- let conn = t ! ( app. diesel_database. get( ) ) ;
118
- Category :: update_crate ( & conn, & krate, & [ "category-2" ] ) . unwrap ( ) ;
119
- }
120
- assert_eq ! ( cnt( & mut req, "cat1" ) , 0 ) ;
121
- assert_eq ! ( cnt( & mut req, "category-2" ) , 1 ) ;
111
+ Category :: update_crate ( & app. diesel_database . get ( ) . unwrap ( ) , & krate, & [ "category-2" ] ) . unwrap ( ) ;
112
+ assert_eq ! ( cnt!( & mut req, "cat1" ) , 0 ) ;
113
+ assert_eq ! ( cnt!( & mut req, "category-2" ) , 1 ) ;
122
114
123
115
// Removing one category
124
- {
125
- let conn = t ! ( app. diesel_database. get( ) ) ;
126
- Category :: update_crate ( & conn, & krate, & [ ] ) . unwrap ( ) ;
127
- }
128
- assert_eq ! ( cnt( & mut req, "cat1" ) , 0 ) ;
129
- assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
116
+ Category :: update_crate ( & app. diesel_database . get ( ) . unwrap ( ) , & krate, & [ ] ) . unwrap ( ) ;
117
+ assert_eq ! ( cnt!( & mut req, "cat1" ) , 0 ) ;
118
+ assert_eq ! ( cnt!( & mut req, "category-2" ) , 0 ) ;
130
119
131
120
// Adding 2 categories
132
- {
133
- let conn = t ! ( app. diesel_database. get( ) ) ;
134
- Category :: update_crate ( & conn, & krate, & [ "cat1" , "category-2" ] ) . unwrap ( ) ;
135
- }
136
- assert_eq ! ( cnt( & mut req, "cat1" ) , 1 ) ;
137
- assert_eq ! ( cnt( & mut req, "category-2" ) , 1 ) ;
121
+ Category :: update_crate (
122
+ & app. diesel_database . get ( ) . unwrap ( ) ,
123
+ & krate,
124
+ & [ "cat1" , "category-2" ] ,
125
+ ) . unwrap ( ) ;
126
+ assert_eq ! ( cnt!( & mut req, "cat1" ) , 1 ) ;
127
+ assert_eq ! ( cnt!( & mut req, "category-2" ) , 1 ) ;
138
128
139
129
// Removing all categories
140
- {
141
- let conn = t ! ( app. diesel_database. get( ) ) ;
142
- Category :: update_crate ( & conn, & krate, & [ ] ) . unwrap ( ) ;
143
- }
144
- assert_eq ! ( cnt( & mut req, "cat1" ) , 0 ) ;
145
- assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
130
+ Category :: update_crate ( & app. diesel_database . get ( ) . unwrap ( ) , & krate, & [ ] ) . unwrap ( ) ;
131
+ assert_eq ! ( cnt!( & mut req, "cat1" ) , 0 ) ;
132
+ assert_eq ! ( cnt!( & mut req, "category-2" ) , 0 ) ;
146
133
147
134
// Attempting to add one valid category and one invalid category
148
- let invalid_categories = {
149
- let conn = t ! ( app. diesel_database. get( ) ) ;
150
- Category :: update_crate ( & conn, & krate, & [ "cat1" , "catnope" ] ) . unwrap ( )
151
- } ;
152
- assert_eq ! ( invalid_categories, vec![ "catnope" . to_string( ) ] ) ;
153
- assert_eq ! ( cnt( & mut req, "cat1" ) , 1 ) ;
154
- assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
135
+ let invalid_categories = Category :: update_crate (
136
+ & app. diesel_database . get ( ) . unwrap ( ) ,
137
+ & krate,
138
+ & [ "cat1" , "catnope" ] ,
139
+ ) . unwrap ( ) ;
140
+ assert_eq ! ( invalid_categories, vec![ "catnope" ] ) ;
141
+ assert_eq ! ( cnt!( & mut req, "cat1" ) , 1 ) ;
142
+ assert_eq ! ( cnt!( & mut req, "category-2" ) , 0 ) ;
155
143
156
144
// Does not add the invalid category to the category list
157
145
// (unlike the behavior of keywords)
@@ -162,12 +150,9 @@ fn update_crate() {
162
150
assert_eq ! ( json. meta. total, 2 ) ;
163
151
164
152
// Attempting to add a category by display text; must use slug
165
- {
166
- let conn = t ! ( app. diesel_database. get( ) ) ;
167
- Category :: update_crate ( & conn, & krate, & [ "Category 2" ] ) . unwrap ( ) ;
168
- }
169
- assert_eq ! ( cnt( & mut req, "cat1" ) , 0 ) ;
170
- assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
153
+ Category :: update_crate ( & app. diesel_database . get ( ) . unwrap ( ) , & krate, & [ "Category 2" ] ) . unwrap ( ) ;
154
+ assert_eq ! ( cnt!( & mut req, "cat1" ) , 0 ) ;
155
+ assert_eq ! ( cnt!( & mut req, "category-2" ) , 0 ) ;
171
156
172
157
// Add a category and its subcategory
173
158
{
@@ -177,7 +162,7 @@ fn update_crate() {
177
162
) ) ;
178
163
Category :: update_crate ( & conn, & krate, & [ "cat1" , "cat1::bar" ] ) . unwrap ( ) ;
179
164
}
180
- assert_eq ! ( cnt( & mut req, "cat1" ) , 1 ) ;
181
- assert_eq ! ( cnt( & mut req, "cat1::bar" ) , 1 ) ;
182
- assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
165
+ assert_eq ! ( cnt! ( & mut req, "cat1" ) , 1 ) ;
166
+ assert_eq ! ( cnt! ( & mut req, "cat1::bar" ) , 1 ) ;
167
+ assert_eq ! ( cnt! ( & mut req, "category-2" ) , 0 ) ;
183
168
}
0 commit comments