Skip to content

Commit

Permalink
Add integration test for nonexistent job and task
Browse files Browse the repository at this point in the history
  • Loading branch information
mawkler committed Nov 25, 2024
1 parent cff363e commit 40604b3
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 8 deletions.
58 changes: 55 additions & 3 deletions tests/integration/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ use crate::helpers::{
config::create_test_config,
maconomy_mock::{
mock_add_row, mock_get_instance, mock_get_table_rows, mock_job_number_search,
mock_set_hours, mock_set_week, mock_tasks_search,
mock_set_hours, mock_set_week, mock_tasks_search, MACONOMY_CONCURRENCY_CONTROL,
},
};
use assert_cmd::Command;
use std::{env, ffi};
use uuid::Uuid;
use wiremock::MockServer;

fn run_json(
Expand Down Expand Up @@ -88,17 +89,35 @@ async fn set_hours() {

#[tokio::main]
#[test]
async fn set_hours_err() {
async fn set_hours_on_nonexistent_job() {
// Given
let mock_server = MockServer::start().await;
mock_get_instance(None).mount(&mock_server).await;
mock_get_table_rows(None).mount(&mock_server).await;
mock_set_week(None).mount(&mock_server).await;
mock_job_number_search(None).mount(&mock_server).await;
mock_tasks_search(None).mount(&mock_server).await;
mock_add_row(None).mount(&mock_server).await;
create_test_config();

let response = wiremock::ResponseTemplate::new(200)
.append_header(MACONOMY_CONCURRENCY_CONTROL, Uuid::new_v4().to_string())
.set_body_json(serde_json::json!({
"panes": {
"filter": {
"meta": {
"paneName": "filter",
"rowCount": 25,
"rowOffset": 0
},
"records": []
}
}
}));

mock_job_number_search(Some(response))
.mount(&mock_server)
.await;

// When
let command = [
"set",
Expand All @@ -118,3 +137,36 @@ async fn set_hours_err() {
.stderr(assert_snapshot_predicate())
.failure();
}

#[tokio::main]
#[test]
async fn set_hours_on_nonexistent_task() {
// Given
let mock_server = MockServer::start().await;
mock_get_instance(None).mount(&mock_server).await;
mock_get_table_rows(None).mount(&mock_server).await;
mock_set_week(None).mount(&mock_server).await;
mock_job_number_search(None).mount(&mock_server).await;
mock_tasks_search(None).mount(&mock_server).await;
mock_add_row(None).mount(&mock_server).await;
create_test_config();

// When
let command = [
"set",
"8",
"--job",
"job one",
"--task",
"some task four",
"--week",
"42",
];
let mut output = run(command, &mock_server.uri());

// Then
output
.assert()
.stderr(assert_snapshot_predicate())
.failure();
}
2 changes: 1 addition & 1 deletion tests/integration/helpers/maconomy_mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const COMPANY_REGEX: &str = "[a-z0-9]+";
const ROW_NUMBER_REGEX: &str = r"\d+";

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

fn create_mock(
path: &str,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
source: tests/integration/cli.rs
expression: output
snapshot_kind: text
---
Task 'some task four' not found
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,4 @@ source: tests/integration/cli.rs
expression: output
snapshot_kind: text
---
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

Error stack:
- did not find job 'doesn't exist' and task 'some task one', even after creating a new line for it
Job 'doesn't exist' not found

0 comments on commit 40604b3

Please sign in to comment.