44//! integration tests.
55use std:: collections:: BTreeMap ;
66
7+ use diesel:: pg:: Pg ;
8+ use diesel:: serialize:: { self , Output , ToSql } ;
9+ use diesel:: sql_types:: Text ;
710use serde:: { de, Deserialize , Deserializer , Serialize } ;
811
912use crate :: models:: krate:: MAX_NAME_LENGTH ;
@@ -26,25 +29,6 @@ pub struct PublishMetadata {
2629 pub categories : EncodableCategoryList ,
2730}
2831
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-
4832#[ derive( Serialize , Deserialize , Clone , Debug ) ]
4933pub struct EncodableCrateDependency {
5034 pub optional : bool ,
@@ -58,6 +42,9 @@ pub struct EncodableCrateDependency {
5842 pub registry : Option < String > ,
5943}
6044
45+ #[ derive( PartialEq , Eq , Hash , Serialize , Clone , Debug , Deref ) ]
46+ pub struct EncodableCrateName ( pub String ) ;
47+
6148impl < ' de > Deserialize < ' de > for EncodableCrateName {
6249 fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableCrateName , D :: Error > {
6350 let s = String :: deserialize ( d) ?;
8370 }
8471}
8572
73+ #[ derive( Serialize , Clone , Debug , Deref ) ]
74+ pub struct EncodableDependencyName ( pub String ) ;
75+
8676impl < ' de > Deserialize < ' de > for EncodableDependencyName {
8777 fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableDependencyName , D :: Error > {
8878 let s = String :: deserialize ( d) ?;
@@ -99,6 +89,9 @@ impl<'de> Deserialize<'de> for EncodableDependencyName {
9989 }
10090}
10191
92+ #[ derive( Serialize , Debug , Deref ) ]
93+ pub struct EncodableKeyword ( pub String ) ;
94+
10295impl < ' de > Deserialize < ' de > for EncodableKeyword {
10396 fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableKeyword , D :: Error > {
10497 let s = String :: deserialize ( d) ?;
@@ -115,6 +108,9 @@ impl<'de> Deserialize<'de> for EncodableKeyword {
115108 }
116109}
117110
111+ #[ derive( PartialEq , Eq , PartialOrd , Ord , Hash , Serialize , Clone , Debug , Deref ) ]
112+ pub struct EncodableFeatureName ( pub String ) ;
113+
118114impl < ' de > Deserialize < ' de > for EncodableFeatureName {
119115 fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < Self , D :: Error > {
120116 let s = String :: deserialize ( d) ?;
@@ -129,6 +125,9 @@ impl<'de> Deserialize<'de> for EncodableFeatureName {
129125 }
130126}
131127
128+ #[ derive( Serialize , Clone , Debug , Deref ) ]
129+ pub struct EncodableFeature ( pub String ) ;
130+
132131impl < ' de > Deserialize < ' de > for EncodableFeature {
133132 fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableFeature , D :: Error > {
134133 let s = String :: deserialize ( d) ?;
@@ -142,6 +141,15 @@ impl<'de> Deserialize<'de> for EncodableFeature {
142141 }
143142}
144143
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+
145153impl < ' de > Deserialize < ' de > for EncodableCrateVersion {
146154 fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableCrateVersion , D :: Error > {
147155 let s = String :: deserialize ( d) ?;
@@ -156,6 +164,9 @@ impl<'de> Deserialize<'de> for EncodableCrateVersion {
156164 }
157165}
158166
167+ #[ derive( Serialize , Clone , Debug , Deref ) ]
168+ pub struct EncodableCrateVersionReq ( pub String ) ;
169+
159170impl < ' de > Deserialize < ' de > for EncodableCrateVersionReq {
160171 fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableCrateVersionReq , D :: Error > {
161172 let s = String :: deserialize ( d) ?;
@@ -170,6 +181,9 @@ impl<'de> Deserialize<'de> for EncodableCrateVersionReq {
170181 }
171182}
172183
184+ #[ derive( Serialize , Debug , Deref , Default ) ]
185+ pub struct EncodableKeywordList ( pub Vec < EncodableKeyword > ) ;
186+
173187impl < ' de > Deserialize < ' de > for EncodableKeywordList {
174188 fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableKeywordList , D :: Error > {
175189 let inner = <Vec < EncodableKeyword > as Deserialize < ' de > >:: deserialize ( d) ?;
@@ -181,6 +195,9 @@ impl<'de> Deserialize<'de> for EncodableKeywordList {
181195 }
182196}
183197
198+ #[ derive( Serialize , Debug , Deref , Default ) ]
199+ pub struct EncodableCategoryList ( pub Vec < String > ) ;
200+
184201impl < ' de > Deserialize < ' de > for EncodableCategoryList {
185202 fn deserialize < D : Deserializer < ' de > > ( d : D ) -> Result < EncodableCategoryList , D :: Error > {
186203 let inner = <Vec < String > as Deserialize < ' de > >:: deserialize ( d) ?;
@@ -193,16 +210,6 @@ impl<'de> Deserialize<'de> for EncodableCategoryList {
193210 }
194211}
195212
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-
206213#[ test]
207214fn feature_deserializes_for_valid_features ( ) {
208215 use serde_json as json;
0 commit comments