upleb.uk

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

summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-02-14 16:44:56 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2024-02-14 16:44:56 +0000
commit115eca3d69310a58e8357fe091183d0a8e723967 (patch)
tree51860d62bdcde1d466d99134a41b767ac24eff52 /tests
parenta1d67c50c8ebc5395b069e30b60d66e0c7de5a5a (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')
-rw-r--r--tests/list.rs114
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
106mod 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}
106mod when_main_branch_is_uptodate { 220mod when_main_branch_is_uptodate {
107 use super::*; 221 use super::*;
108 222