Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
GetConfig needs to be a string, not a string[] (#2120)
- Loading branch information
Julius de Bruijn
committed
Aug 3, 2021
1 parent
10a1bec
commit 7a25b4c
Showing
3 changed files
with
86 additions
and
84 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,98 +1,100 @@ | ||
use crate::common::parse_configuration; | ||
use pretty_assertions::assert_eq; | ||
use crate::common::*; | ||
use indoc::indoc; | ||
|
||
#[test] | ||
fn serialize_builtin_sources_to_dmmf() { | ||
std::env::set_var("pg2", "postgresql://localhost/postgres2"); | ||
|
||
let schema1 = r#"datasource pg1 { | ||
let schema = indoc! { r#" | ||
datasource pg1 { | ||
provider = "postgresql" | ||
url = "postgresql://localhost/postgres1" | ||
}"#; | ||
|
||
let expected_dmmf_1 = r#"[ | ||
{ | ||
"name": "pg1", | ||
"provider": ["postgresql"], | ||
"activeProvider": "postgresql", | ||
"url": { | ||
"fromEnvVar": null, | ||
"value": "postgresql://localhost/postgres1" | ||
} | ||
} | ||
]"#; | ||
|
||
assert_rendered_mcf(schema1, expected_dmmf_1); | ||
|
||
let schema2 = r#"datasource pg2 { | ||
} | ||
"#}; | ||
|
||
let expect = expect![[r#" | ||
[ | ||
{ | ||
"name": "pg1", | ||
"provider": "postgresql", | ||
"activeProvider": "postgresql", | ||
"url": { | ||
"fromEnvVar": null, | ||
"value": "postgresql://localhost/postgres1" | ||
} | ||
} | ||
]"#]]; | ||
|
||
expect.assert_eq(&render_schema_json(schema)); | ||
|
||
let schema = indoc! {r#" | ||
datasource pg2 { | ||
provider = "postgresql" | ||
url = env("pg2") | ||
}"#; | ||
|
||
let expected_dmmf_2 = r#"[ | ||
{ | ||
"name": "pg2", | ||
"provider": ["postgresql"], | ||
"activeProvider": "postgresql", | ||
"url": { | ||
"fromEnvVar": "pg2", | ||
"value": null | ||
} | ||
} | ||
]"#; | ||
|
||
assert_rendered_mcf(schema2, expected_dmmf_2); | ||
|
||
let schema3 = r#"datasource sqlite1 { | ||
} | ||
"#}; | ||
|
||
let expect = expect![[r#" | ||
[ | ||
{ | ||
"name": "pg2", | ||
"provider": "postgresql", | ||
"activeProvider": "postgresql", | ||
"url": { | ||
"fromEnvVar": "pg2", | ||
"value": null | ||
} | ||
} | ||
]"#]]; | ||
|
||
expect.assert_eq(&render_schema_json(schema)); | ||
|
||
let schema = indoc! {r#" | ||
datasource sqlite1 { | ||
provider = "sqlite" | ||
url = "sqlite://file.db" | ||
}"#; | ||
|
||
let expected_dmmf_3 = r#"[ | ||
{ | ||
"name": "sqlite1", | ||
"provider": ["sqlite"], | ||
"activeProvider": "sqlite", | ||
"url": { | ||
"fromEnvVar": null, | ||
"value": "sqlite://file.db" | ||
} | ||
} | ||
]"#; | ||
|
||
assert_rendered_mcf(schema3, expected_dmmf_3); | ||
|
||
let schema4 = r#"datasource mysql1 { | ||
} | ||
"#}; | ||
|
||
let expect = expect![[r#" | ||
[ | ||
{ | ||
"name": "sqlite1", | ||
"provider": "sqlite", | ||
"activeProvider": "sqlite", | ||
"url": { | ||
"fromEnvVar": null, | ||
"value": "sqlite://file.db" | ||
} | ||
} | ||
]"#]]; | ||
|
||
expect.assert_eq(&render_schema_json(schema)); | ||
|
||
let schema = indoc! {r#" | ||
datasource mysql1 { | ||
provider = "mysql" | ||
url = "mysql://localhost" | ||
}"#; | ||
let expected_dmmf_4 = r#"[ | ||
{ | ||
"name": "mysql1", | ||
"provider": ["mysql"], | ||
"activeProvider": "mysql", | ||
"url": { | ||
"fromEnvVar": null, | ||
"value": "mysql://localhost" | ||
} | ||
} | ||
]"#; | ||
|
||
assert_rendered_mcf(schema4, expected_dmmf_4); | ||
} | ||
"#}; | ||
|
||
let expect = expect![[r#" | ||
[ | ||
{ | ||
"name": "mysql1", | ||
"provider": "mysql", | ||
"activeProvider": "mysql", | ||
"url": { | ||
"fromEnvVar": null, | ||
"value": "mysql://localhost" | ||
} | ||
} | ||
]"#]]; | ||
|
||
expect.assert_eq(&render_schema_json(schema)); | ||
} | ||
|
||
fn assert_rendered_mcf(schema: &str, expected_dmmf: &str) { | ||
fn render_schema_json(schema: &str) -> String { | ||
let config = parse_configuration(schema); | ||
let rendered = datamodel::json::mcf::render_sources_to_json(&config.datasources); | ||
|
||
print!("{}", &rendered); | ||
|
||
assert_eq_json(&rendered, expected_dmmf); | ||
} | ||
|
||
fn assert_eq_json(a: &str, b: &str) { | ||
let json_a: serde_json::Value = serde_json::from_str(a).expect("The String a was not valid JSON."); | ||
let json_b: serde_json::Value = serde_json::from_str(b).expect("The String b was not valid JSON."); | ||
|
||
assert_eq!(json_a, json_b); | ||
datamodel::json::mcf::render_sources_to_json(&config.datasources) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters