diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2024-02-14 16:44:56 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2024-02-14 16:44:56 +0000 |
| commit | 115eca3d69310a58e8357fe091183d0a8e723967 (patch) | |
| tree | 51860d62bdcde1d466d99134a41b767ac24eff52 /tests/list.rs | |
| parent | a1d67c50c8ebc5395b069e30b60d66e0c7de5a5a (diff) | |
feat: find repo event by nevent or naddr
if repo event cannot be found using unique commit the user can
find it via a nevent or naddr
also handle no PRs found
Diffstat (limited to 'tests/list.rs')
| -rw-r--r-- | tests/list.rs | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/tests/list.rs b/tests/list.rs index 0d1d4e9..4337d73 100644 --- a/tests/list.rs +++ b/tests/list.rs | |||
| @@ -103,6 +103,120 @@ fn cli_tester_create_pr( | |||
| 103 | Ok(()) | 103 | Ok(()) |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | mod cannot_find_repo_event { | ||
| 107 | use super::*; | ||
| 108 | mod cli_prompts { | ||
| 109 | use nostr::{ | ||
| 110 | nips::{nip01::Coordinate, nip19::Nip19Event}, | ||
| 111 | ToBech32, | ||
| 112 | }; | ||
| 113 | |||
| 114 | use super::*; | ||
| 115 | async fn run_async_repo_event_ref_needed( | ||
| 116 | invalid_input: bool, | ||
| 117 | nevent: bool, | ||
| 118 | naddr: bool, | ||
| 119 | ) -> Result<()> { | ||
| 120 | let (mut r51, mut r52, mut r53, mut r55, mut r56) = ( | ||
| 121 | Relay::new(8051, None, None), | ||
| 122 | Relay::new(8052, None, None), | ||
| 123 | Relay::new(8053, None, None), | ||
| 124 | Relay::new(8055, None, None), | ||
| 125 | Relay::new(8056, None, None), | ||
| 126 | ); | ||
| 127 | |||
| 128 | r51.events.push(generate_test_key_1_relay_list_event()); | ||
| 129 | r51.events.push(generate_test_key_1_metadata_event("fred")); | ||
| 130 | |||
| 131 | r55.events.push(generate_test_key_1_relay_list_event()); | ||
| 132 | r55.events.push(generate_test_key_1_metadata_event("fred")); | ||
| 133 | |||
| 134 | let repo_event = generate_repo_ref_event(); | ||
| 135 | r56.events.push(repo_event.clone()); | ||
| 136 | |||
| 137 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | ||
| 138 | let test_repo = GitTestRepo::default(); | ||
| 139 | test_repo.populate()?; | ||
| 140 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | ||
| 141 | |||
| 142 | p.expect("cannot find repo event\r\n")?; | ||
| 143 | |||
| 144 | if invalid_input { | ||
| 145 | let mut input = p.expect_input("repository naddr or nevent")?; | ||
| 146 | input.succeeds_with("dfgvfvfzadvd")?; | ||
| 147 | p.expect("not a valid nevent or naddr\r\n")?; | ||
| 148 | let _ = p.expect_input("repository naddr or nevent")?; | ||
| 149 | p.exit()?; | ||
| 150 | } | ||
| 151 | if nevent { | ||
| 152 | let mut input = p.expect_input("repository naddr or nevent")?; | ||
| 153 | input.succeeds_with( | ||
| 154 | &Nip19Event { | ||
| 155 | event_id: repo_event.id, | ||
| 156 | author: Some(TEST_KEY_1_KEYS.public_key()), | ||
| 157 | relays: vec!["ws://localhost:8056".to_string()], | ||
| 158 | } | ||
| 159 | .to_bech32()?, | ||
| 160 | )?; | ||
| 161 | p.expect("finding PRs...\r\n")?; | ||
| 162 | p.expect_end_with("no PRs found... create one? try `ngit send`\r\n")?; | ||
| 163 | } | ||
| 164 | if naddr { | ||
| 165 | let mut input = p.expect_input("repository naddr or nevent")?; | ||
| 166 | input.succeeds_with( | ||
| 167 | &Coordinate { | ||
| 168 | kind: nostr::Kind::Custom(REPOSITORY_KIND), | ||
| 169 | pubkey: TEST_KEY_1_KEYS.public_key(), | ||
| 170 | identifier: repo_event.identifier().unwrap().to_string(), | ||
| 171 | relays: vec!["ws://localhost:8056".to_string()], | ||
| 172 | } | ||
| 173 | .to_bech32()?, | ||
| 174 | )?; | ||
| 175 | p.expect("finding PRs...\r\n")?; | ||
| 176 | p.expect_end_with("no PRs found... create one? try `ngit send`\r\n")?; | ||
| 177 | p.expect_end_eventually()?; | ||
| 178 | } | ||
| 179 | |||
| 180 | for p in [51, 52, 53, 55, 56] { | ||
| 181 | relay::shutdown_relay(8000 + p)?; | ||
| 182 | } | ||
| 183 | Ok(()) | ||
| 184 | }); | ||
| 185 | |||
| 186 | // launch relay | ||
| 187 | let _ = join!( | ||
| 188 | r51.listen_until_close(), | ||
| 189 | r52.listen_until_close(), | ||
| 190 | r53.listen_until_close(), | ||
| 191 | r55.listen_until_close(), | ||
| 192 | r56.listen_until_close(), | ||
| 193 | ); | ||
| 194 | cli_tester_handle.join().unwrap()?; | ||
| 195 | Ok(()) | ||
| 196 | } | ||
| 197 | |||
| 198 | #[tokio::test] | ||
| 199 | #[serial] | ||
| 200 | async fn warns_not_valid_input_and_asks_again() -> Result<()> { | ||
| 201 | let _ = run_async_repo_event_ref_needed(true, false, false).await; | ||
| 202 | Ok(()) | ||
| 203 | } | ||
| 204 | |||
| 205 | #[tokio::test] | ||
| 206 | #[serial] | ||
| 207 | async fn finds_based_on_nevent_on_embeded_relay() -> Result<()> { | ||
| 208 | let _ = run_async_repo_event_ref_needed(false, true, false).await; | ||
| 209 | Ok(()) | ||
| 210 | } | ||
| 211 | |||
| 212 | #[tokio::test] | ||
| 213 | #[serial] | ||
| 214 | async fn finds_based_on_naddr_on_embeded_relay() -> Result<()> { | ||
| 215 | let _ = run_async_repo_event_ref_needed(false, false, true).await; | ||
| 216 | Ok(()) | ||
| 217 | } | ||
| 218 | } | ||
| 219 | } | ||
| 106 | mod when_main_branch_is_uptodate { | 220 | mod when_main_branch_is_uptodate { |
| 107 | use super::*; | 221 | use super::*; |
| 108 | 222 | ||