State testing
This commit is contained in:
		
							parent
							
								
									07b40105c2
								
							
						
					
					
						commit
						efcb7a305b
					
				
					 1 changed files with 20 additions and 33 deletions
				
			
		|  | @ -55,9 +55,12 @@ impl ServerState { | ||||||
|             None => error!("Failed to create default user..."), |             None => error!("Failed to create default user..."), | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         // We want dummy posts
 | ||||||
|  |         lipsum_setup(&pool).await.unwrap(); | ||||||
|  | 
 | ||||||
|         #[cfg(debug_assertions)] |         #[cfg(debug_assertions)] | ||||||
|         debug_setup(&pool).await.unwrap(); |         debug_setup(&pool).await.unwrap(); | ||||||
|         lipsum_setup(&pool).await.unwrap(); | 
 | ||||||
|         Self { pool } |         Self { pool } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -66,48 +69,18 @@ impl ServerState { | ||||||
| // Mostly useful for debugging new posts, as we need to satisfy foreign key constraints.
 | // Mostly useful for debugging new posts, as we need to satisfy foreign key constraints.
 | ||||||
| #[cfg(debug_assertions)] | #[cfg(debug_assertions)] | ||||||
| async fn debug_setup(pool: &PgPool) -> Result<(), sqlx::Error> { | async fn debug_setup(pool: &PgPool) -> Result<(), sqlx::Error> { | ||||||
|     use lipsum::lipsum; |  | ||||||
|     use rand::prelude::*; |  | ||||||
|     use sqlx::query; |  | ||||||
| 
 |  | ||||||
|     use crate::db::db_new_user; |     use crate::db::db_new_user; | ||||||
| 
 |  | ||||||
|     db_new_user("user".to_string(), "pass".to_string(), pool).await; |     db_new_user("user".to_string(), "pass".to_string(), pool).await; | ||||||
| 
 |  | ||||||
|     // Check if the demo post already exists
 |  | ||||||
|     let no_posts = query!("SELECT * FROM posts WHERE id = 1",) |  | ||||||
|         .fetch_one(pool) |  | ||||||
|         .await |  | ||||||
|         .ok() |  | ||||||
|         .is_none(); |  | ||||||
| 
 |  | ||||||
|     // If the demo user already has a post, don't insert another one
 |  | ||||||
|     if no_posts { |  | ||||||
|         let mut rng = rand::thread_rng(); |  | ||||||
| 
 |  | ||||||
|         // This requires that the user with id 1 exists in the user table
 |  | ||||||
|         for _ in 0..100 { |  | ||||||
|             query!( |  | ||||||
|                 "INSERT INTO posts (user_id, content) VALUES (1, $1)", |  | ||||||
|                 lipsum(rng.gen_range(10..100)) |  | ||||||
|             ) |  | ||||||
|             .execute(pool) |  | ||||||
|             .await?; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         query!("INSERT INTO posts (user_id, content) VALUES (1, 'Hello world! The demo username is user and the password is pass.')",) |  | ||||||
|         .execute(pool) |  | ||||||
|         .await?; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     Ok(()) |     Ok(()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /// Inserts a bunch of dummy posts into the database
 | ||||||
| async fn lipsum_setup(pool: &PgPool) -> Result<(), sqlx::Error> { | async fn lipsum_setup(pool: &PgPool) -> Result<(), sqlx::Error> { | ||||||
|     use lipsum::lipsum; |     use lipsum::lipsum; | ||||||
|     use rand::prelude::*; |     use rand::prelude::*; | ||||||
|     use sqlx::query; |     use sqlx::query; | ||||||
| 
 | 
 | ||||||
|  |     // Fetch any user
 | ||||||
|     let user_exist = query!("SELECT * FROM users",) |     let user_exist = query!("SELECT * FROM users",) | ||||||
|         .fetch_one(pool) |         .fetch_one(pool) | ||||||
|         .await |         .await | ||||||
|  | @ -117,6 +90,7 @@ async fn lipsum_setup(pool: &PgPool) -> Result<(), sqlx::Error> { | ||||||
|     if user_exist { |     if user_exist { | ||||||
|         let mut rng = rand::thread_rng(); |         let mut rng = rand::thread_rng(); | ||||||
| 
 | 
 | ||||||
|  |         // Insert a 100 dummy posts.
 | ||||||
|         // This requires that the user with id 1 exists in the user table
 |         // This requires that the user with id 1 exists in the user table
 | ||||||
|         for _ in 0..100 { |         for _ in 0..100 { | ||||||
|             query!( |             query!( | ||||||
|  | @ -130,3 +104,16 @@ async fn lipsum_setup(pool: &PgPool) -> Result<(), sqlx::Error> { | ||||||
| 
 | 
 | ||||||
|     Ok(()) |     Ok(()) | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | #[cfg(test)] | ||||||
|  | mod tests { | ||||||
|  |     use super::*; | ||||||
|  | 
 | ||||||
|  |     #[test] | ||||||
|  |     fn test_server_state() { | ||||||
|  |         let state = CaptchaState::new(); | ||||||
|  |         assert!(state.capthca_db.lock().unwrap().is_empty()); | ||||||
|  |         state.capthca_db.lock().unwrap().insert("test".to_string()); | ||||||
|  |         assert!(!state.capthca_db.lock().unwrap().is_empty()); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Imbus
						Imbus