upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/tests/list.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-07-19 21:59:50 +0100
committerDanConwayDev <DanConwayDev@protonmail.com>2024-07-19 21:59:50 +0100
commitdde029b4f5988cfa830ebc36bee0f35c93bd2544 (patch)
treecd2362d202afcc5c4f388ac17390b42715a5eddc /tests/list.rs
parent55fd2693e314a87d32872cd74d3d563cd94201a2 (diff)
feat: integrate `fetch` into `list`
as part of a project to use fetch and the stored cache everywhere
Diffstat (limited to 'tests/list.rs')
-rw-r--r--tests/list.rs115
1 files changed, 43 insertions, 72 deletions
diff --git a/tests/list.rs b/tests/list.rs
index cd071a9..0005053 100644
--- a/tests/list.rs
+++ b/tests/list.rs
@@ -132,17 +132,10 @@ fn cli_tester_create_proposal(
132mod cannot_find_repo_event { 132mod cannot_find_repo_event {
133 use super::*; 133 use super::*;
134 mod cli_prompts { 134 mod cli_prompts {
135 use nostr::{ 135 use nostr::{nips::nip01::Coordinate, ToBech32};
136 nips::{nip01::Coordinate, nip19::Nip19Event},
137 ToBech32,
138 };
139 136
140 use super::*; 137 use super::*;
141 async fn run_async_repo_event_ref_needed( 138 async fn run_async_repo_event_ref_needed(invalid_input: bool, naddr: bool) -> Result<()> {
142 invalid_input: bool,
143 nevent: bool,
144 naddr: bool,
145 ) -> Result<()> {
146 let (mut r51, mut r52, mut r53, mut r55, mut r56) = ( 139 let (mut r51, mut r52, mut r53, mut r55, mut r56) = (
147 Relay::new(8051, None, None), 140 Relay::new(8051, None, None),
148 Relay::new(8052, None, None), 141 Relay::new(8052, None, None),
@@ -161,35 +154,19 @@ mod cannot_find_repo_event {
161 r56.events.push(repo_event.clone()); 154 r56.events.push(repo_event.clone());
162 155
163 let cli_tester_handle = std::thread::spawn(move || -> Result<()> { 156 let cli_tester_handle = std::thread::spawn(move || -> Result<()> {
164 let test_repo = GitTestRepo::default(); 157 let test_repo = GitTestRepo::without_repo_in_git_config();
165 test_repo.populate()?; 158 test_repo.populate()?;
166 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); 159 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]);
167 160
168 p.expect("cannot find repo event\r\n")?;
169
170 if invalid_input { 161 if invalid_input {
171 let mut input = p.expect_input("repository naddr or nevent")?; 162 let mut input = p.expect_input("repository naddr")?;
172 input.succeeds_with("dfgvfvfzadvd")?; 163 input.succeeds_with("dfgvfvfzadvd")?;
173 p.expect("not a valid nevent or naddr\r\n")?; 164 p.expect("not a valid naddr\r\n")?;
174 let _ = p.expect_input("repository naddr or nevent")?; 165 let _ = p.expect_input("repository naddr")?;
175 p.exit()?; 166 p.exit()?;
176 } 167 }
177 if nevent {
178 let mut input = p.expect_input("repository naddr or nevent")?;
179 input.succeeds_with(
180 &Nip19Event {
181 event_id: repo_event.id,
182 author: Some(TEST_KEY_1_KEYS.public_key()),
183 relays: vec!["ws://localhost:8056".to_string()],
184 kind: None,
185 }
186 .to_bech32()?,
187 )?;
188 p.expect("finding proposals...\r\n")?;
189 p.expect_end_with("no proposals found... create one? try `ngit send`\r\n")?;
190 }
191 if naddr { 168 if naddr {
192 let mut input = p.expect_input("repository naddr or nevent")?; 169 let mut input = p.expect_input("repository naddr")?;
193 input.succeeds_with( 170 input.succeeds_with(
194 &Coordinate { 171 &Coordinate {
195 kind: nostr::Kind::Custom(REPOSITORY_KIND), 172 kind: nostr::Kind::Custom(REPOSITORY_KIND),
@@ -199,9 +176,9 @@ mod cannot_find_repo_event {
199 } 176 }
200 .to_bech32()?, 177 .to_bech32()?,
201 )?; 178 )?;
202 p.expect("finding proposals...\r\n")?; 179 p.expect("fetching updates...\r\n")?;
180 p.expect_eventually("\r\n")?; // some updates listed here
203 p.expect_end_with("no proposals found... create one? try `ngit send`\r\n")?; 181 p.expect_end_with("no proposals found... create one? try `ngit send`\r\n")?;
204 p.expect_end_eventually()?;
205 } 182 }
206 183
207 for p in [51, 52, 53, 55, 56] { 184 for p in [51, 52, 53, 55, 56] {
@@ -225,19 +202,13 @@ mod cannot_find_repo_event {
225 #[tokio::test] 202 #[tokio::test]
226 #[serial] 203 #[serial]
227 async fn warns_not_valid_input_and_asks_again() -> Result<()> { 204 async fn warns_not_valid_input_and_asks_again() -> Result<()> {
228 run_async_repo_event_ref_needed(true, false, false).await 205 run_async_repo_event_ref_needed(true, false).await
229 }
230
231 #[tokio::test]
232 #[serial]
233 async fn finds_based_on_nevent_on_embeded_relay() -> Result<()> {
234 run_async_repo_event_ref_needed(false, true, false).await
235 } 206 }
236 207
237 #[tokio::test] 208 #[tokio::test]
238 #[serial] 209 #[serial]
239 async fn finds_based_on_naddr_on_embeded_relay() -> Result<()> { 210 async fn finds_based_on_naddr_on_embeded_relay() -> Result<()> {
240 run_async_repo_event_ref_needed(false, false, true).await 211 run_async_repo_event_ref_needed(false, true).await
241 } 212 }
242 } 213 }
243} 214}
@@ -281,7 +252,8 @@ mod when_main_branch_is_uptodate {
281 test_repo.populate()?; 252 test_repo.populate()?;
282 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); 253 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]);
283 254
284 p.expect("finding proposals...\r\n")?; 255 p.expect("fetching updates...\r\n")?;
256 p.expect_eventually("\r\n")?; // some updates listed here
285 let mut c = p.expect_choice( 257 let mut c = p.expect_choice(
286 "all proposals", 258 "all proposals",
287 vec![ 259 vec![
@@ -292,7 +264,6 @@ mod when_main_branch_is_uptodate {
292 )?; 264 )?;
293 c.succeeds_with(2, true, None)?; 265 c.succeeds_with(2, true, None)?;
294 266
295 p.expect("finding commits...\r\n")?;
296 let mut c = p.expect_choice( 267 let mut c = p.expect_choice(
297 "", 268 "",
298 vec![ 269 vec![
@@ -356,7 +327,8 @@ mod when_main_branch_is_uptodate {
356 test_repo.populate()?; 327 test_repo.populate()?;
357 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); 328 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]);
358 329
359 p.expect("finding proposals...\r\n")?; 330 p.expect("fetching updates...\r\n")?;
331 p.expect_eventually("\r\n")?; // some updates listed here
360 let mut c = p.expect_choice( 332 let mut c = p.expect_choice(
361 "all proposals", 333 "all proposals",
362 vec![ 334 vec![
@@ -366,7 +338,6 @@ mod when_main_branch_is_uptodate {
366 ], 338 ],
367 )?; 339 )?;
368 c.succeeds_with(2, true, None)?; 340 c.succeeds_with(2, true, None)?;
369 p.expect("finding commits...\r\n")?;
370 let mut c = p.expect_choice( 341 let mut c = p.expect_choice(
371 "", 342 "",
372 vec![ 343 vec![
@@ -465,7 +436,8 @@ mod when_main_branch_is_uptodate {
465 test_repo.populate()?; 436 test_repo.populate()?;
466 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); 437 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]);
467 438
468 p.expect("finding proposals...\r\n")?; 439 p.expect("fetching updates...\r\n")?;
440 p.expect_eventually("\r\n")?; // some updates listed here
469 let mut c = p.expect_choice( 441 let mut c = p.expect_choice(
470 "all proposals", 442 "all proposals",
471 vec![ 443 vec![
@@ -476,7 +448,6 @@ mod when_main_branch_is_uptodate {
476 )?; 448 )?;
477 c.succeeds_with(0, true, None)?; 449 c.succeeds_with(0, true, None)?;
478 450
479 p.expect("finding commits...\r\n")?;
480 let mut c = p.expect_choice( 451 let mut c = p.expect_choice(
481 "", 452 "",
482 vec![ 453 vec![
@@ -542,7 +513,8 @@ mod when_main_branch_is_uptodate {
542 test_repo.populate()?; 513 test_repo.populate()?;
543 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); 514 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]);
544 515
545 p.expect("finding proposals...\r\n")?; 516 p.expect("fetching updates...\r\n")?;
517 p.expect_eventually("\r\n")?; // some updates listed here
546 let mut c = p.expect_choice( 518 let mut c = p.expect_choice(
547 "all proposals", 519 "all proposals",
548 vec![ 520 vec![
@@ -552,7 +524,6 @@ mod when_main_branch_is_uptodate {
552 ], 524 ],
553 )?; 525 )?;
554 c.succeeds_with(0, true, None)?; 526 c.succeeds_with(0, true, None)?;
555 p.expect("finding commits...\r\n")?;
556 let mut c = p.expect_choice( 527 let mut c = p.expect_choice(
557 "", 528 "",
558 vec![ 529 vec![
@@ -657,7 +628,8 @@ mod when_main_branch_is_uptodate {
657 test_repo.populate()?; 628 test_repo.populate()?;
658 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); 629 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]);
659 630
660 p.expect("finding proposals...\r\n")?; 631 p.expect("fetching updates...\r\n")?;
632 p.expect_eventually("\r\n")?; // some updates listed here
661 let mut c = p.expect_choice( 633 let mut c = p.expect_choice(
662 "all proposals", 634 "all proposals",
663 vec![ 635 vec![
@@ -668,7 +640,6 @@ mod when_main_branch_is_uptodate {
668 ], 640 ],
669 )?; 641 )?;
670 c.succeeds_with(0, true, None)?; 642 c.succeeds_with(0, true, None)?;
671 p.expect("finding commits...\r\n")?;
672 let mut c = p.expect_choice( 643 let mut c = p.expect_choice(
673 "", 644 "",
674 vec![ 645 vec![
@@ -741,7 +712,8 @@ mod when_main_branch_is_uptodate {
741 test_repo.populate()?; 712 test_repo.populate()?;
742 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); 713 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]);
743 714
744 p.expect("finding proposals...\r\n")?; 715 p.expect("fetching updates...\r\n")?;
716 p.expect_eventually("\r\n")?; // some updates listed here
745 let mut c = p.expect_choice( 717 let mut c = p.expect_choice(
746 "all proposals", 718 "all proposals",
747 vec![ 719 vec![
@@ -752,7 +724,6 @@ mod when_main_branch_is_uptodate {
752 ], 724 ],
753 )?; 725 )?;
754 c.succeeds_with(0, true, None)?; 726 c.succeeds_with(0, true, None)?;
755 p.expect("finding commits...\r\n")?;
756 let mut c = p.expect_choice( 727 let mut c = p.expect_choice(
757 "", 728 "",
758 vec![ 729 vec![
@@ -866,7 +837,8 @@ mod when_main_branch_is_uptodate {
866 false, 837 false,
867 )?; 838 )?;
868 test_repo.checkout("main")?; 839 test_repo.checkout("main")?;
869 p.expect("finding proposals...\r\n")?; 840 p.expect("fetching updates...\r\n")?;
841 p.expect_eventually("\r\n")?; // some updates listed here
870 let mut c = p.expect_choice( 842 let mut c = p.expect_choice(
871 "all proposals", 843 "all proposals",
872 vec![ 844 vec![
@@ -876,7 +848,6 @@ mod when_main_branch_is_uptodate {
876 ], 848 ],
877 )?; 849 )?;
878 c.succeeds_with(2, true, None)?; 850 c.succeeds_with(2, true, None)?;
879 p.expect("finding commits...\r\n")?;
880 let mut c = p.expect_choice( 851 let mut c = p.expect_choice(
881 "", 852 "",
882 vec![ 853 vec![
@@ -948,7 +919,8 @@ mod when_main_branch_is_uptodate {
948 )?; 919 )?;
949 test_repo.checkout("main")?; 920 test_repo.checkout("main")?;
950 921
951 p.expect("finding proposals...\r\n")?; 922 p.expect("fetching updates...\r\n")?;
923 p.expect_eventually("\r\n")?; // some updates listed here
952 let mut c = p.expect_choice( 924 let mut c = p.expect_choice(
953 "all proposals", 925 "all proposals",
954 vec![ 926 vec![
@@ -958,7 +930,6 @@ mod when_main_branch_is_uptodate {
958 ], 930 ],
959 )?; 931 )?;
960 c.succeeds_with(2, true, None)?; 932 c.succeeds_with(2, true, None)?;
961 p.expect("finding commits...\r\n")?;
962 let mut c = p.expect_choice( 933 let mut c = p.expect_choice(
963 "", 934 "",
964 vec![ 935 vec![
@@ -1043,7 +1014,8 @@ mod when_main_branch_is_uptodate {
1043 )?; 1014 )?;
1044 test_repo.checkout("main")?; 1015 test_repo.checkout("main")?;
1045 1016
1046 p.expect("finding proposals...\r\n")?; 1017 p.expect("fetching updates...\r\n")?;
1018 p.expect_eventually("\r\n")?; // some updates listed here
1047 let mut c = p.expect_choice( 1019 let mut c = p.expect_choice(
1048 "all proposals", 1020 "all proposals",
1049 vec![ 1021 vec![
@@ -1053,7 +1025,6 @@ mod when_main_branch_is_uptodate {
1053 ], 1025 ],
1054 )?; 1026 )?;
1055 c.succeeds_with(2, true, None)?; 1027 c.succeeds_with(2, true, None)?;
1056 p.expect("finding commits...\r\n")?;
1057 let mut c = p.expect_choice( 1028 let mut c = p.expect_choice(
1058 "", 1029 "",
1059 vec![ 1030 vec![
@@ -1124,7 +1095,8 @@ mod when_main_branch_is_uptodate {
1124 )?; 1095 )?;
1125 test_repo.checkout("main")?; 1096 test_repo.checkout("main")?;
1126 1097
1127 p.expect("finding proposals...\r\n")?; 1098 p.expect("fetching updates...\r\n")?;
1099 p.expect_eventually("\r\n")?; // some updates listed here
1128 let mut c = p.expect_choice( 1100 let mut c = p.expect_choice(
1129 "all proposals", 1101 "all proposals",
1130 vec![ 1102 vec![
@@ -1134,7 +1106,6 @@ mod when_main_branch_is_uptodate {
1134 ], 1106 ],
1135 )?; 1107 )?;
1136 c.succeeds_with(2, true, None)?; 1108 c.succeeds_with(2, true, None)?;
1137 p.expect("finding commits...\r\n")?;
1138 let mut c = p.expect_choice( 1109 let mut c = p.expect_choice(
1139 "", 1110 "",
1140 vec![ 1111 vec![
@@ -1236,7 +1207,8 @@ mod when_main_branch_is_uptodate {
1236 )?; 1207 )?;
1237 1208
1238 test_repo.checkout("main")?; 1209 test_repo.checkout("main")?;
1239 p.expect("finding proposals...\r\n")?; 1210 p.expect("fetching updates...\r\n")?;
1211 p.expect_eventually("\r\n")?; // some updates listed here
1240 let mut c = p.expect_choice( 1212 let mut c = p.expect_choice(
1241 "all proposals", 1213 "all proposals",
1242 vec![ 1214 vec![
@@ -1246,7 +1218,6 @@ mod when_main_branch_is_uptodate {
1246 ], 1218 ],
1247 )?; 1219 )?;
1248 c.succeeds_with(2, true, None)?; 1220 c.succeeds_with(2, true, None)?;
1249 p.expect("finding commits...\r\n")?;
1250 p.expect_eventually("--force`\r\n")?; 1221 p.expect_eventually("--force`\r\n")?;
1251 1222
1252 let mut c = p.expect_choice( 1223 let mut c = p.expect_choice(
@@ -1329,7 +1300,8 @@ mod when_main_branch_is_uptodate {
1329 )?; 1300 )?;
1330 1301
1331 test_repo.checkout("main")?; 1302 test_repo.checkout("main")?;
1332 p.expect("finding proposals...\r\n")?; 1303 p.expect("fetching updates...\r\n")?;
1304 p.expect_eventually("\r\n")?; // some updates listed here
1333 let mut c = p.expect_choice( 1305 let mut c = p.expect_choice(
1334 "all proposals", 1306 "all proposals",
1335 vec![ 1307 vec![
@@ -1339,7 +1311,6 @@ mod when_main_branch_is_uptodate {
1339 ], 1311 ],
1340 )?; 1312 )?;
1341 c.succeeds_with(2, true, None)?; 1313 c.succeeds_with(2, true, None)?;
1342 p.expect("finding commits...\r\n")?;
1343 p.expect("you have an amended/rebase version the proposal that is unpublished\r\n")?; 1314 p.expect("you have an amended/rebase version the proposal that is unpublished\r\n")?;
1344 p.expect("you have previously applied the latest version of the proposal (2 ahead 0 behind 'main') but your local proposal branch has amended or rebased it (2 ahead 0 behind 'main')\r\n")?; 1315 p.expect("you have previously applied the latest version of the proposal (2 ahead 0 behind 'main') but your local proposal branch has amended or rebased it (2 ahead 0 behind 'main')\r\n")?;
1345 p.expect("to view the latest proposal but retain your changes:\r\n")?; 1316 p.expect("to view the latest proposal but retain your changes:\r\n")?;
@@ -1435,7 +1406,8 @@ mod when_main_branch_is_uptodate {
1435 test_repo.stage_and_commit("appended commit")?; 1406 test_repo.stage_and_commit("appended commit")?;
1436 1407
1437 test_repo.checkout("main")?; 1408 test_repo.checkout("main")?;
1438 p.expect("finding proposals...\r\n")?; 1409 p.expect("fetching updates...\r\n")?;
1410 p.expect_eventually("\r\n")?; // some updates listed here
1439 let mut c = p.expect_choice( 1411 let mut c = p.expect_choice(
1440 "all proposals", 1412 "all proposals",
1441 vec![ 1413 vec![
@@ -1445,7 +1417,6 @@ mod when_main_branch_is_uptodate {
1445 ], 1417 ],
1446 )?; 1418 )?;
1447 c.succeeds_with(2, true, None)?; 1419 c.succeeds_with(2, true, None)?;
1448 p.expect("finding commits...\r\n")?;
1449 p.expect( 1420 p.expect(
1450 "local proposal branch exists with 1 unpublished commits on top of the most up-to-date version of the proposal (3 ahead 0 behind 'main')\r\n", 1421 "local proposal branch exists with 1 unpublished commits on top of the most up-to-date version of the proposal (3 ahead 0 behind 'main')\r\n",
1451 )?; 1422 )?;
@@ -1521,7 +1492,8 @@ mod when_main_branch_is_uptodate {
1521 test_repo.stage_and_commit("appended commit")?; 1492 test_repo.stage_and_commit("appended commit")?;
1522 1493
1523 test_repo.checkout("main")?; 1494 test_repo.checkout("main")?;
1524 p.expect("finding proposals...\r\n")?; 1495 p.expect("fetching updates...\r\n")?;
1496 p.expect_eventually("\r\n")?; // some updates listed here
1525 let mut c = p.expect_choice( 1497 let mut c = p.expect_choice(
1526 "all proposals", 1498 "all proposals",
1527 vec![ 1499 vec![
@@ -1531,7 +1503,6 @@ mod when_main_branch_is_uptodate {
1531 ], 1503 ],
1532 )?; 1504 )?;
1533 c.succeeds_with(2, true, None)?; 1505 c.succeeds_with(2, true, None)?;
1534 p.expect("finding commits...\r\n")?;
1535 p.expect( 1506 p.expect(
1536 "local proposal branch exists with 1 unpublished commits on top of the most up-to-date version of the proposal (3 ahead 0 behind 'main')\r\n", 1507 "local proposal branch exists with 1 unpublished commits on top of the most up-to-date version of the proposal (3 ahead 0 behind 'main')\r\n",
1537 )?; 1508 )?;
@@ -1680,7 +1651,8 @@ mod when_main_branch_is_uptodate {
1680 test_repo.stage_and_commit("commit for rebasing on top of")?; 1651 test_repo.stage_and_commit("commit for rebasing on top of")?;
1681 1652
1682 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); 1653 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]);
1683 p.expect("finding proposals...\r\n")?; 1654 p.expect("fetching updates...\r\n")?;
1655 p.expect_eventually("\r\n")?; // some updates listed here
1684 let mut c = p.expect_choice( 1656 let mut c = p.expect_choice(
1685 "all proposals", 1657 "all proposals",
1686 vec![ 1658 vec![
@@ -1690,7 +1662,6 @@ mod when_main_branch_is_uptodate {
1690 ], 1662 ],
1691 )?; 1663 )?;
1692 c.succeeds_with(2, true, None)?; 1664 c.succeeds_with(2, true, None)?;
1693 p.expect("finding commits...\r\n")?;
1694 p.expect("updated proposal available (2 ahead 0 behind 'main'). existing version is 2 ahead 1 behind 'main'\r\n")?; 1665 p.expect("updated proposal available (2 ahead 0 behind 'main'). existing version is 2 ahead 1 behind 'main'\r\n")?;
1695 let mut c = p.expect_choice( 1666 let mut c = p.expect_choice(
1696 "", 1667 "",
@@ -1814,7 +1785,8 @@ mod when_main_branch_is_uptodate {
1814 test_repo.stage_and_commit("commit for rebasing on top of")?; 1785 test_repo.stage_and_commit("commit for rebasing on top of")?;
1815 1786
1816 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); 1787 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]);
1817 p.expect("finding proposals...\r\n")?; 1788 p.expect("fetching updates...\r\n")?;
1789 p.expect_eventually("\r\n")?; // some updates listed here
1818 let mut c = p.expect_choice( 1790 let mut c = p.expect_choice(
1819 "all proposals", 1791 "all proposals",
1820 vec![ 1792 vec![
@@ -1824,7 +1796,6 @@ mod when_main_branch_is_uptodate {
1824 ], 1796 ],
1825 )?; 1797 )?;
1826 c.succeeds_with(2, true, None)?; 1798 c.succeeds_with(2, true, None)?;
1827 p.expect("finding commits...\r\n")?;
1828 p.expect("updated proposal available (2 ahead 0 behind 'main'). existing version is 2 ahead 1 behind 'main'\r\n")?; 1799 p.expect("updated proposal available (2 ahead 0 behind 'main'). existing version is 2 ahead 1 behind 'main'\r\n")?;
1829 let mut c = p.expect_choice( 1800 let mut c = p.expect_choice(
1830 "", 1801 "",