regGGGAAAggg.unisat#75,072,868snstransfer100.pizza#71,236,276brc-20Inscription #69147674#69,147,674htmlInscription #63856221#63,856,221html#63,839,157Inscription #63839156#63,839,156html#63,825,168Inscription #63825167#63,825,167html#63,825,158Inscription #63825157#63,825,157html#63,818,245Inscription #63818244#63,818,244htmlmint1,000.odfi#60,378,850orddefitransfer10,000.hubx#53,062,862brc-20transfer10,000.hubx#53,062,861brc-20transfer10,000.hubx#53,062,860brc-20transfer10,000.hubx#53,062,859brc-20transfer10,000.hubx#53,062,858brc-20transfer10,000.hubx#53,062,857brc-20transfer10,000.hubx#53,062,856brc-20transfer10,000.hubx#53,062,855brc-20transfer10,000.hubx#53,062,854brc-20transfer10,000.hubx#53,062,853brc-20#50,169,054vedaInscription #46563909#46,563,909webp#46,537,969gltf#46,537,967gltf#46,537,966gltf#46,537,965gltf#46,537,963gltf#46,537,962gltf#46,537,961gltf#46,537,960gltf#46,537,959gltf#46,537,958gltf#46,537,957gltf#46,537,955gltf#46,537,953gltf#46,537,952gltf#46,537,951gltf#46,537,949gltf#46,537,948gltf#46,537,947gltf#46,537,943gltf#46,537,942gltfInscription #45311738#45,311,738webp ..self } } pub(crate) fn expected_exit_code(self, expected_exit_code: i32) -> Self { Self { expected_exit_code, ..self } } pub(crate) fn temp_dir(self, tempdir: TempDir) -> Self { Self { tempdir, ..self } } pub(crate) fn command(&self) -> Command { let mut command = Command::new(executable_path("ord")); if let Some(rpc_server_url) = &self.rpc_server_url { let cookiefile = self.tempdir.path().join("cookie"); fs::write(&cookiefile, "username:password").unwrap(); command.args([ "--rpc-url", rpc_server_url, "--cookie-file", cookiefile.to_str().unwrap(), ]); } command .env("ORD_INTEGRATION_TEST", "1") .stdin(Stdio::piped()) .stdout(Stdio::piped()) .stderr(Stdio::piped()) .current_dir(&self.tempdir) .arg("--data-dir") .arg(self.tempdir.path()) .args(&self.args); command } fn run(self) -> (TempDir, String) { let child = self.command().spawn().unwrap(); #45,159,619textInscription #45158260#45,158,260svgInscription #45158259#45,158,259svgInscription #45158258#45,158,258svgInscription #45158257#45,158,257svgInscription #45158256#45,158,256svgInscription #45158255#45,158,255svgInscription #45158254#45,158,254svgInscription #45158253#45,158,253svgInscription #45158252#45,158,252svgInscription #45158251#45,158,251svgtransfer3,200.stst#45,096,148brc-20use super::*; #[derive(Boilerplate)] pub(crate) struct CollectionsHtml { pub(crate) inscriptions: Vec<InscriptionId>, pub(crate) prev: Option<usize>, pub(crate) next: Option<usize>, } impl PageContent for CollectionsHtml { fn title(&self) -> String { "Collections".into() } } #[cfg(test)] mod tests { use super::*; #[test] fn without_prev_and_next() { assert_regex_match!( CollectionsHtml { inscriptions: vec![inscription_id(1), inscription_id(2)], prev: None, next: None, }, " <h1>Collections</h1> <div class=thumbnails> <a href=/inscription/1{64}i1><iframe .* src=/preview/1{64}i1></iframe></a> <a href=/inscription/2{64}i2><iframe .* src=/preview/2{64}i2></iframe></a> </div> .* prev next .* " .unindent() ); } #[test] fn with_prev_and_next() { assert_regex_match!( CollectionsHtml { inscriptions: vec![inscription_id(1), inscription_id(2)], #44,990,232texttransfer66,676.xtai#43,304,829brc-20