1
1
use conduit:: { Handler , Method } ;
2
2
use conduit_test:: MockRequest ;
3
3
4
- use cargo_registry:: db:: RequestTransaction ;
5
4
use cargo_registry:: category:: { Category , EncodableCategory , EncodableCategoryWithSubcategories } ;
6
5
7
6
#[ derive( RustcDecodable ) ]
@@ -25,7 +24,7 @@ struct CategoryWithSubcategories {
25
24
#[ test]
26
25
fn index ( ) {
27
26
let ( _b, app, middle) = :: app ( ) ;
28
- let mut req = :: req ( app, Method :: Get , "/api/v1/categories" ) ;
27
+ let mut req = :: req ( app. clone ( ) , Method :: Get , "/api/v1/categories" ) ;
29
28
30
29
// List 0 categories if none exist
31
30
let mut response = ok_resp ! ( middle. call( & mut req) ) ;
@@ -34,9 +33,11 @@ fn index() {
34
33
assert_eq ! ( json. meta. total, 0 ) ;
35
34
36
35
// Create a category and a subcategory
37
- :: mock_category ( & mut req, "foo" , "foo" ) ;
38
- :: mock_category ( & mut req, "foo::bar" , "foo::bar" ) ;
39
-
36
+ {
37
+ let conn = t ! ( app. diesel_database. get( ) ) ;
38
+ :: new_category ( "foo" , "foo" ) . create_or_update ( & conn) . unwrap ( ) ;
39
+ :: new_category ( "foo::bar" , "foo::bar" ) . create_or_update ( & conn) . unwrap ( ) ;
40
+ }
40
41
let mut response = ok_resp ! ( middle. call( & mut req) ) ;
41
42
let json: CategoryList = :: json ( & mut response) ;
42
43
@@ -51,13 +52,18 @@ fn show() {
51
52
let ( _b, app, middle) = :: app ( ) ;
52
53
53
54
// Return not found if a category doesn't exist
54
- let mut req = :: req ( app, Method :: Get , "/api/v1/categories/foo-bar" ) ;
55
+ let mut req = :: req ( app. clone ( ) , Method :: Get , "/api/v1/categories/foo-bar" ) ;
55
56
let response = t_resp ! ( middle. call( & mut req) ) ;
56
57
assert_eq ! ( response. status. 0 , 404 ) ;
57
58
58
59
// Create a category and a subcategory
59
- :: mock_category ( & mut req, "Foo Bar" , "foo-bar" ) ;
60
- :: mock_category ( & mut req, "Foo Bar::Baz" , "foo-bar::baz" ) ;
60
+ {
61
+ let conn = t ! ( app. diesel_database. get( ) ) ;
62
+
63
+ // Create a category and a subcategory
64
+ t ! ( :: new_category( "Foo Bar" , "foo-bar" ) . create_or_update( & conn) ) ;
65
+ t ! ( :: new_category( "Foo Bar::Baz" , "foo-bar::baz" ) . create_or_update( & conn) ) ;
66
+ }
61
67
62
68
// The category and its subcategories should be in the json
63
69
let mut response = ok_resp ! ( middle. call( & mut req) ) ;
@@ -71,57 +77,82 @@ fn show() {
71
77
#[ test]
72
78
fn update_crate ( ) {
73
79
let ( _b, app, middle) = :: app ( ) ;
74
- let mut req = :: req ( app, Method :: Get , "/api/v1/categories/foo" ) ;
80
+ let mut req = :: req ( app. clone ( ) , Method :: Get , "/api/v1/categories/foo" ) ;
75
81
let cnt = |req : & mut MockRequest , cat : & str | {
76
82
req. with_path ( & format ! ( "/api/v1/categories/{}" , cat) ) ;
77
83
let mut response = ok_resp ! ( middle. call( req) ) ;
78
84
:: json :: < GoodCategory > ( & mut response) . category . crates_cnt as usize
79
85
} ;
80
- :: mock_user ( & mut req, :: user ( "foo" ) ) ;
81
- let ( krate, _) = :: mock_crate ( & mut req, :: krate ( "foocat" ) ) ;
82
- :: mock_category ( & mut req, "cat1" , "cat1" ) ;
83
- :: mock_category ( & mut req, "Category 2" , "category-2" ) ;
86
+
87
+ let krate = {
88
+ let conn = t ! ( app. diesel_database. get( ) ) ;
89
+ let user = t ! ( :: new_user( "foo" ) . create_or_update( & conn) ) ;
90
+ t ! ( :: new_category( "cat1" , "cat1" ) . create_or_update( & conn) ) ;
91
+ t ! ( :: new_category( "Category 2" , "category-2" ) . create_or_update( & conn) ) ;
92
+ t ! ( :: new_crate( "foo_crate" ) . create_or_update( & conn, None , user. id) )
93
+ } ;
84
94
85
95
// Updating with no categories has no effect
86
- Category :: update_crate_old ( req. tx ( ) . unwrap ( ) , & krate, & [ ] ) . unwrap ( ) ;
96
+ {
97
+ let conn = t ! ( app. diesel_database. get( ) ) ;
98
+ Category :: update_crate ( & conn, & krate, & [ ] ) . unwrap ( ) ;
99
+ }
87
100
assert_eq ! ( cnt( & mut req, "cat1" ) , 0 ) ;
88
101
assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
89
102
90
103
// Happy path adding one category
91
- Category :: update_crate_old ( req. tx ( ) . unwrap ( ) , & krate, & [ "cat1" . to_string ( ) ] ) . unwrap ( ) ;
104
+ {
105
+ let conn = t ! ( app. diesel_database. get( ) ) ;
106
+ Category :: update_crate ( & conn, & krate, & [ "cat1" ] ) . unwrap ( ) ;
107
+ }
92
108
assert_eq ! ( cnt( & mut req, "cat1" ) , 1 ) ;
93
109
assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
94
110
95
111
// Replacing one category with another
96
- Category :: update_crate_old ( req. tx ( ) . unwrap ( ) , & krate, & [ "category-2" . to_string ( ) ] ) . unwrap ( ) ;
112
+ {
113
+ let conn = t ! ( app. diesel_database. get( ) ) ;
114
+ Category :: update_crate ( & conn, & krate, & [ "category-2" ] ) . unwrap ( ) ;
115
+ }
97
116
assert_eq ! ( cnt( & mut req, "cat1" ) , 0 ) ;
98
117
assert_eq ! ( cnt( & mut req, "category-2" ) , 1 ) ;
99
118
100
119
// Removing one category
101
- Category :: update_crate_old ( req. tx ( ) . unwrap ( ) , & krate, & [ ] ) . unwrap ( ) ;
120
+ {
121
+ let conn = t ! ( app. diesel_database. get( ) ) ;
122
+ Category :: update_crate ( & conn, & krate, & [ ] ) . unwrap ( ) ;
123
+ }
102
124
assert_eq ! ( cnt( & mut req, "cat1" ) , 0 ) ;
103
125
assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
104
126
105
127
// Adding 2 categories
106
- Category :: update_crate_old (
107
- req. tx ( ) . unwrap ( ) ,
108
- & krate,
109
- & [ "cat1" . to_string ( ) , "category-2" . to_string ( ) ] ,
110
- ) . unwrap ( ) ;
128
+ {
129
+ let conn = t ! ( app. diesel_database. get( ) ) ;
130
+ Category :: update_crate (
131
+ & conn,
132
+ & krate,
133
+ & [ "cat1" , "category-2" ] ,
134
+ ) . unwrap ( ) ;
135
+ }
111
136
assert_eq ! ( cnt( & mut req, "cat1" ) , 1 ) ;
112
137
assert_eq ! ( cnt( & mut req, "category-2" ) , 1 ) ;
113
138
114
139
// Removing all categories
115
- Category :: update_crate_old ( req. tx ( ) . unwrap ( ) , & krate, & [ ] ) . unwrap ( ) ;
140
+ {
141
+ let conn = t ! ( app. diesel_database. get( ) ) ;
142
+ Category :: update_crate ( & conn, & krate, & [ ] ) . unwrap ( ) ;
143
+ }
116
144
assert_eq ! ( cnt( & mut req, "cat1" ) , 0 ) ;
117
145
assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
118
146
119
147
// Attempting to add one valid category and one invalid category
120
- let invalid_categories = Category :: update_crate_old (
121
- req. tx ( ) . unwrap ( ) ,
122
- & krate,
123
- & [ "cat1" . to_string ( ) , "catnope" . to_string ( ) ] ,
124
- ) . unwrap ( ) ;
148
+ let invalid_categories = {
149
+ let conn = t ! ( app. diesel_database. get( ) ) ;
150
+ Category :: update_crate (
151
+ & conn,
152
+ & krate,
153
+ & [ "cat1" , "catnope" ] ,
154
+ ) . unwrap ( )
155
+ } ;
125
156
assert_eq ! ( invalid_categories, vec![ "catnope" . to_string( ) ] ) ;
126
157
assert_eq ! ( cnt( & mut req, "cat1" ) , 1 ) ;
127
158
assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
@@ -135,17 +166,23 @@ fn update_crate() {
135
166
assert_eq ! ( json. meta. total, 2 ) ;
136
167
137
168
// Attempting to add a category by display text; must use slug
138
- Category :: update_crate_old ( req. tx ( ) . unwrap ( ) , & krate, & [ "Category 2" . to_string ( ) ] ) . unwrap ( ) ;
169
+ {
170
+ let conn = t ! ( app. diesel_database. get( ) ) ;
171
+ Category :: update_crate ( & conn, & krate, & [ "Category 2" ] ) . unwrap ( ) ;
172
+ }
139
173
assert_eq ! ( cnt( & mut req, "cat1" ) , 0 ) ;
140
174
assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
141
175
142
176
// Add a category and its subcategory
143
- :: mock_category ( & mut req, "cat1::bar" , "cat1::bar" ) ;
144
- Category :: update_crate_old (
145
- req. tx ( ) . unwrap ( ) ,
146
- & krate,
147
- & [ "cat1" . to_string ( ) , "cat1::bar" . to_string ( ) ] ,
148
- ) . unwrap ( ) ;
177
+ {
178
+ let conn = t ! ( app. diesel_database. get( ) ) ;
179
+ t ! ( :: new_category( "cat1::bar" , "cat1::bar" ) . create_or_update( & conn) ) ;
180
+ Category :: update_crate (
181
+ & conn,
182
+ & krate,
183
+ & [ "cat1" , "cat1::bar" ] ,
184
+ ) . unwrap ( ) ;
185
+ }
149
186
assert_eq ! ( cnt( & mut req, "cat1" ) , 1 ) ;
150
187
assert_eq ! ( cnt( & mut req, "cat1::bar" ) , 1 ) ;
151
188
assert_eq ! ( cnt( & mut req, "category-2" ) , 0 ) ;
0 commit comments