use super::*;
#[test]
fn accepts_mjs_script_when_type_is_missing() {
let request = ObservedRequest {
url: "https://example.test/assets/app.mjs?v=1".to_string(),
method: "GET".to_string(),
kind: None,
};
let accepted = accepts_request(&request);
assert!(accepted);
assert_eq!(classify_url(&request.url), ObservedResourceKind::Script);
}
#[test]
fn rejects_fetch_and_xhr_api_like_traffic() {
let xhr = ObservedRequest {
url: "https://example.test/api/users".to_string(),
method: "GET".to_string(),
kind: None,
};
let post = ObservedRequest {
url: "https://example.test/assets/app.js".to_string(),
method: "POST".to_string(),
kind: Some(ObservedResourceKind::Script),
};
let accepted_xhr = accepts_request(&xhr);
let accepted_post = accepts_request(&post);
assert!(!accepted_xhr);
assert!(!accepted_post);
}
#[test]
fn collector_merges_response_metadata_by_url() {
let mut collector = RuntimeResourceCollector::default();
collector.record_request(
"1".to_string(),
ObservedRequest {
url: "https://example.test/assets/site.css".to_string(),
method: "GET".to_string(),
kind: Some(ObservedResourceKind::Stylesheet),
},
);
collector.record_response(
"1",
ObservedResponse {
url: "https://example.test/assets/site.css".to_string(),
kind: ObservedResourceKind::Stylesheet,
status: Some(200),
mime_type: Some("text/css".to_string()),
},
);
assert_eq!(
collector.finish(),
vec![ObservedResource {
url: "https://example.test/assets/site.css".to_string(),
method: "GET".to_string(),
kind: ObservedResourceKind::Stylesheet,
status: Some(200),
mime_type: Some("text/css".to_string()),
}]
);
}
#[test]
fn collector_handles_response_before_request() {
let mut collector = RuntimeResourceCollector::default();
collector.record_response(
"late-request",
ObservedResponse {
url: "https://example.test/runtime/late-module.js?v=one".to_string(),
kind: ObservedResourceKind::Script,
status: Some(200),
mime_type: Some("text/javascript".to_string()),
},
);
collector.record_request(
"late-request".to_string(),
ObservedRequest {
url: "https://example.test/runtime/late-module.js?v=one".to_string(),
method: "GET".to_string(),
kind: Some(ObservedResourceKind::Script),
},
);
let resources = collector.finish();
assert_eq!(resources.len(), 1);
assert_eq!(
resources[0].url,
"https://example.test/runtime/late-module.js?v=one"
);
assert_eq!(resources[0].status, Some(200));
}