Skip to content

Commit 40604b3

Browse files
committed
Add integration test for nonexistent job and task
1 parent cff363e commit 40604b3

File tree

4 files changed

+63
-8
lines changed

4 files changed

+63
-8
lines changed

tests/integration/cli.rs

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ use crate::helpers::{
22
config::create_test_config,
33
maconomy_mock::{
44
mock_add_row, mock_get_instance, mock_get_table_rows, mock_job_number_search,
5-
mock_set_hours, mock_set_week, mock_tasks_search,
5+
mock_set_hours, mock_set_week, mock_tasks_search, MACONOMY_CONCURRENCY_CONTROL,
66
},
77
};
88
use assert_cmd::Command;
99
use std::{env, ffi};
10+
use uuid::Uuid;
1011
use wiremock::MockServer;
1112

1213
fn run_json(
@@ -88,17 +89,35 @@ async fn set_hours() {
8889

8990
#[tokio::main]
9091
#[test]
91-
async fn set_hours_err() {
92+
async fn set_hours_on_nonexistent_job() {
9293
// Given
9394
let mock_server = MockServer::start().await;
9495
mock_get_instance(None).mount(&mock_server).await;
9596
mock_get_table_rows(None).mount(&mock_server).await;
9697
mock_set_week(None).mount(&mock_server).await;
97-
mock_job_number_search(None).mount(&mock_server).await;
9898
mock_tasks_search(None).mount(&mock_server).await;
9999
mock_add_row(None).mount(&mock_server).await;
100100
create_test_config();
101101

102+
let response = wiremock::ResponseTemplate::new(200)
103+
.append_header(MACONOMY_CONCURRENCY_CONTROL, Uuid::new_v4().to_string())
104+
.set_body_json(serde_json::json!({
105+
"panes": {
106+
"filter": {
107+
"meta": {
108+
"paneName": "filter",
109+
"rowCount": 25,
110+
"rowOffset": 0
111+
},
112+
"records": []
113+
}
114+
}
115+
}));
116+
117+
mock_job_number_search(Some(response))
118+
.mount(&mock_server)
119+
.await;
120+
102121
// When
103122
let command = [
104123
"set",
@@ -118,3 +137,36 @@ async fn set_hours_err() {
118137
.stderr(assert_snapshot_predicate())
119138
.failure();
120139
}
140+
141+
#[tokio::main]
142+
#[test]
143+
async fn set_hours_on_nonexistent_task() {
144+
// Given
145+
let mock_server = MockServer::start().await;
146+
mock_get_instance(None).mount(&mock_server).await;
147+
mock_get_table_rows(None).mount(&mock_server).await;
148+
mock_set_week(None).mount(&mock_server).await;
149+
mock_job_number_search(None).mount(&mock_server).await;
150+
mock_tasks_search(None).mount(&mock_server).await;
151+
mock_add_row(None).mount(&mock_server).await;
152+
create_test_config();
153+
154+
// When
155+
let command = [
156+
"set",
157+
"8",
158+
"--job",
159+
"job one",
160+
"--task",
161+
"some task four",
162+
"--week",
163+
"42",
164+
];
165+
let mut output = run(command, &mock_server.uri());
166+
167+
// Then
168+
output
169+
.assert()
170+
.stderr(assert_snapshot_predicate())
171+
.failure();
172+
}

tests/integration/helpers/maconomy_mock.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const COMPANY_REGEX: &str = "[a-z0-9]+";
99
const ROW_NUMBER_REGEX: &str = r"\d+";
1010

1111
// Headers
12-
const MACONOMY_CONCURRENCY_CONTROL: &str = "Maconomy-Concurrency-Control";
12+
pub(crate) const MACONOMY_CONCURRENCY_CONTROL: &str = "Maconomy-Concurrency-Control";
1313

1414
fn create_mock(
1515
path: &str,
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
source: tests/integration/cli.rs
3+
expression: output
4+
snapshot_kind: text
5+
---
6+
Task 'some task four' not found

tests/integration/snapshots/integration__cli__assert_snapshot_predicate.snap

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,4 @@ source: tests/integration/cli.rs
33
expression: output
44
snapshot_kind: text
55
---
6-
Something went wrong when adding a new line to the time sheet: did not find job 'doesn't exist' and task 'some task one', even after creating a new line for it
7-
8-
Error stack:
9-
- did not find job 'doesn't exist' and task 'some task one', even after creating a new line for it
6+
Job 'doesn't exist' not found

0 commit comments

Comments
 (0)