@@ -2478,6 +2478,30 @@ mod tests {
2478
2478
assert_regex_match ! ( response. text( ) . unwrap( ) , regex. as_ref( ) ) ;
2479
2479
}
2480
2480
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
+
2481
2505
fn assert_response_csp (
2482
2506
& self ,
2483
2507
path : impl AsRef < str > ,
@@ -3084,10 +3108,14 @@ mod tests {
3084
3108
3085
3109
server. mine_blocks ( 1 ) ;
3086
3110
3087
- server. assert_response_regex (
3111
+ server. assert_html (
3088
3112
"/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
+ } ,
3091
3119
) ;
3092
3120
3093
3121
let ( txid, id) = server. etch (
@@ -3133,14 +3161,23 @@ mod tests {
3133
3161
[ ( OutPoint { txid, vout: 0 } , vec![ ( id, u128 :: MAX ) ] ) ]
3134
3162
) ;
3135
3163
3136
- server. assert_response_regex (
3164
+ server. assert_html (
3137
3165
"/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
+ } ,
3144
3181
) ;
3145
3182
}
3146
3183
@@ -3185,73 +3222,38 @@ mod tests {
3185
3222
) ,
3186
3223
) ;
3187
3224
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) ] ) ;
3204
3237
3205
3238
assert_eq ! (
3206
3239
server. index. get_rune_balances( ) . unwrap( ) ,
3207
3240
[ ( OutPoint { txid, vout: 0 } , vec![ ( id, u128 :: MAX ) ] ) ]
3208
3241
) ;
3209
3242
3210
- server. assert_response_regex (
3243
+ let parent = InscriptionId { txid, index : 0 } ;
3244
+
3245
+ server. assert_html (
3211
3246
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
+ } ,
3251
3253
) ;
3252
3254
3253
3255
server. assert_response_regex (
3254
- format ! ( "/inscription/{txid}i0 " ) ,
3256
+ format ! ( "/inscription/{parent} " ) ,
3255
3257
StatusCode :: OK ,
3256
3258
".*
3257
3259
<dl>
0 commit comments