1 2 module dquery.tests.validation; 3 4 import dquery.d; 5 6 version(unittest) 7 { 8 struct Entity 9 { 10 } 11 12 struct Id 13 { 14 } 15 16 struct Column 17 { 18 string value; 19 } 20 21 @Entity 22 class User 23 { 24 25 @Id 26 @Column 27 ulong id; 28 29 @Column("user_name") 30 string username; 31 32 @Column 33 string email; 34 35 this() 36 { 37 } 38 39 this(User user) 40 { 41 42 } 43 44 this(string username, string email) 45 { 46 this.username = username; 47 this.email = email; 48 } 49 50 this(ulong id, string username, string email) 51 { 52 this.id = id; 53 this.username = username; 54 this.email = email; 55 } 56 57 string getCleanUsername() 58 { 59 import std..string : toUpper; 60 return username.toUpper; 61 } 62 63 } 64 } 65 66 unittest 67 { 68 auto query = query!User 69 70 .attributes 71 .anyOf!Entity 72 .ensure!"length" 73 .exactly!(1) 74 .parent 75 76 .fields 77 .anyOf!Id 78 .ensure!"length" 79 .exactly!(1) 80 .reset 81 82 .fields 83 .noneOf!Id 84 .anyOf!Column 85 .ensure!"length" 86 .exactly!(2) 87 .reset 88 89 .constructors 90 .parameters!() 91 .ensure!"length" 92 .exactly!(1) 93 .reset 94 95 .constructors 96 .parameters!User 97 .ensure!"length" 98 .exactly!(1) 99 .reset; 100 }