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 }