4
4
//! integration tests.
5
5
use std:: collections:: BTreeMap ;
6
6
7
+ use diesel:: pg:: Pg ;
8
+ use diesel:: serialize:: { self , Output , ToSql } ;
9
+ use diesel:: sql_types:: Text ;
7
10
use serde:: { de, Deserialize , Deserializer , Serialize } ;
8
11
9
12
use crate :: models:: krate:: MAX_NAME_LENGTH ;
@@ -26,25 +29,6 @@ pub struct PublishMetadata {
26
29
pub categories : EncodableCategoryList ,
27
30
}
28
31
29
- #[ derive( PartialEq , Eq , Hash , Serialize , Clone , Debug , Deref ) ]
30
- pub struct EncodableCrateName ( pub String ) ;
31
- #[ derive( Serialize , Clone , Debug , Deref ) ]
32
- pub struct EncodableDependencyName ( pub String ) ;
33
- #[ derive( Serialize , Debug , Deref ) ]
34
- pub struct EncodableCrateVersion ( pub semver:: Version ) ;
35
- #[ derive( Serialize , Clone , Debug , Deref ) ]
36
- pub struct EncodableCrateVersionReq ( pub String ) ;
37
- #[ derive( Serialize , Debug , Deref , Default ) ]
38
- pub struct EncodableKeywordList ( pub Vec < EncodableKeyword > ) ;
39
- #[ derive( Serialize , Debug , Deref ) ]
40
- pub struct EncodableKeyword ( pub String ) ;
41
- #[ derive( Serialize , Debug , Deref , Default ) ]
42
- pub struct EncodableCategoryList ( pub Vec < String > ) ;
43
- #[ derive( Serialize , Clone , Debug , Deref ) ]
44
- pub struct EncodableFeature ( pub String ) ;
45
- #[ derive( PartialEq , Eq , PartialOrd , Ord , Hash , Serialize , Clone , Debug , Deref ) ]
46
- pub struct EncodableFeatureName ( pub String ) ;
47
-
48
32
#[ derive( Serialize , Deserialize , Clone , Debug ) ]
49
33
pub struct EncodableCrateDependency {
50
34
pub optional : bool ,
@@ -58,6 +42,9 @@ pub struct EncodableCrateDependency {
58
42
pub registry : Option < String > ,
59
43
}
60
44
45
+ #[ derive( PartialEq , Eq , Hash , Serialize , Clone , Debug , Deref ) ]
46
+ pub struct EncodableCrateName ( pub String ) ;
47
+
61
48
impl < ' de > Deserialize < ' de > for EncodableCrateName {
62
49
fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableCrateName , D :: Error > {
63
50
let s = String :: deserialize ( d) ?;
83
70
}
84
71
}
85
72
73
+ #[ derive( Serialize , Clone , Debug , Deref ) ]
74
+ pub struct EncodableDependencyName ( pub String ) ;
75
+
86
76
impl < ' de > Deserialize < ' de > for EncodableDependencyName {
87
77
fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableDependencyName , D :: Error > {
88
78
let s = String :: deserialize ( d) ?;
@@ -99,6 +89,9 @@ impl<'de> Deserialize<'de> for EncodableDependencyName {
99
89
}
100
90
}
101
91
92
+ #[ derive( Serialize , Debug , Deref ) ]
93
+ pub struct EncodableKeyword ( pub String ) ;
94
+
102
95
impl < ' de > Deserialize < ' de > for EncodableKeyword {
103
96
fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableKeyword , D :: Error > {
104
97
let s = String :: deserialize ( d) ?;
@@ -115,6 +108,9 @@ impl<'de> Deserialize<'de> for EncodableKeyword {
115
108
}
116
109
}
117
110
111
+ #[ derive( PartialEq , Eq , PartialOrd , Ord , Hash , Serialize , Clone , Debug , Deref ) ]
112
+ pub struct EncodableFeatureName ( pub String ) ;
113
+
118
114
impl < ' de > Deserialize < ' de > for EncodableFeatureName {
119
115
fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < Self , D :: Error > {
120
116
let s = String :: deserialize ( d) ?;
@@ -129,6 +125,9 @@ impl<'de> Deserialize<'de> for EncodableFeatureName {
129
125
}
130
126
}
131
127
128
+ #[ derive( Serialize , Clone , Debug , Deref ) ]
129
+ pub struct EncodableFeature ( pub String ) ;
130
+
132
131
impl < ' de > Deserialize < ' de > for EncodableFeature {
133
132
fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableFeature , D :: Error > {
134
133
let s = String :: deserialize ( d) ?;
@@ -142,6 +141,15 @@ impl<'de> Deserialize<'de> for EncodableFeature {
142
141
}
143
142
}
144
143
144
+ impl ToSql < Text , Pg > for EncodableFeature {
145
+ fn to_sql ( & self , out : & mut Output < ' _ , ' _ , Pg > ) -> serialize:: Result {
146
+ ToSql :: < Text , Pg > :: to_sql ( & * * self , & mut out. reborrow ( ) )
147
+ }
148
+ }
149
+
150
+ #[ derive( Serialize , Debug , Deref ) ]
151
+ pub struct EncodableCrateVersion ( pub semver:: Version ) ;
152
+
145
153
impl < ' de > Deserialize < ' de > for EncodableCrateVersion {
146
154
fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableCrateVersion , D :: Error > {
147
155
let s = String :: deserialize ( d) ?;
@@ -156,6 +164,9 @@ impl<'de> Deserialize<'de> for EncodableCrateVersion {
156
164
}
157
165
}
158
166
167
+ #[ derive( Serialize , Clone , Debug , Deref ) ]
168
+ pub struct EncodableCrateVersionReq ( pub String ) ;
169
+
159
170
impl < ' de > Deserialize < ' de > for EncodableCrateVersionReq {
160
171
fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableCrateVersionReq , D :: Error > {
161
172
let s = String :: deserialize ( d) ?;
@@ -170,6 +181,9 @@ impl<'de> Deserialize<'de> for EncodableCrateVersionReq {
170
181
}
171
182
}
172
183
184
+ #[ derive( Serialize , Debug , Deref , Default ) ]
185
+ pub struct EncodableKeywordList ( pub Vec < EncodableKeyword > ) ;
186
+
173
187
impl < ' de > Deserialize < ' de > for EncodableKeywordList {
174
188
fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableKeywordList , D :: Error > {
175
189
let inner = <Vec < EncodableKeyword > as Deserialize < ' de > >:: deserialize ( d) ?;
@@ -181,6 +195,9 @@ impl<'de> Deserialize<'de> for EncodableKeywordList {
181
195
}
182
196
}
183
197
198
+ #[ derive( Serialize , Debug , Deref , Default ) ]
199
+ pub struct EncodableCategoryList ( pub Vec < String > ) ;
200
+
184
201
impl < ' de > Deserialize < ' de > for EncodableCategoryList {
185
202
fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableCategoryList , D :: Error > {
186
203
let inner = <Vec < String > as Deserialize < ' de > >:: deserialize ( d) ?;
@@ -193,16 +210,6 @@ impl<'de> Deserialize<'de> for EncodableCategoryList {
193
210
}
194
211
}
195
212
196
- use diesel:: pg:: Pg ;
197
- use diesel:: serialize:: { self , Output , ToSql } ;
198
- use diesel:: sql_types:: Text ;
199
-
200
- impl ToSql < Text , Pg > for EncodableFeature {
201
- fn to_sql ( & self , out : & mut Output < ' _ , ' _ , Pg > ) -> serialize:: Result {
202
- ToSql :: < Text , Pg > :: to_sql ( & * * self , & mut out. reborrow ( ) )
203
- }
204
- }
205
-
206
213
#[ test]
207
214
fn feature_deserializes_for_valid_features ( ) {
208
215
use serde_json as json;
0 commit comments