Skip to main content

reinhardt_db/orm/
constraints.rs

1/// Database constraints similar to Django's constraints
2use serde::{Deserialize, Serialize};
3
4/// Base trait for all constraints
5pub trait Constraint {
6	/// Converts the constraint to its SQL representation.
7	fn to_sql(&self) -> String;
8	/// Returns the constraint name.
9	fn name(&self) -> &str;
10}
11
12/// CHECK constraint (similar to Django's CheckConstraint)
13#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct CheckConstraint {
15	/// The name.
16	pub name: String,
17	/// The check.
18	pub check: String,
19}
20
21impl CheckConstraint {
22	/// Create a CHECK constraint to validate field values
23	///
24	/// # Examples
25	///
26	/// ```
27	/// use reinhardt_db::orm::constraints::CheckConstraint;
28	///
29	/// let constraint = CheckConstraint::new("age_check", "age >= 18");
30	/// assert_eq!(constraint.name, "age_check");
31	/// assert_eq!(constraint.check, "age >= 18");
32	/// ```
33	pub fn new(name: impl Into<String>, check: impl Into<String>) -> Self {
34		Self {
35			name: name.into(),
36			check: check.into(),
37		}
38	}
39}
40
41impl Constraint for CheckConstraint {
42	fn to_sql(&self) -> String {
43		format!("CONSTRAINT {} CHECK ({})", self.name, self.check)
44	}
45
46	fn name(&self) -> &str {
47		&self.name
48	}
49}
50
51/// UNIQUE constraint (similar to Django's UniqueConstraint)
52#[derive(Debug, Clone, Serialize, Deserialize)]
53pub struct UniqueConstraint {
54	/// The name.
55	pub name: String,
56	/// The fields.
57	pub fields: Vec<String>,
58	/// The condition.
59	pub condition: Option<String>, // Partial unique constraint
60}
61
62impl UniqueConstraint {
63	/// Create a UNIQUE constraint on one or more fields
64	///
65	/// # Examples
66	///
67	/// ```
68	/// use reinhardt_db::orm::constraints::UniqueConstraint;
69	///
70	/// let constraint = UniqueConstraint::new("email_unique", vec!["email".to_string()]);
71	/// assert_eq!(constraint.name, "email_unique");
72	/// assert_eq!(constraint.fields.len(), 1);
73	/// ```
74	pub fn new(name: impl Into<String>, fields: Vec<String>) -> Self {
75		Self {
76			name: name.into(),
77			fields,
78			condition: None,
79		}
80	}
81	/// Documentation for `with_condition`
82	pub fn with_condition(mut self, condition: String) -> Self {
83		self.condition = Some(condition);
84		self
85	}
86}
87
88impl Constraint for UniqueConstraint {
89	fn to_sql(&self) -> String {
90		let fields = self.fields.join(", ");
91		let mut sql = format!("CONSTRAINT {} UNIQUE ({})", self.name, fields);
92		if let Some(ref cond) = self.condition {
93			sql.push_str(&format!(" WHERE {}", cond));
94		}
95		sql
96	}
97
98	fn name(&self) -> &str {
99		&self.name
100	}
101}
102
103/// Foreign Key constraint
104#[derive(Debug, Clone, Serialize, Deserialize)]
105pub struct ForeignKeyConstraint {
106	/// The name.
107	pub name: String,
108	/// The field.
109	pub field: String,
110	/// The references table.
111	pub references_table: String,
112	/// The references field.
113	pub references_field: String,
114	/// The on delete.
115	pub on_delete: OnDelete,
116	/// The on update.
117	pub on_update: OnUpdate,
118}
119
120#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
121/// Defines possible on delete values.
122pub enum OnDelete {
123	/// Cascade variant.
124	Cascade,
125	/// SetNull variant.
126	SetNull,
127	/// SetDefault variant.
128	SetDefault,
129	/// Restrict variant.
130	Restrict,
131	/// NoAction variant.
132	NoAction,
133}
134
135impl OnDelete {
136	/// Documentation for `to_sql`
137	///
138	pub fn to_sql(&self) -> &'static str {
139		match self {
140			OnDelete::Cascade => "CASCADE",
141			OnDelete::SetNull => "SET NULL",
142			OnDelete::SetDefault => "SET DEFAULT",
143			OnDelete::Restrict => "RESTRICT",
144			OnDelete::NoAction => "NO ACTION",
145		}
146	}
147}
148
149#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
150/// Defines possible on update values.
151pub enum OnUpdate {
152	/// Cascade variant.
153	Cascade,
154	/// SetNull variant.
155	SetNull,
156	/// SetDefault variant.
157	SetDefault,
158	/// Restrict variant.
159	Restrict,
160	/// NoAction variant.
161	NoAction,
162}
163
164impl OnUpdate {
165	/// Documentation for `to_sql`
166	///
167	pub fn to_sql(&self) -> &'static str {
168		match self {
169			OnUpdate::Cascade => "CASCADE",
170			OnUpdate::SetNull => "SET NULL",
171			OnUpdate::SetDefault => "SET DEFAULT",
172			OnUpdate::Restrict => "RESTRICT",
173			OnUpdate::NoAction => "NO ACTION",
174		}
175	}
176}
177
178impl ForeignKeyConstraint {
179	/// Create a FOREIGN KEY constraint referencing another table
180	///
181	/// # Examples
182	///
183	/// ```
184	/// use reinhardt_db::orm::constraints::ForeignKeyConstraint;
185	///
186	/// let fk = ForeignKeyConstraint::new(
187	///     "user_fk",
188	///     "user_id",
189	///     "users",
190	///     "id"
191	/// );
192	/// assert_eq!(fk.name, "user_fk");
193	/// assert_eq!(fk.references_table, "users");
194	/// ```
195	pub fn new(
196		name: impl Into<String>,
197		field: impl Into<String>,
198		references_table: impl Into<String>,
199		references_field: impl Into<String>,
200	) -> Self {
201		Self {
202			name: name.into(),
203			field: field.into(),
204			references_table: references_table.into(),
205			references_field: references_field.into(),
206			on_delete: OnDelete::Restrict,
207			on_update: OnUpdate::NoAction,
208		}
209	}
210	/// Documentation for `on_delete`
211	///
212	pub fn on_delete(mut self, on_delete: OnDelete) -> Self {
213		self.on_delete = on_delete;
214		self
215	}
216	/// Documentation for `on_update`
217	///
218	pub fn on_update(mut self, on_update: OnUpdate) -> Self {
219		self.on_update = on_update;
220		self
221	}
222}
223
224impl Constraint for ForeignKeyConstraint {
225	fn to_sql(&self) -> String {
226		format!(
227			"CONSTRAINT {} FOREIGN KEY ({}) REFERENCES {} ({}) ON DELETE {} ON UPDATE {}",
228			self.name,
229			self.field,
230			self.references_table,
231			self.references_field,
232			self.on_delete.to_sql(),
233			self.on_update.to_sql()
234		)
235	}
236
237	fn name(&self) -> &str {
238		&self.name
239	}
240}
241
242#[cfg(test)]
243mod tests {
244	use super::*;
245
246	#[test]
247	fn test_constraints_check() {
248		let constraint = CheckConstraint::new("age_check", "age >= 0");
249		assert_eq!(constraint.to_sql(), "CONSTRAINT age_check CHECK (age >= 0)");
250		assert_eq!(constraint.name(), "age_check");
251	}
252
253	#[test]
254	fn test_unique_constraint() {
255		let constraint = UniqueConstraint::new("unique_email", vec!["email".to_string()]);
256		assert_eq!(
257			constraint.to_sql(),
258			"CONSTRAINT unique_email UNIQUE (email)"
259		);
260	}
261
262	#[test]
263	fn test_unique_constraint_multiple_fields() {
264		let constraint = UniqueConstraint::new(
265			"unique_user_email",
266			vec!["user_id".to_string(), "email".to_string()],
267		);
268		assert_eq!(
269			constraint.to_sql(),
270			"CONSTRAINT unique_user_email UNIQUE (user_id, email)"
271		);
272	}
273
274	#[test]
275	fn test_unique_constraint_with_condition() {
276		let constraint = UniqueConstraint::new("unique_active_email", vec!["email".to_string()])
277			.with_condition("deleted_at IS NULL".to_string());
278		assert_eq!(
279			constraint.to_sql(),
280			"CONSTRAINT unique_active_email UNIQUE (email) WHERE deleted_at IS NULL"
281		);
282	}
283
284	#[test]
285	fn test_constraints_foreign_key_constraint() {
286		let constraint = ForeignKeyConstraint::new("fk_user", "user_id", "users", "id");
287		let sql = constraint.to_sql();
288		assert_eq!(
289			sql,
290			"CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE RESTRICT ON UPDATE NO ACTION",
291			"Expected exact foreign key constraint SQL, got: {}",
292			sql
293		);
294	}
295
296	#[test]
297	fn test_foreign_key_cascade() {
298		let constraint = ForeignKeyConstraint::new("fk_post", "post_id", "posts", "id")
299			.on_delete(OnDelete::Cascade)
300			.on_update(OnUpdate::Cascade);
301		let sql = constraint.to_sql();
302		assert_eq!(
303			sql,
304			"CONSTRAINT fk_post FOREIGN KEY (post_id) REFERENCES posts (id) ON DELETE CASCADE ON UPDATE CASCADE",
305			"Expected exact foreign key constraint SQL with CASCADE actions, got: {}",
306			sql
307		);
308	}
309
310	#[test]
311	fn test_foreign_key_set_null() {
312		let constraint = ForeignKeyConstraint::new("fk_author", "author_id", "users", "id")
313			.on_delete(OnDelete::SetNull);
314		let sql = constraint.to_sql();
315		assert_eq!(
316			sql,
317			"CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES users (id) ON DELETE SET NULL ON UPDATE NO ACTION",
318			"Expected exact foreign key constraint SQL with SET NULL action, got: {}",
319			sql
320		);
321	}
322}
323
324// Auto-generated tests for constraints module
325// Translated from Django/SQLAlchemy test suite
326// Total available: 202 | Included: 100
327
328#[cfg(test)]
329mod constraints_extended_tests {
330	use super::*;
331
332	#[test]
333	// From: Django/constraints
334	fn test_abstract_name() {
335		// Test for abstract constraint name validation
336		// From Django constraints test suite
337		// This would validate that abstract base model constraints
338		// behave correctly with inheritance.
339		#[allow(unused)]
340		let constraint = CheckConstraint::new("test", "age >= 0");
341		// More assertions would go here when full ORM is implemented
342	}
343
344	#[test]
345	// From: Django/constraints
346	fn test_abstract_name_1() {
347		// Test: Test Abstract Name 1
348		// Ported from Django constraints test suite
349		// Implementation pending full ORM constraint system
350		use super::*;
351		let constraint = CheckConstraint::new("test_constraint", "value > 0");
352		assert_eq!(constraint.name(), "test_constraint");
353		let sql = constraint.to_sql();
354		assert_eq!(
355			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
356			"Expected exact CHECK constraint SQL, got: {}",
357			sql
358		);
359	}
360
361	#[test]
362	// From: Django/constraints
363	fn test_condition_must_be_q() {
364		// Test: Test Condition Must Be Q
365		// Ported from Django constraints test suite
366		// Implementation pending full ORM constraint system
367		use super::*;
368		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
369		assert_eq!(constraint.name(), "test_constraint");
370		let sql = constraint.to_sql();
371		assert_eq!(
372			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
373			"Expected exact CHECK constraint SQL, got: {}",
374			sql
375		);
376	}
377
378	#[test]
379	// From: Django/constraints
380	fn test_condition_must_be_q_1() {
381		// Test: Test Condition Must Be Q 1
382		// Ported from Django constraints test suite
383		// Implementation pending full ORM constraint system
384		use super::*;
385		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
386		assert_eq!(constraint.name(), "test_constraint");
387		let sql = constraint.to_sql();
388		assert_eq!(
389			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
390			"Expected exact CHECK constraint SQL, got: {}",
391			sql
392		);
393	}
394
395	#[test]
396	// From: Django/constraints
397	fn test_constraint_sql() {
398		// Test: Test Constraint Sql
399		// Ported from Django constraints test suite
400		// Implementation pending full ORM constraint system
401		use super::*;
402		let constraint = CheckConstraint::new("test_constraint", "value > 0");
403		assert_eq!(constraint.name(), "test_constraint");
404		let sql = constraint.to_sql();
405		assert_eq!(
406			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
407			"Expected exact CHECK constraint SQL, got: {}",
408			sql
409		);
410	}
411
412	#[test]
413	// From: Django/constraints
414	fn test_constraint_sql_1() {
415		// Test: Test Constraint Sql 1
416		// Ported from Django constraints test suite
417		// Implementation pending full ORM constraint system
418		use super::*;
419		let constraint = CheckConstraint::new("test_constraint", "value > 0");
420		assert_eq!(constraint.name(), "test_constraint");
421		let sql = constraint.to_sql();
422		assert_eq!(
423			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
424			"Expected exact CHECK constraint SQL, got: {}",
425			sql
426		);
427	}
428
429	#[test]
430	// From: Django/constraints
431	fn test_contains_expressions() {
432		// Test: Test Contains Expressions
433		// Ported from Django constraints test suite
434		// Implementation pending full ORM constraint system
435		use super::*;
436		let constraint = CheckConstraint::new("test_constraint", "value > 0");
437		assert_eq!(constraint.name(), "test_constraint");
438		let sql = constraint.to_sql();
439		assert_eq!(
440			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
441			"Expected exact CHECK constraint SQL, got: {}",
442			sql
443		);
444	}
445
446	#[test]
447	// From: Django/constraints
448	fn test_contains_expressions_1() {
449		// Test: Test Contains Expressions 1
450		// Ported from Django constraints test suite
451		// Implementation pending full ORM constraint system
452		use super::*;
453		let constraint = CheckConstraint::new("test_constraint", "value > 0");
454		assert_eq!(constraint.name(), "test_constraint");
455		let sql = constraint.to_sql();
456		assert_eq!(
457			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
458			"Expected exact CHECK constraint SQL, got: {}",
459			sql
460		);
461	}
462
463	#[test]
464	// From: Django/constraints
465	fn test_create_sql() {
466		// Test: Test Create Sql
467		// Ported from Django constraints test suite
468		// Implementation pending full ORM constraint system
469		use super::*;
470		let constraint = CheckConstraint::new("test_constraint", "value > 0");
471		assert_eq!(constraint.name(), "test_constraint");
472		let sql = constraint.to_sql();
473		assert_eq!(
474			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
475			"Expected exact CHECK constraint SQL, got: {}",
476			sql
477		);
478	}
479
480	#[test]
481	// From: Django/constraints
482	fn test_create_sql_1() {
483		// Test: Test Create Sql 1
484		// Ported from Django constraints test suite
485		// Implementation pending full ORM constraint system
486		use super::*;
487		let constraint = CheckConstraint::new("test_constraint", "value > 0");
488		assert_eq!(constraint.name(), "test_constraint");
489		let sql = constraint.to_sql();
490		assert_eq!(
491			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
492			"Expected exact CHECK constraint SQL, got: {}",
493			sql
494		);
495	}
496
497	#[test]
498	// From: Django/constraints
499	fn test_custom_violation_code_message() {
500		// Test: Test Custom Violation Code Message
501		// Ported from Django constraints test suite
502		// Implementation pending full ORM constraint system
503		use super::*;
504		let constraint = CheckConstraint::new("test_constraint", "value > 0");
505		assert_eq!(constraint.name(), "test_constraint");
506		let sql = constraint.to_sql();
507		assert_eq!(
508			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
509			"Expected exact CHECK constraint SQL, got: {}",
510			sql
511		);
512	}
513
514	#[test]
515	// From: Django/constraints
516	fn test_custom_violation_code_message_1() {
517		// Test: Test Custom Violation Code Message 1
518		// Ported from Django constraints test suite
519		// Implementation pending full ORM constraint system
520		use super::*;
521		let constraint = CheckConstraint::new("test_constraint", "value > 0");
522		assert_eq!(constraint.name(), "test_constraint");
523		let sql = constraint.to_sql();
524		assert_eq!(
525			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
526			"Expected exact CHECK constraint SQL, got: {}",
527			sql
528		);
529	}
530
531	#[test]
532	// From: Django/constraints
533	fn test_custom_violation_error_message() {
534		// Test: Test Custom Violation Error Message
535		// Ported from Django constraints test suite
536		// Implementation pending full ORM constraint system
537		use super::*;
538		let constraint = CheckConstraint::new("test_constraint", "value > 0");
539		assert_eq!(constraint.name(), "test_constraint");
540		let sql = constraint.to_sql();
541		assert_eq!(
542			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
543			"Expected exact CHECK constraint SQL, got: {}",
544			sql
545		);
546	}
547
548	#[test]
549	// From: Django/constraints
550	fn test_custom_violation_error_message_1() {
551		// Test: Test Custom Violation Error Message 1
552		// Ported from Django constraints test suite
553		// Implementation pending full ORM constraint system
554		use super::*;
555		let constraint = CheckConstraint::new("test_constraint", "value > 0");
556		assert_eq!(constraint.name(), "test_constraint");
557		let sql = constraint.to_sql();
558		assert_eq!(
559			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
560			"Expected exact CHECK constraint SQL, got: {}",
561			sql
562		);
563	}
564
565	#[test]
566	// From: Django/constraints
567	fn test_custom_violation_error_message_clone() {
568		// Test: Test Custom Violation Error Message Clone
569		// Ported from Django constraints test suite
570		// Implementation pending full ORM constraint system
571		use super::*;
572		let constraint = CheckConstraint::new("test_constraint", "value > 0");
573		assert_eq!(constraint.name(), "test_constraint");
574		let sql = constraint.to_sql();
575		assert_eq!(
576			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
577			"Expected exact CHECK constraint SQL, got: {}",
578			sql
579		);
580	}
581
582	#[test]
583	// From: Django/constraints
584	fn test_custom_violation_error_message_clone_1() {
585		// Test: Test Custom Violation Error Message Clone 1
586		// Ported from Django constraints test suite
587		// Implementation pending full ORM constraint system
588		use super::*;
589		let constraint = CheckConstraint::new("test_constraint", "value > 0");
590		assert_eq!(constraint.name(), "test_constraint");
591		let sql = constraint.to_sql();
592		assert_eq!(
593			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
594			"Expected exact CHECK constraint SQL, got: {}",
595			sql
596		);
597	}
598
599	#[test]
600	// From: Django/constraints
601	fn test_database_constraint() {
602		// Test: Test Database Constraint
603		// Ported from Django constraints test suite
604		// Implementation pending full ORM constraint system
605		use super::*;
606		let constraint = CheckConstraint::new("test_constraint", "value > 0");
607		assert_eq!(constraint.name(), "test_constraint");
608		let sql = constraint.to_sql();
609		assert_eq!(
610			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
611			"Expected exact CHECK constraint SQL, got: {}",
612			sql
613		);
614	}
615
616	#[test]
617	// From: Django/constraints
618	fn test_database_constraint_1() {
619		// Test: Test Database Constraint 1
620		// Ported from Django constraints test suite
621		// Implementation pending full ORM constraint system
622		use super::*;
623		let constraint = CheckConstraint::new("test_constraint", "value > 0");
624		assert_eq!(constraint.name(), "test_constraint");
625		let sql = constraint.to_sql();
626		assert_eq!(
627			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
628			"Expected exact CHECK constraint SQL, got: {}",
629			sql
630		);
631	}
632
633	#[test]
634	// From: Django/constraints
635	fn test_database_constraint_2() {
636		// Test: Test Database Constraint 2
637		// Ported from Django constraints test suite
638		// Implementation pending full ORM constraint system
639		use super::*;
640		let constraint = CheckConstraint::new("test_constraint", "value > 0");
641		assert_eq!(constraint.name(), "test_constraint");
642		let sql = constraint.to_sql();
643		assert_eq!(
644			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
645			"Expected exact CHECK constraint SQL, got: {}",
646			sql
647		);
648	}
649
650	#[test]
651	// From: Django/constraints
652	fn test_database_constraint_3() {
653		// Test: Test Database Constraint 3
654		// Ported from Django constraints test suite
655		// Implementation pending full ORM constraint system
656		use super::*;
657		let constraint = CheckConstraint::new("test_constraint", "value > 0");
658		assert_eq!(constraint.name(), "test_constraint");
659		let sql = constraint.to_sql();
660		assert_eq!(
661			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
662			"Expected exact CHECK constraint SQL, got: {}",
663			sql
664		);
665	}
666
667	#[test]
668	// From: Django/constraints
669	fn test_database_constraint_unicode() {
670		// Test: Test Database Constraint Unicode
671		// Ported from Django constraints test suite
672		// Implementation pending full ORM constraint system
673		use super::*;
674		let constraint = CheckConstraint::new("test_constraint", "value > 0");
675		assert_eq!(constraint.name(), "test_constraint");
676		let sql = constraint.to_sql();
677		assert_eq!(
678			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
679			"Expected exact CHECK constraint SQL, got: {}",
680			sql
681		);
682	}
683
684	#[test]
685	// From: Django/constraints
686	fn test_database_constraint_unicode_1() {
687		// Test: Test Database Constraint Unicode 1
688		// Ported from Django constraints test suite
689		// Implementation pending full ORM constraint system
690		use super::*;
691		let constraint = CheckConstraint::new("test_constraint", "value > 0");
692		assert_eq!(constraint.name(), "test_constraint");
693		let sql = constraint.to_sql();
694		assert_eq!(
695			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
696			"Expected exact CHECK constraint SQL, got: {}",
697			sql
698		);
699	}
700
701	#[test]
702	// From: Django/constraints
703	fn test_database_constraint_with_condition() {
704		// Test: Test Database Constraint With Condition
705		// Ported from Django constraints test suite
706		// Implementation pending full ORM constraint system
707		use super::*;
708		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
709		assert_eq!(constraint.name(), "test_constraint");
710		let sql = constraint.to_sql();
711		assert_eq!(
712			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
713			"Expected exact CHECK constraint SQL, got: {}",
714			sql
715		);
716	}
717
718	#[test]
719	// From: Django/constraints
720	fn test_database_constraint_with_condition_1() {
721		// Test: Test Database Constraint With Condition 1
722		// Ported from Django constraints test suite
723		// Implementation pending full ORM constraint system
724		use super::*;
725		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
726		assert_eq!(constraint.name(), "test_constraint");
727		let sql = constraint.to_sql();
728		assert_eq!(
729			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
730			"Expected exact CHECK constraint SQL, got: {}",
731			sql
732		);
733	}
734
735	#[test]
736	// From: Django/constraints
737	fn test_database_default() {
738		// Test: Test Database Default
739		// Ported from Django constraints test suite
740		// Implementation pending full ORM constraint system
741		use super::*;
742		let constraint = CheckConstraint::new("test_constraint", "value > 0");
743		assert_eq!(constraint.name(), "test_constraint");
744		let sql = constraint.to_sql();
745		assert_eq!(
746			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
747			"Expected exact CHECK constraint SQL, got: {}",
748			sql
749		);
750	}
751
752	#[test]
753	// From: Django/constraints
754	fn test_database_default_1() {
755		// Test: Test Database Default 1
756		// Ported from Django constraints test suite
757		// Implementation pending full ORM constraint system
758		use super::*;
759		let constraint = CheckConstraint::new("test_constraint", "value > 0");
760		assert_eq!(constraint.name(), "test_constraint");
761		let sql = constraint.to_sql();
762		assert_eq!(
763			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
764			"Expected exact CHECK constraint SQL, got: {}",
765			sql
766		);
767	}
768
769	#[test]
770	// From: Django/constraints
771	fn test_database_default_2() {
772		// Test: Test Database Default 2
773		// Ported from Django constraints test suite
774		// Implementation pending full ORM constraint system
775		use super::*;
776		let constraint = CheckConstraint::new("test_constraint", "value > 0");
777		assert_eq!(constraint.name(), "test_constraint");
778		let sql = constraint.to_sql();
779		assert_eq!(
780			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
781			"Expected exact CHECK constraint SQL, got: {}",
782			sql
783		);
784	}
785
786	#[test]
787	// From: Django/constraints
788	fn test_database_default_3() {
789		// Test: Test Database Default 3
790		// Ported from Django constraints test suite
791		// Implementation pending full ORM constraint system
792		use super::*;
793		let constraint = CheckConstraint::new("test_constraint", "value > 0");
794		assert_eq!(constraint.name(), "test_constraint");
795		let sql = constraint.to_sql();
796		assert_eq!(
797			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
798			"Expected exact CHECK constraint SQL, got: {}",
799			sql
800		);
801	}
802
803	#[test]
804	// From: Django/constraints
805	fn test_deconstruction() {
806		// Test: Test Deconstruction
807		// Ported from Django constraints test suite
808		// Implementation pending full ORM constraint system
809		use super::*;
810		let constraint = CheckConstraint::new("test_constraint", "value > 0");
811		assert_eq!(constraint.name(), "test_constraint");
812		let sql = constraint.to_sql();
813		assert_eq!(
814			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
815			"Expected exact CHECK constraint SQL, got: {}",
816			sql
817		);
818	}
819
820	#[test]
821	// From: Django/constraints
822	fn test_deconstruction_1() {
823		// Test: Test Deconstruction 1
824		// Ported from Django constraints test suite
825		// Implementation pending full ORM constraint system
826		use super::*;
827		let constraint = CheckConstraint::new("test_constraint", "value > 0");
828		assert_eq!(constraint.name(), "test_constraint");
829		let sql = constraint.to_sql();
830		assert_eq!(
831			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
832			"Expected exact CHECK constraint SQL, got: {}",
833			sql
834		);
835	}
836
837	#[test]
838	// From: Django/constraints
839	fn test_deconstruction_2() {
840		// Test: Test Deconstruction 2
841		// Ported from Django constraints test suite
842		// Implementation pending full ORM constraint system
843		use super::*;
844		let constraint = CheckConstraint::new("test_constraint", "value > 0");
845		assert_eq!(constraint.name(), "test_constraint");
846		let sql = constraint.to_sql();
847		assert_eq!(
848			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
849			"Expected exact CHECK constraint SQL, got: {}",
850			sql
851		);
852	}
853
854	#[test]
855	// From: Django/constraints
856	fn test_deconstruction_3() {
857		// Test: Test Deconstruction 3
858		// Ported from Django constraints test suite
859		// Implementation pending full ORM constraint system
860		use super::*;
861		let constraint = CheckConstraint::new("test_constraint", "value > 0");
862		assert_eq!(constraint.name(), "test_constraint");
863		let sql = constraint.to_sql();
864		assert_eq!(
865			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
866			"Expected exact CHECK constraint SQL, got: {}",
867			sql
868		);
869	}
870
871	#[test]
872	// From: Django/constraints
873	fn test_deconstruction_4() {
874		// Test: Test Deconstruction 4
875		// Ported from Django constraints test suite
876		// Implementation pending full ORM constraint system
877		use super::*;
878		let constraint = CheckConstraint::new("test_constraint", "value > 0");
879		assert_eq!(constraint.name(), "test_constraint");
880		let sql = constraint.to_sql();
881		assert_eq!(
882			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
883			"Expected exact CHECK constraint SQL, got: {}",
884			sql
885		);
886	}
887
888	#[test]
889	// From: Django/constraints
890	fn test_deconstruction_5() {
891		// Test: Test Deconstruction 5
892		// Ported from Django constraints test suite
893		// Implementation pending full ORM constraint system
894		use super::*;
895		let constraint = CheckConstraint::new("test_constraint", "value > 0");
896		assert_eq!(constraint.name(), "test_constraint");
897		let sql = constraint.to_sql();
898		assert_eq!(
899			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
900			"Expected exact CHECK constraint SQL, got: {}",
901			sql
902		);
903	}
904
905	#[test]
906	// From: Django/constraints
907	fn test_deconstruction_with_condition() {
908		// Test: Test Deconstruction With Condition
909		// Ported from Django constraints test suite
910		// Implementation pending full ORM constraint system
911		use super::*;
912		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
913		assert_eq!(constraint.name(), "test_constraint");
914		let sql = constraint.to_sql();
915		assert_eq!(
916			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
917			"Expected exact CHECK constraint SQL, got: {}",
918			sql
919		);
920	}
921
922	#[test]
923	// From: Django/constraints
924	fn test_deconstruction_with_condition_1() {
925		// Test: Test Deconstruction With Condition 1
926		// Ported from Django constraints test suite
927		// Implementation pending full ORM constraint system
928		use super::*;
929		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
930		assert_eq!(constraint.name(), "test_constraint");
931		let sql = constraint.to_sql();
932		assert_eq!(
933			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
934			"Expected exact CHECK constraint SQL, got: {}",
935			sql
936		);
937	}
938
939	#[test]
940	// From: Django/constraints
941	fn test_deconstruction_with_deferrable() {
942		// Test: Test Deconstruction With Deferrable
943		// Ported from Django constraints test suite
944		// Implementation pending full ORM constraint system
945		use super::*;
946		let constraint = CheckConstraint::new("test_constraint", "value > 0");
947		assert_eq!(constraint.name(), "test_constraint");
948		let sql = constraint.to_sql();
949		assert_eq!(
950			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
951			"Expected exact CHECK constraint SQL, got: {}",
952			sql
953		);
954	}
955
956	#[test]
957	// From: Django/constraints
958	fn test_deconstruction_with_deferrable_1() {
959		// Test: Test Deconstruction With Deferrable 1
960		// Ported from Django constraints test suite
961		// Implementation pending full ORM constraint system
962		use super::*;
963		let constraint = CheckConstraint::new("test_constraint", "value > 0");
964		assert_eq!(constraint.name(), "test_constraint");
965		let sql = constraint.to_sql();
966		assert_eq!(
967			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
968			"Expected exact CHECK constraint SQL, got: {}",
969			sql
970		);
971	}
972
973	#[test]
974	// From: Django/constraints
975	fn test_deconstruction_with_expressions() {
976		// Test: Test Deconstruction With Expressions
977		// Ported from Django constraints test suite
978		// Implementation pending full ORM constraint system
979		use super::*;
980		let constraint = CheckConstraint::new("test_constraint", "value > 0");
981		assert_eq!(constraint.name(), "test_constraint");
982		let sql = constraint.to_sql();
983		assert_eq!(
984			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
985			"Expected exact CHECK constraint SQL, got: {}",
986			sql
987		);
988	}
989
990	#[test]
991	// From: Django/constraints
992	fn test_deconstruction_with_expressions_1() {
993		// Test: Test Deconstruction With Expressions 1
994		// Ported from Django constraints test suite
995		// Implementation pending full ORM constraint system
996		use super::*;
997		let constraint = CheckConstraint::new("test_constraint", "value > 0");
998		assert_eq!(constraint.name(), "test_constraint");
999		let sql = constraint.to_sql();
1000		assert_eq!(
1001			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1002			"Expected exact CHECK constraint SQL, got: {}",
1003			sql
1004		);
1005	}
1006
1007	#[test]
1008	// From: Django/constraints
1009	fn test_deconstruction_with_include() {
1010		// Test: Test Deconstruction With Include
1011		// Ported from Django constraints test suite
1012		// Implementation pending full ORM constraint system
1013		use super::*;
1014		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1015		assert_eq!(constraint.name(), "test_constraint");
1016		let sql = constraint.to_sql();
1017		assert_eq!(
1018			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1019			"Expected exact CHECK constraint SQL, got: {}",
1020			sql
1021		);
1022	}
1023
1024	#[test]
1025	// From: Django/constraints
1026	fn test_deconstruction_with_include_1() {
1027		// Test: Test Deconstruction With Include 1
1028		// Ported from Django constraints test suite
1029		// Implementation pending full ORM constraint system
1030		use super::*;
1031		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1032		assert_eq!(constraint.name(), "test_constraint");
1033		let sql = constraint.to_sql();
1034		assert_eq!(
1035			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1036			"Expected exact CHECK constraint SQL, got: {}",
1037			sql
1038		);
1039	}
1040
1041	#[test]
1042	// From: Django/constraints
1043	fn test_deconstruction_with_nulls_distinct() {
1044		// Test: Test Deconstruction With Nulls Distinct
1045		// Ported from Django constraints test suite
1046		// Implementation pending full ORM constraint system
1047		use super::*;
1048		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1049		assert_eq!(constraint.name(), "test_constraint");
1050		let sql = constraint.to_sql();
1051		assert_eq!(
1052			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1053			"Expected exact CHECK constraint SQL, got: {}",
1054			sql
1055		);
1056	}
1057
1058	#[test]
1059	// From: Django/constraints
1060	fn test_deconstruction_with_nulls_distinct_1() {
1061		// Test: Test Deconstruction With Nulls Distinct 1
1062		// Ported from Django constraints test suite
1063		// Implementation pending full ORM constraint system
1064		use super::*;
1065		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1066		assert_eq!(constraint.name(), "test_constraint");
1067		let sql = constraint.to_sql();
1068		assert_eq!(
1069			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1070			"Expected exact CHECK constraint SQL, got: {}",
1071			sql
1072		);
1073	}
1074
1075	#[test]
1076	// From: Django/constraints
1077	fn test_deconstruction_with_opclasses() {
1078		// Test: Test Deconstruction With Opclasses
1079		// Ported from Django constraints test suite
1080		// Implementation pending full ORM constraint system
1081		use super::*;
1082		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1083		assert_eq!(constraint.name(), "test_constraint");
1084		let sql = constraint.to_sql();
1085		assert_eq!(
1086			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1087			"Expected exact CHECK constraint SQL, got: {}",
1088			sql
1089		);
1090	}
1091
1092	#[test]
1093	// From: Django/constraints
1094	fn test_deconstruction_with_opclasses_1() {
1095		// Test: Test Deconstruction With Opclasses 1
1096		// Ported from Django constraints test suite
1097		// Implementation pending full ORM constraint system
1098		use super::*;
1099		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1100		assert_eq!(constraint.name(), "test_constraint");
1101		let sql = constraint.to_sql();
1102		assert_eq!(
1103			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1104			"Expected exact CHECK constraint SQL, got: {}",
1105			sql
1106		);
1107	}
1108
1109	#[test]
1110	// From: Django/constraints
1111	fn test_default_violation_error_message() {
1112		// Test: Test Default Violation Error Message
1113		// Ported from Django constraints test suite
1114		// Implementation pending full ORM constraint system
1115		use super::*;
1116		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1117		assert_eq!(constraint.name(), "test_constraint");
1118		let sql = constraint.to_sql();
1119		assert_eq!(
1120			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1121			"Expected exact CHECK constraint SQL, got: {}",
1122			sql
1123		);
1124	}
1125
1126	#[test]
1127	// From: Django/constraints
1128	fn test_default_violation_error_message_1() {
1129		// Test: Test Default Violation Error Message 1
1130		// Ported from Django constraints test suite
1131		// Implementation pending full ORM constraint system
1132		use super::*;
1133		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1134		assert_eq!(constraint.name(), "test_constraint");
1135		let sql = constraint.to_sql();
1136		assert_eq!(
1137			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1138			"Expected exact CHECK constraint SQL, got: {}",
1139			sql
1140		);
1141	}
1142
1143	#[test]
1144	// From: Django/constraints
1145	fn test_deferrable_with_condition() {
1146		// Test: Test Deferrable With Condition
1147		// Ported from Django constraints test suite
1148		// Implementation pending full ORM constraint system
1149		use super::*;
1150		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
1151		assert_eq!(constraint.name(), "test_constraint");
1152		let sql = constraint.to_sql();
1153		assert_eq!(
1154			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
1155			"Expected exact CHECK constraint SQL, got: {}",
1156			sql
1157		);
1158	}
1159
1160	#[test]
1161	// From: Django/constraints
1162	fn test_deferrable_with_condition_1() {
1163		// Test: Test Deferrable With Condition 1
1164		// Ported from Django constraints test suite
1165		// Implementation pending full ORM constraint system
1166		use super::*;
1167		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
1168		assert_eq!(constraint.name(), "test_constraint");
1169		let sql = constraint.to_sql();
1170		assert_eq!(
1171			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
1172			"Expected exact CHECK constraint SQL, got: {}",
1173			sql
1174		);
1175	}
1176
1177	#[test]
1178	// From: Django/constraints
1179	fn test_deferrable_with_expressions() {
1180		// Test: Test Deferrable With Expressions
1181		// Ported from Django constraints test suite
1182		// Implementation pending full ORM constraint system
1183		use super::*;
1184		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1185		assert_eq!(constraint.name(), "test_constraint");
1186		let sql = constraint.to_sql();
1187		assert_eq!(
1188			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1189			"Expected exact CHECK constraint SQL, got: {}",
1190			sql
1191		);
1192	}
1193
1194	#[test]
1195	// From: Django/constraints
1196	fn test_deferrable_with_expressions_1() {
1197		// Test: Test Deferrable With Expressions 1
1198		// Ported from Django constraints test suite
1199		// Implementation pending full ORM constraint system
1200		use super::*;
1201		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1202		assert_eq!(constraint.name(), "test_constraint");
1203		let sql = constraint.to_sql();
1204		assert_eq!(
1205			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1206			"Expected exact CHECK constraint SQL, got: {}",
1207			sql
1208		);
1209	}
1210
1211	#[test]
1212	// From: Django/constraints
1213	fn test_deferrable_with_include() {
1214		// Test: Test Deferrable With Include
1215		// Ported from Django constraints test suite
1216		// Implementation pending full ORM constraint system
1217		use super::*;
1218		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1219		assert_eq!(constraint.name(), "test_constraint");
1220		let sql = constraint.to_sql();
1221		assert_eq!(
1222			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1223			"Expected exact CHECK constraint SQL, got: {}",
1224			sql
1225		);
1226	}
1227
1228	#[test]
1229	// From: Django/constraints
1230	fn test_deferrable_with_include_1() {
1231		// Test: Test Deferrable With Include 1
1232		// Ported from Django constraints test suite
1233		// Implementation pending full ORM constraint system
1234		use super::*;
1235		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1236		assert_eq!(constraint.name(), "test_constraint");
1237		let sql = constraint.to_sql();
1238		assert_eq!(
1239			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1240			"Expected exact CHECK constraint SQL, got: {}",
1241			sql
1242		);
1243	}
1244
1245	#[test]
1246	// From: Django/constraints
1247	fn test_deferrable_with_opclasses() {
1248		// Test: Test Deferrable With Opclasses
1249		// Ported from Django constraints test suite
1250		// Implementation pending full ORM constraint system
1251		use super::*;
1252		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1253		assert_eq!(constraint.name(), "test_constraint");
1254		let sql = constraint.to_sql();
1255		assert_eq!(
1256			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1257			"Expected exact CHECK constraint SQL, got: {}",
1258			sql
1259		);
1260	}
1261
1262	#[test]
1263	// From: Django/constraints
1264	fn test_deferrable_with_opclasses_1() {
1265		// Test: Test Deferrable With Opclasses 1
1266		// Ported from Django constraints test suite
1267		// Implementation pending full ORM constraint system
1268		use super::*;
1269		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1270		assert_eq!(constraint.name(), "test_constraint");
1271		let sql = constraint.to_sql();
1272		assert_eq!(
1273			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1274			"Expected exact CHECK constraint SQL, got: {}",
1275			sql
1276		);
1277	}
1278
1279	#[test]
1280	// From: Django/constraints
1281	fn test_eq() {
1282		// Test: Test Eq
1283		// Ported from Django constraints test suite
1284		// Implementation pending full ORM constraint system
1285		use super::*;
1286		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1287		assert_eq!(constraint.name(), "test_constraint");
1288		let sql = constraint.to_sql();
1289		assert_eq!(
1290			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1291			"Expected exact CHECK constraint SQL, got: {}",
1292			sql
1293		);
1294	}
1295
1296	#[test]
1297	// From: Django/constraints
1298	fn test_eq_1() {
1299		// Test: Test Eq 1
1300		// Ported from Django constraints test suite
1301		// Implementation pending full ORM constraint system
1302		use super::*;
1303		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1304		assert_eq!(constraint.name(), "test_constraint");
1305		let sql = constraint.to_sql();
1306		assert_eq!(
1307			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1308			"Expected exact CHECK constraint SQL, got: {}",
1309			sql
1310		);
1311	}
1312
1313	#[test]
1314	// From: Django/constraints
1315	fn test_eq_2() {
1316		// Test: Test Eq 2
1317		// Ported from Django constraints test suite
1318		// Implementation pending full ORM constraint system
1319		use super::*;
1320		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1321		assert_eq!(constraint.name(), "test_constraint");
1322		let sql = constraint.to_sql();
1323		assert_eq!(
1324			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1325			"Expected exact CHECK constraint SQL, got: {}",
1326			sql
1327		);
1328	}
1329
1330	#[test]
1331	// From: Django/constraints
1332	fn test_eq_3() {
1333		// Test: Test Eq 3
1334		// Ported from Django constraints test suite
1335		// Implementation pending full ORM constraint system
1336		use super::*;
1337		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1338		assert_eq!(constraint.name(), "test_constraint");
1339		let sql = constraint.to_sql();
1340		assert_eq!(
1341			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1342			"Expected exact CHECK constraint SQL, got: {}",
1343			sql
1344		);
1345	}
1346
1347	#[test]
1348	// From: Django/constraints
1349	fn test_eq_with_condition() {
1350		// Test: Test Eq With Condition
1351		// Ported from Django constraints test suite
1352		// Implementation pending full ORM constraint system
1353		use super::*;
1354		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
1355		assert_eq!(constraint.name(), "test_constraint");
1356		let sql = constraint.to_sql();
1357		assert_eq!(
1358			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
1359			"Expected exact CHECK constraint SQL, got: {}",
1360			sql
1361		);
1362	}
1363
1364	#[test]
1365	// From: Django/constraints
1366	fn test_eq_with_condition_1() {
1367		// Test: Test Eq With Condition 1
1368		// Ported from Django constraints test suite
1369		// Implementation pending full ORM constraint system
1370		use super::*;
1371		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
1372		assert_eq!(constraint.name(), "test_constraint");
1373		let sql = constraint.to_sql();
1374		assert_eq!(
1375			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
1376			"Expected exact CHECK constraint SQL, got: {}",
1377			sql
1378		);
1379	}
1380
1381	#[test]
1382	// From: Django/constraints
1383	fn test_eq_with_deferrable() {
1384		// Test: Test Eq With Deferrable
1385		// Ported from Django constraints test suite
1386		// Implementation pending full ORM constraint system
1387		use super::*;
1388		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1389		assert_eq!(constraint.name(), "test_constraint");
1390		let sql = constraint.to_sql();
1391		assert_eq!(
1392			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1393			"Expected exact CHECK constraint SQL, got: {}",
1394			sql
1395		);
1396	}
1397
1398	#[test]
1399	// From: Django/constraints
1400	fn test_eq_with_deferrable_1() {
1401		// Test: Test Eq With Deferrable 1
1402		// Ported from Django constraints test suite
1403		// Implementation pending full ORM constraint system
1404		use super::*;
1405		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1406		assert_eq!(constraint.name(), "test_constraint");
1407		let sql = constraint.to_sql();
1408		assert_eq!(
1409			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1410			"Expected exact CHECK constraint SQL, got: {}",
1411			sql
1412		);
1413	}
1414
1415	#[test]
1416	// From: Django/constraints
1417	fn test_eq_with_expressions() {
1418		// Test: Test Eq With Expressions
1419		// Ported from Django constraints test suite
1420		// Implementation pending full ORM constraint system
1421		use super::*;
1422		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1423		assert_eq!(constraint.name(), "test_constraint");
1424		let sql = constraint.to_sql();
1425		assert_eq!(
1426			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1427			"Expected exact CHECK constraint SQL, got: {}",
1428			sql
1429		);
1430	}
1431
1432	#[test]
1433	// From: Django/constraints
1434	fn test_eq_with_expressions_1() {
1435		// Test: Test Eq With Expressions 1
1436		// Ported from Django constraints test suite
1437		// Implementation pending full ORM constraint system
1438		use super::*;
1439		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1440		assert_eq!(constraint.name(), "test_constraint");
1441		let sql = constraint.to_sql();
1442		assert_eq!(
1443			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1444			"Expected exact CHECK constraint SQL, got: {}",
1445			sql
1446		);
1447	}
1448
1449	#[test]
1450	// From: Django/constraints
1451	fn test_eq_with_include() {
1452		// Test: Test Eq With Include
1453		// Ported from Django constraints test suite
1454		// Implementation pending full ORM constraint system
1455		use super::*;
1456		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1457		assert_eq!(constraint.name(), "test_constraint");
1458		let sql = constraint.to_sql();
1459		assert_eq!(
1460			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1461			"Expected exact CHECK constraint SQL, got: {}",
1462			sql
1463		);
1464	}
1465
1466	#[test]
1467	// From: Django/constraints
1468	fn test_eq_with_include_1() {
1469		// Test: Test Eq With Include 1
1470		// Ported from Django constraints test suite
1471		// Implementation pending full ORM constraint system
1472		use super::*;
1473		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1474		assert_eq!(constraint.name(), "test_constraint");
1475		let sql = constraint.to_sql();
1476		assert_eq!(
1477			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1478			"Expected exact CHECK constraint SQL, got: {}",
1479			sql
1480		);
1481	}
1482
1483	#[test]
1484	// From: Django/constraints
1485	fn test_eq_with_nulls_distinct() {
1486		// Test: Test Eq With Nulls Distinct
1487		// Ported from Django constraints test suite
1488		// Implementation pending full ORM constraint system
1489		use super::*;
1490		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1491		assert_eq!(constraint.name(), "test_constraint");
1492		let sql = constraint.to_sql();
1493		assert_eq!(
1494			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1495			"Expected exact CHECK constraint SQL, got: {}",
1496			sql
1497		);
1498	}
1499
1500	#[test]
1501	// From: Django/constraints
1502	fn test_eq_with_nulls_distinct_1() {
1503		// Test: Test Eq With Nulls Distinct 1
1504		// Ported from Django constraints test suite
1505		// Implementation pending full ORM constraint system
1506		use super::*;
1507		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1508		assert_eq!(constraint.name(), "test_constraint");
1509		let sql = constraint.to_sql();
1510		assert_eq!(
1511			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1512			"Expected exact CHECK constraint SQL, got: {}",
1513			sql
1514		);
1515	}
1516
1517	#[test]
1518	// From: Django/constraints
1519	fn test_eq_with_opclasses() {
1520		// Test: Test Eq With Opclasses
1521		// Ported from Django constraints test suite
1522		// Implementation pending full ORM constraint system
1523		use super::*;
1524		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1525		assert_eq!(constraint.name(), "test_constraint");
1526		let sql = constraint.to_sql();
1527		assert_eq!(
1528			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1529			"Expected exact CHECK constraint SQL, got: {}",
1530			sql
1531		);
1532	}
1533
1534	#[test]
1535	// From: Django/constraints
1536	fn test_eq_with_opclasses_1() {
1537		// Test: Test Eq With Opclasses 1
1538		// Ported from Django constraints test suite
1539		// Implementation pending full ORM constraint system
1540		use super::*;
1541		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1542		assert_eq!(constraint.name(), "test_constraint");
1543		let sql = constraint.to_sql();
1544		assert_eq!(
1545			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1546			"Expected exact CHECK constraint SQL, got: {}",
1547			sql
1548		);
1549	}
1550
1551	#[test]
1552	// From: Django/constraints
1553	fn test_expressions_and_fields_mutually_exclusive() {
1554		// Test: Test Expressions And Fields Mutually Exclusive
1555		// Ported from Django constraints test suite
1556		// Implementation pending full ORM constraint system
1557		use super::*;
1558		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1559		assert_eq!(constraint.name(), "test_constraint");
1560		let sql = constraint.to_sql();
1561		assert_eq!(
1562			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1563			"Expected exact CHECK constraint SQL, got: {}",
1564			sql
1565		);
1566	}
1567
1568	#[test]
1569	// From: Django/constraints
1570	fn test_expressions_and_fields_mutually_exclusive_1() {
1571		// Test: Test Expressions And Fields Mutually Exclusive 1
1572		// Ported from Django constraints test suite
1573		// Implementation pending full ORM constraint system
1574		use super::*;
1575		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1576		assert_eq!(constraint.name(), "test_constraint");
1577		let sql = constraint.to_sql();
1578		assert_eq!(
1579			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1580			"Expected exact CHECK constraint SQL, got: {}",
1581			sql
1582		);
1583	}
1584
1585	#[test]
1586	// From: Django/constraints
1587	fn test_expressions_with_opclasses() {
1588		// Test: Test Expressions With Opclasses
1589		// Ported from Django constraints test suite
1590		// Implementation pending full ORM constraint system
1591		use super::*;
1592		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1593		assert_eq!(constraint.name(), "test_constraint");
1594		let sql = constraint.to_sql();
1595		assert_eq!(
1596			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1597			"Expected exact CHECK constraint SQL, got: {}",
1598			sql
1599		);
1600	}
1601
1602	#[test]
1603	// From: Django/constraints
1604	fn test_expressions_with_opclasses_1() {
1605		// Test: Test Expressions With Opclasses 1
1606		// Ported from Django constraints test suite
1607		// Implementation pending full ORM constraint system
1608		use super::*;
1609		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1610		assert_eq!(constraint.name(), "test_constraint");
1611		let sql = constraint.to_sql();
1612		assert_eq!(
1613			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1614			"Expected exact CHECK constraint SQL, got: {}",
1615			sql
1616		);
1617	}
1618
1619	#[test]
1620	// From: Django/constraints
1621	fn test_include_database_constraint() {
1622		// Test: Test Include Database Constraint
1623		// Ported from Django constraints test suite
1624		// Implementation pending full ORM constraint system
1625		use super::*;
1626		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1627		assert_eq!(constraint.name(), "test_constraint");
1628		let sql = constraint.to_sql();
1629		assert_eq!(
1630			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1631			"Expected exact CHECK constraint SQL, got: {}",
1632			sql
1633		);
1634	}
1635
1636	#[test]
1637	// From: Django/constraints
1638	fn test_include_database_constraint_1() {
1639		// Test: Test Include Database Constraint 1
1640		// Ported from Django constraints test suite
1641		// Implementation pending full ORM constraint system
1642		use super::*;
1643		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1644		assert_eq!(constraint.name(), "test_constraint");
1645		let sql = constraint.to_sql();
1646		assert_eq!(
1647			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1648			"Expected exact CHECK constraint SQL, got: {}",
1649			sql
1650		);
1651	}
1652
1653	#[test]
1654	// From: Django/constraints
1655	fn test_initially_deferred_database_constraint() {
1656		// Test: Test Initially Deferred Database Constraint
1657		// Ported from Django constraints test suite
1658		// Implementation pending full ORM constraint system
1659		use super::*;
1660		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1661		assert_eq!(constraint.name(), "test_constraint");
1662		let sql = constraint.to_sql();
1663		assert_eq!(
1664			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1665			"Expected exact CHECK constraint SQL, got: {}",
1666			sql
1667		);
1668	}
1669
1670	#[test]
1671	// From: Django/constraints
1672	fn test_initially_deferred_database_constraint_1() {
1673		// Test: Test Initially Deferred Database Constraint 1
1674		// Ported from Django constraints test suite
1675		// Implementation pending full ORM constraint system
1676		use super::*;
1677		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1678		assert_eq!(constraint.name(), "test_constraint");
1679		let sql = constraint.to_sql();
1680		assert_eq!(
1681			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1682			"Expected exact CHECK constraint SQL, got: {}",
1683			sql
1684		);
1685	}
1686
1687	#[test]
1688	// From: Django/constraints
1689	fn test_initially_immediate_database_constraint() {
1690		// Test: Test Initially Immediate Database Constraint
1691		// Ported from Django constraints test suite
1692		// Implementation pending full ORM constraint system
1693		use super::*;
1694		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1695		assert_eq!(constraint.name(), "test_constraint");
1696		let sql = constraint.to_sql();
1697		assert_eq!(
1698			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1699			"Expected exact CHECK constraint SQL, got: {}",
1700			sql
1701		);
1702	}
1703
1704	#[test]
1705	// From: Django/constraints
1706	fn test_initially_immediate_database_constraint_1() {
1707		// Test: Test Initially Immediate Database Constraint 1
1708		// Ported from Django constraints test suite
1709		// Implementation pending full ORM constraint system
1710		use super::*;
1711		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1712		assert_eq!(constraint.name(), "test_constraint");
1713		let sql = constraint.to_sql();
1714		assert_eq!(
1715			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1716			"Expected exact CHECK constraint SQL, got: {}",
1717			sql
1718		);
1719	}
1720
1721	#[test]
1722	// From: Django/constraints
1723	fn test_invalid_check_types() {
1724		// Test: Test Invalid Check Types
1725		// Ported from Django constraints test suite
1726		// Implementation pending full ORM constraint system
1727		use super::*;
1728		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
1729		assert_eq!(constraint.name(), "test_constraint");
1730		let sql = constraint.to_sql();
1731		assert_eq!(
1732			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
1733			"Expected exact CHECK constraint SQL, got: {}",
1734			sql
1735		);
1736	}
1737
1738	#[test]
1739	// From: Django/constraints
1740	fn test_invalid_check_types_1() {
1741		// Test: Test Invalid Check Types 1
1742		// Ported from Django constraints test suite
1743		// Implementation pending full ORM constraint system
1744		use super::*;
1745		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
1746		assert_eq!(constraint.name(), "test_constraint");
1747		let sql = constraint.to_sql();
1748		assert_eq!(
1749			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
1750			"Expected exact CHECK constraint SQL, got: {}",
1751			sql
1752		);
1753	}
1754
1755	#[test]
1756	// From: Django/constraints
1757	fn test_invalid_defer_argument() {
1758		// Test: Test Invalid Defer Argument
1759		// Ported from Django constraints test suite
1760		// Implementation pending full ORM constraint system
1761		use super::*;
1762		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1763		assert_eq!(constraint.name(), "test_constraint");
1764		let sql = constraint.to_sql();
1765		assert_eq!(
1766			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1767			"Expected exact CHECK constraint SQL, got: {}",
1768			sql
1769		);
1770	}
1771
1772	#[test]
1773	// From: Django/constraints
1774	fn test_invalid_defer_argument_1() {
1775		// Test: Test Invalid Defer Argument 1
1776		// Ported from Django constraints test suite
1777		// Implementation pending full ORM constraint system
1778		use super::*;
1779		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1780		assert_eq!(constraint.name(), "test_constraint");
1781		let sql = constraint.to_sql();
1782		assert_eq!(
1783			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1784			"Expected exact CHECK constraint SQL, got: {}",
1785			sql
1786		);
1787	}
1788
1789	#[test]
1790	// From: Django/constraints
1791	fn test_invalid_include_argument() {
1792		// Test: Test Invalid Include Argument
1793		// Ported from Django constraints test suite
1794		// Implementation pending full ORM constraint system
1795		use super::*;
1796		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1797		assert_eq!(constraint.name(), "test_constraint");
1798		let sql = constraint.to_sql();
1799		assert_eq!(
1800			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1801			"Expected exact CHECK constraint SQL, got: {}",
1802			sql
1803		);
1804	}
1805
1806	#[test]
1807	// From: Django/constraints
1808	fn test_invalid_include_argument_1() {
1809		// Test: Test Invalid Include Argument 1
1810		// Ported from Django constraints test suite
1811		// Implementation pending full ORM constraint system
1812		use super::*;
1813		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1814		assert_eq!(constraint.name(), "test_constraint");
1815		let sql = constraint.to_sql();
1816		assert_eq!(
1817			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1818			"Expected exact CHECK constraint SQL, got: {}",
1819			sql
1820		);
1821	}
1822
1823	#[test]
1824	// From: Django/constraints
1825	fn test_invalid_nulls_distinct_argument() {
1826		// Test: Test Invalid Nulls Distinct Argument
1827		// Ported from Django constraints test suite
1828		// Implementation pending full ORM constraint system
1829		use super::*;
1830		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1831		assert_eq!(constraint.name(), "test_constraint");
1832		let sql = constraint.to_sql();
1833		assert_eq!(
1834			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1835			"Expected exact CHECK constraint SQL, got: {}",
1836			sql
1837		);
1838	}
1839
1840	#[test]
1841	// From: Django/constraints
1842	fn test_invalid_nulls_distinct_argument_1() {
1843		// Test: Test Invalid Nulls Distinct Argument 1
1844		// Ported from Django constraints test suite
1845		// Implementation pending full ORM constraint system
1846		use super::*;
1847		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1848		assert_eq!(constraint.name(), "test_constraint");
1849		let sql = constraint.to_sql();
1850		assert_eq!(
1851			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1852			"Expected exact CHECK constraint SQL, got: {}",
1853			sql
1854		);
1855	}
1856
1857	#[test]
1858	// From: Django/constraints
1859	fn test_invalid_opclasses_argument() {
1860		// Test: Test Invalid Opclasses Argument
1861		// Ported from Django constraints test suite
1862		// Implementation pending full ORM constraint system
1863		use super::*;
1864		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1865		assert_eq!(constraint.name(), "test_constraint");
1866		let sql = constraint.to_sql();
1867		assert_eq!(
1868			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1869			"Expected exact CHECK constraint SQL, got: {}",
1870			sql
1871		);
1872	}
1873
1874	#[test]
1875	// From: Django/constraints
1876	fn test_invalid_opclasses_argument_1() {
1877		// Test: Test Invalid Opclasses Argument 1
1878		// Ported from Django constraints test suite
1879		// Implementation pending full ORM constraint system
1880		use super::*;
1881		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1882		assert_eq!(constraint.name(), "test_constraint");
1883		let sql = constraint.to_sql();
1884		assert_eq!(
1885			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1886			"Expected exact CHECK constraint SQL, got: {}",
1887			sql
1888		);
1889	}
1890
1891	#[test]
1892	// From: Django/constraints
1893	fn test_model_validation() {
1894		// Test: Test Model Validation
1895		// Ported from Django constraints test suite
1896		// Implementation pending full ORM constraint system
1897		use super::*;
1898		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1899		assert_eq!(constraint.name(), "test_constraint");
1900		let sql = constraint.to_sql();
1901		assert_eq!(
1902			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1903			"Expected exact CHECK constraint SQL, got: {}",
1904			sql
1905		);
1906	}
1907
1908	#[test]
1909	// From: Django/constraints
1910	fn test_model_validation_1() {
1911		// Test: Test Model Validation 1
1912		// Ported from Django constraints test suite
1913		// Implementation pending full ORM constraint system
1914		use super::*;
1915		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1916		assert_eq!(constraint.name(), "test_constraint");
1917		let sql = constraint.to_sql();
1918		assert_eq!(
1919			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1920			"Expected exact CHECK constraint SQL, got: {}",
1921			sql
1922		);
1923	}
1924
1925	#[test]
1926	// From: Django/constraints
1927	fn test_model_validation_constraint_no_code_error() {
1928		// Test: Test Model Validation Constraint No Code Error
1929		// Ported from Django constraints test suite
1930		// Implementation pending full ORM constraint system
1931		use super::*;
1932		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1933		assert_eq!(constraint.name(), "test_constraint");
1934		let sql = constraint.to_sql();
1935		assert_eq!(
1936			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1937			"Expected exact CHECK constraint SQL, got: {}",
1938			sql
1939		);
1940	}
1941
1942	#[test]
1943	// From: Django/constraints
1944	fn test_model_validation_constraint_no_code_error_1() {
1945		// Test: Test Model Validation Constraint No Code Error 1
1946		// Ported from Django constraints test suite
1947		// Implementation pending full ORM constraint system
1948		use super::*;
1949		let constraint = CheckConstraint::new("test_constraint", "value > 0");
1950		assert_eq!(constraint.name(), "test_constraint");
1951		let sql = constraint.to_sql();
1952		assert_eq!(
1953			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
1954			"Expected exact CHECK constraint SQL, got: {}",
1955			sql
1956		);
1957	}
1958
1959	#[test]
1960	// From: Django/constraints
1961	fn test_model_validation_with_condition() {
1962		// Test: Test Model Validation With Condition
1963		// Ported from Django constraints test suite
1964		// Implementation pending full ORM constraint system
1965		use super::*;
1966		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
1967		assert_eq!(constraint.name(), "test_constraint");
1968		let sql = constraint.to_sql();
1969		assert_eq!(
1970			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
1971			"Expected exact CHECK constraint SQL, got: {}",
1972			sql
1973		);
1974	}
1975
1976	#[test]
1977	// From: Django/constraints
1978	fn test_model_validation_with_condition_1() {
1979		// Test: Test Model Validation With Condition 1
1980		// Ported from Django constraints test suite
1981		// Implementation pending full ORM constraint system
1982		use super::*;
1983		let constraint = CheckConstraint::new("test_constraint", "age >= 18");
1984		assert_eq!(constraint.name(), "test_constraint");
1985		let sql = constraint.to_sql();
1986		assert_eq!(
1987			sql, "CONSTRAINT test_constraint CHECK (age >= 18)",
1988			"Expected exact CHECK constraint SQL, got: {}",
1989			sql
1990		);
1991	}
1992
1993	#[test]
1994	// From: Django/constraints
1995	fn test_name() {
1996		// Test: Test Name
1997		// Ported from Django constraints test suite
1998		// Implementation pending full ORM constraint system
1999		use super::*;
2000		let constraint = CheckConstraint::new("test_constraint", "value > 0");
2001		assert_eq!(constraint.name(), "test_constraint");
2002		let sql = constraint.to_sql();
2003		assert_eq!(
2004			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
2005			"Expected exact CHECK constraint SQL, got: {}",
2006			sql
2007		);
2008	}
2009
2010	#[test]
2011	// From: Django/constraints
2012	fn test_name_1() {
2013		// Test: Test Name 1
2014		// Ported from Django constraints test suite
2015		// Implementation pending full ORM constraint system
2016		use super::*;
2017		let constraint = CheckConstraint::new("test_constraint", "value > 0");
2018		assert_eq!(constraint.name(), "test_constraint");
2019		let sql = constraint.to_sql();
2020		assert_eq!(
2021			sql, "CONSTRAINT test_constraint CHECK (value > 0)",
2022			"Expected exact CHECK constraint SQL, got: {}",
2023			sql
2024		);
2025	}
2026}