Skip to content

Commit cf1be8b

Browse files
committed
Extract build schema into function in tests
1 parent 5d0582c commit cf1be8b

File tree

1 file changed

+28
-56
lines changed

1 file changed

+28
-56
lines changed

src/model.rs

Lines changed: 28 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,29 @@ mod tests {
2929
use crate::TiledQuery;
3030
use crate::clients::TiledClient;
3131

32+
fn build_schema(url: &str) -> Schema<TiledQuery, EmptyMutation, EmptySubscription> {
33+
Schema::build(
34+
TiledQuery(TiledClient {
35+
address: Url::parse(url).unwrap(),
36+
}),
37+
EmptyMutation,
38+
EmptySubscription,
39+
)
40+
.finish()
41+
}
42+
3243
#[tokio::test]
3344
async fn test_api_version_query() {
34-
let mock_server = MockServer::start();
35-
let mock = mock_server
45+
let server = MockServer::start();
46+
let mock = server
3647
.mock_async(|when, then| {
3748
when.method("GET").path("/api/v1/");
3849
then.status(200)
3950
.body_from_file("resources/tiled_metadata.json");
4051
})
4152
.await;
4253

43-
let schema = Schema::build(
44-
TiledQuery(TiledClient {
45-
address: Url::parse(&mock_server.base_url()).unwrap(),
46-
}),
47-
EmptyMutation,
48-
EmptySubscription,
49-
)
50-
.finish();
51-
54+
let schema = build_schema(&server.base_url());
5255
let response = schema.execute("{appMetadata { apiVersion } }").await;
5356

5457
assert_eq!(response.data, value! {{"appMetadata": {"apiVersion": 0}}});
@@ -58,16 +61,9 @@ mod tests {
5861

5962
#[tokio::test]
6063
async fn test_server_unavailable() {
61-
let schema = Schema::build(
62-
TiledQuery(TiledClient {
63-
address: Url::parse("http://tiled.example.com").unwrap(),
64-
}),
65-
EmptyMutation,
66-
EmptySubscription,
67-
)
68-
.finish();
69-
64+
let schema = build_schema("http://tiled.example.com");
7065
let response = schema.execute("{appMetadata { apiVersion } }").await;
66+
7167
assert_eq!(response.data, Value::Null);
7268
assert_eq!(
7369
response.errors[0].message,
@@ -78,27 +74,20 @@ mod tests {
7874

7975
#[tokio::test]
8076
async fn test_internal_tiled_error() {
81-
let mock_server = MockServer::start();
82-
let mock = mock_server
77+
let server = MockServer::start();
78+
let mock = server
8379
.mock_async(|when, then| {
8480
when.method("GET").path("/api/v1/");
8581
then.status(503);
8682
})
8783
.await;
8884

89-
let schema = Schema::build(
90-
TiledQuery(TiledClient {
91-
address: Url::parse(&mock_server.base_url()).unwrap(),
92-
}),
93-
EmptyMutation,
94-
EmptySubscription,
95-
)
96-
.finish();
97-
85+
let schema = build_schema(&server.base_url());
9886
let response = schema.execute("{appMetadata { apiVersion } }").await;
9987
let actual = &response.errors[0].message;
10088
let expected =
10189
"Tiled server error: HTTP status server error (503 Service Unavailable) for url";
90+
10291
assert_eq!(response.data, Value::Null);
10392
assert!(
10493
actual.starts_with(expected),
@@ -110,24 +99,17 @@ mod tests {
11099

111100
#[tokio::test]
112101
async fn test_invalid_server_response() {
113-
let mock_server = MockServer::start();
114-
let mock = mock_server
102+
let server = MockServer::start();
103+
let mock = server
115104
.mock_async(|when, then| {
116105
when.method("GET").path("/api/v1/");
117106
then.status(200).body("{}");
118107
})
119108
.await;
120109

121-
let schema = Schema::build(
122-
TiledQuery(TiledClient {
123-
address: Url::parse(&mock_server.base_url()).unwrap(),
124-
}),
125-
EmptyMutation,
126-
EmptySubscription,
127-
)
128-
.finish();
129-
110+
let schema = build_schema(&server.base_url());
130111
let response = schema.execute("{appMetadata { apiVersion } }").await;
112+
131113
assert_eq!(response.data, Value::Null);
132114
assert_eq!(response.errors.len(), 1);
133115
assert_eq!(
@@ -140,34 +122,24 @@ mod tests {
140122
#[tokio::test]
141123
async fn test_run_metadata_query() {
142124
let id = Uuid::parse_str("5d8f5c3e-0e00-4c5c-816d-70b4b0f41498").unwrap();
143-
let mock_server = MockServer::start();
144-
let mock = mock_server
125+
let server = MockServer::start();
126+
let mock = server
145127
.mock_async(|when, then| {
146128
when.method("GET").path(format!("/api/v1/metadata/{id}"));
147129
then.status(200)
148130
.body_from_file("resources/run_metadata.json");
149131
})
150132
.await;
151133

152-
let schema = Schema::build(
153-
TiledQuery(TiledClient {
154-
address: Url::parse(&mock_server.base_url()).unwrap(),
155-
}),
156-
EmptyMutation,
157-
EmptySubscription,
158-
)
159-
.finish();
160-
134+
let schema = build_schema(&server.base_url());
161135
let query = r#"{ runMetadata(id: "5d8f5c3e-0e00-4c5c-816d-70b4b0f41498") {data {id}}}"#;
162-
163136
let response = schema.execute(query).await;
164-
165137
let exp = value! ({
166138
"runMetadata": { "data": {"id": "5d8f5c3e-0e00-4c5c-816d-70b4b0f41498"}}
167139
});
168140

169-
mock.assert();
170141
assert_eq!(response.data, exp);
171142
assert_eq!(response.errors, &[]);
143+
mock.assert();
172144
}
173145
}

0 commit comments

Comments
 (0)