Skip to content

Commit 11adf7b

Browse files
authored
Add assert_html function (ordinals#4058)
1 parent 54adcf6 commit 11adf7b

File tree

2 files changed

+70
-68
lines changed

2 files changed

+70
-68
lines changed

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,10 @@ urlencoding = "2.1.3"
7676
[dev-dependencies]
7777
criterion = "0.5.1"
7878
executable-path = "1.0.0"
79+
mockcore = { path = "crates/mockcore" }
7980
nix = { version = "0.29.0", features = ["signal"] }
8081
pretty_assertions = "1.2.1"
8182
reqwest = { version = "0.11.27", features = ["blocking", "brotli", "json"] }
82-
mockcore = { path = "crates/mockcore" }
8383
unindent = "0.2.1"
8484

8585
[[bin]]

src/subcommand/server.rs

+69-67
Original file line numberDiff line numberDiff line change
@@ -2478,6 +2478,30 @@ mod tests {
24782478
assert_regex_match!(response.text().unwrap(), regex.as_ref());
24792479
}
24802480

2481+
#[track_caller]
2482+
fn assert_html(&self, path: impl AsRef<str>, content: impl PageContent) {
2483+
let response = self.get(path);
2484+
2485+
assert_eq!(
2486+
response.status(),
2487+
StatusCode::OK,
2488+
"{}",
2489+
response.text().unwrap()
2490+
);
2491+
2492+
let expected_response = PageHtml::new(
2493+
content,
2494+
Arc::new(ServerConfig {
2495+
chain: Chain::Regtest,
2496+
domain: Some(System::host_name().unwrap()),
2497+
..Default::default()
2498+
}),
2499+
)
2500+
.to_string();
2501+
2502+
pretty_assert_eq!(response.text().unwrap(), expected_response);
2503+
}
2504+
24812505
fn assert_response_csp(
24822506
&self,
24832507
path: impl AsRef<str>,
@@ -3084,10 +3108,14 @@ mod tests {
30843108

30853109
server.mine_blocks(1);
30863110

3087-
server.assert_response_regex(
3111+
server.assert_html(
30883112
"/runes",
3089-
StatusCode::OK,
3090-
".*<title>Runes</title>.*<h1>Runes</h1>\n<ul>\n</ul>\n<div class=center>\n prev\n next\n </div>.*",
3113+
RunesHtml {
3114+
entries: Vec::new(),
3115+
more: false,
3116+
prev: None,
3117+
next: None,
3118+
},
30913119
);
30923120

30933121
let (txid, id) = server.etch(
@@ -3133,14 +3161,23 @@ mod tests {
31333161
[(OutPoint { txid, vout: 0 }, vec![(id, u128::MAX)])]
31343162
);
31353163

3136-
server.assert_response_regex(
3164+
server.assert_html(
31373165
"/runes",
3138-
StatusCode::OK,
3139-
".*<title>Runes</title>.*
3140-
<h1>Runes</h1>
3141-
<ul>
3142-
<li><a href=/rune/AAAAAAAAAAAAA>AAAAAAAAAAAAA</a></li>
3143-
</ul>.*",
3166+
RunesHtml {
3167+
entries: vec![(
3168+
RuneId::default(),
3169+
RuneEntry {
3170+
spaced_rune: SpacedRune {
3171+
rune: Rune(RUNE),
3172+
spacers: 0,
3173+
},
3174+
..default()
3175+
},
3176+
)],
3177+
more: false,
3178+
prev: None,
3179+
next: None,
3180+
},
31443181
);
31453182
}
31463183

@@ -3185,73 +3222,38 @@ mod tests {
31853222
),
31863223
);
31873224

3188-
assert_eq!(
3189-
server.index.runes().unwrap(),
3190-
[(
3191-
id,
3192-
RuneEntry {
3193-
block: id.block,
3194-
etching: txid,
3195-
spaced_rune: SpacedRune { rune, spacers: 0 },
3196-
premine: u128::MAX,
3197-
symbol: Some('%'),
3198-
timestamp: id.block,
3199-
turbo: true,
3200-
..default()
3201-
}
3202-
)]
3203-
);
3225+
let entry = RuneEntry {
3226+
block: id.block,
3227+
etching: txid,
3228+
spaced_rune: SpacedRune { rune, spacers: 0 },
3229+
premine: u128::MAX,
3230+
symbol: Some('%'),
3231+
timestamp: id.block,
3232+
turbo: true,
3233+
..default()
3234+
};
3235+
3236+
assert_eq!(server.index.runes().unwrap(), [(id, entry)]);
32043237

32053238
assert_eq!(
32063239
server.index.get_rune_balances().unwrap(),
32073240
[(OutPoint { txid, vout: 0 }, vec![(id, u128::MAX)])]
32083241
);
32093242

3210-
server.assert_response_regex(
3243+
let parent = InscriptionId { txid, index: 0 };
3244+
3245+
server.assert_html(
32113246
format!("/rune/{rune}"),
3212-
StatusCode::OK,
3213-
format!(
3214-
".*<title>Rune AAAAAAAAAAAAA</title>.*
3215-
<h1>AAAAAAAAAAAAA</h1>
3216-
.*<a.*<iframe .* src=/preview/{txid}i0></iframe></a>.*
3217-
<dl>
3218-
<dt>number</dt>
3219-
<dd>0</dd>
3220-
<dt>timestamp</dt>
3221-
<dd><time>1970-01-01 00:00:08 UTC</time></dd>
3222-
<dt>id</dt>
3223-
<dd>8:1</dd>
3224-
<dt>etching block</dt>
3225-
<dd><a href=/block/8>8</a></dd>
3226-
<dt>etching transaction</dt>
3227-
<dd>1</dd>
3228-
<dt>mint</dt>
3229-
<dd>no</dd>
3230-
<dt>supply</dt>
3231-
<dd>340282366920938463463374607431768211455\u{A0}%</dd>
3232-
<dt>premine</dt>
3233-
<dd>340282366920938463463374607431768211455\u{A0}%</dd>
3234-
<dt>premine percentage</dt>
3235-
<dd>100%</dd>
3236-
<dt>burned</dt>
3237-
<dd>0\u{A0}%</dd>
3238-
<dt>divisibility</dt>
3239-
<dd>0</dd>
3240-
<dt>symbol</dt>
3241-
<dd>%</dd>
3242-
<dt>turbo</dt>
3243-
<dd>true</dd>
3244-
<dt>etching</dt>
3245-
<dd><a class=collapse href=/tx/{txid}>{txid}</a></dd>
3246-
<dt>parent</dt>
3247-
<dd><a class=collapse href=/inscription/{txid}i0>{txid}i0</a></dd>
3248-
</dl>
3249-
.*"
3250-
),
3247+
RuneHtml {
3248+
id,
3249+
entry,
3250+
mintable: false,
3251+
parent: Some(parent),
3252+
},
32513253
);
32523254

32533255
server.assert_response_regex(
3254-
format!("/inscription/{txid}i0"),
3256+
format!("/inscription/{parent}"),
32553257
StatusCode::OK,
32563258
".*
32573259
<dl>

0 commit comments

Comments
 (0)