Skip to content

Commit 6188b10

Browse files
committed
refactor: extract mod sqlite_v1_0_0 in tests
1 parent 44927e5 commit 6188b10

File tree

3 files changed

+58
-39
lines changed

3 files changed

+58
-39
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
pub mod tests;
1+
pub mod sqlite_v1_0_0;
2+
pub mod tests;
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
use sqlx::sqlite::SqlitePoolOptions;
2+
use sqlx::SqlitePool;
3+
use std::fs;
4+
5+
pub struct SqliteDatabaseV1_0_0 {
6+
pub pool: SqlitePool,
7+
}
8+
9+
impl SqliteDatabaseV1_0_0 {
10+
pub async fn db_connection(source_database_file: &str) -> Self {
11+
let source_database_connect_url = format!("sqlite://{}?mode=rwc", source_database_file);
12+
SqliteDatabaseV1_0_0::new(&source_database_connect_url).await
13+
}
14+
15+
pub async fn new(database_url: &str) -> Self {
16+
let db = SqlitePoolOptions::new()
17+
.connect(database_url)
18+
.await
19+
.expect("Unable to create database pool.");
20+
Self { pool: db }
21+
}
22+
23+
/// Execute migrations for database in version v1.0.0
24+
pub async fn migrate(&self, fixtures_dir: &str) {
25+
let migrations_dir = format!("{}database/v1.0.0/migrations/", fixtures_dir);
26+
27+
let migrations = vec![
28+
"20210831113004_torrust_users.sql",
29+
"20210904135524_torrust_tracker_keys.sql",
30+
"20210905160623_torrust_categories.sql",
31+
"20210907083424_torrust_torrent_files.sql",
32+
"20211208143338_torrust_users.sql",
33+
"20220308083424_torrust_torrents.sql",
34+
"20220308170028_torrust_categories.sql",
35+
];
36+
37+
for migration_file_name in &migrations {
38+
let migration_file_path = format!("{}{}", &migrations_dir, &migration_file_name);
39+
self.run_migration_from_file(&migration_file_path).await;
40+
}
41+
}
42+
43+
async fn run_migration_from_file(&self, migration_file_path: &str) {
44+
println!("Executing migration: {:?}", migration_file_path);
45+
46+
let sql = fs::read_to_string(migration_file_path)
47+
.expect("Should have been able to read the file");
48+
49+
let res = sqlx::query(&sql).execute(&self.pool).await;
50+
51+
println!("Migration result {:?}", res);
52+
}
53+
}

tests/upgrades/from_v1_0_0_to_v2_0_0/tests.rs

Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
//! ```text
44
//! cargo test upgrade_data_from_version_v1_0_0_to_v2_0_0 -- --nocapture
55
//! ```
6+
use crate::upgrades::from_v1_0_0_to_v2_0_0::sqlite_v1_0_0::SqliteDatabaseV1_0_0;
67
use std::fs;
78
use std::sync::Arc;
8-
use torrust_index_backend::upgrades::from_v1_0_0_to_v2_0_0::databases::sqlite_v1_0_0::SqliteDatabaseV1_0_0;
99
use torrust_index_backend::upgrades::from_v1_0_0_to_v2_0_0::upgrader::{upgrade, Arguments};
1010

1111
#[tokio::test]
@@ -26,7 +26,7 @@ async fn upgrade_data_from_version_v1_0_0_to_v2_0_0() {
2626

2727
let source_database = source_db_connection(&source_database_file).await;
2828

29-
migrate(source_database.clone(), &fixtures_dir).await;
29+
source_database.migrate(&fixtures_dir).await;
3030

3131
let args = Arguments {
3232
source_database_file,
@@ -38,40 +38,5 @@ async fn upgrade_data_from_version_v1_0_0_to_v2_0_0() {
3838
}
3939

4040
async fn source_db_connection(source_database_file: &str) -> Arc<SqliteDatabaseV1_0_0> {
41-
let source_database_connect_url = format!("sqlite://{}?mode=rwc", source_database_file);
42-
Arc::new(SqliteDatabaseV1_0_0::new(&source_database_connect_url).await)
43-
}
44-
45-
/// Execute migrations for database in version v1.0.0
46-
async fn migrate(source_database: Arc<SqliteDatabaseV1_0_0>, fixtures_dir: &str) {
47-
let migrations_dir = format!("{}database/v1.0.0/migrations/", fixtures_dir);
48-
49-
let migrations = vec![
50-
"20210831113004_torrust_users.sql",
51-
"20210904135524_torrust_tracker_keys.sql",
52-
"20210905160623_torrust_categories.sql",
53-
"20210907083424_torrust_torrent_files.sql",
54-
"20211208143338_torrust_users.sql",
55-
"20220308083424_torrust_torrents.sql",
56-
"20220308170028_torrust_categories.sql",
57-
];
58-
59-
for migration_file_name in &migrations {
60-
let migration_file_path = format!("{}{}", &migrations_dir, &migration_file_name);
61-
run_migration_from_file(source_database.clone(), &migration_file_path).await;
62-
}
63-
}
64-
65-
async fn run_migration_from_file(
66-
source_database: Arc<SqliteDatabaseV1_0_0>,
67-
migration_file_path: &str,
68-
) {
69-
println!("Executing migration: {:?}", migration_file_path);
70-
71-
let sql =
72-
fs::read_to_string(migration_file_path).expect("Should have been able to read the file");
73-
74-
let res = sqlx::query(&sql).execute(&source_database.pool).await;
75-
76-
println!("Migration result {:?}", res);
41+
Arc::new(SqliteDatabaseV1_0_0::db_connection(&source_database_file).await)
7742
}

0 commit comments

Comments
 (0)