Added test, but broke stuff.

This commit is contained in:
2019-01-21 15:41:53 +01:00
parent 1f63bcf85f
commit 94fa03d45c
13 changed files with 1336 additions and 238 deletions

View File

@@ -1,21 +1,29 @@
use unhtml::FromHtml;
use unhtml_derive::FromHtml;
use scraper::{Html, Selector};
use crate::context::Context;
use crate::probe::Probe;
use crate::probe::{Entry, Probe};
#[derive(Debug, FromHtml)]
#[html(selector = ".CompanyResultListItem")]
struct Company {
#[html(selector = "h3.name > a", attr = "inner")]
name: String,
}
fn from_html(document: &str) -> Result<Entry, ()> {
let html = Html::parse_document(document);
#[derive(Debug, FromHtml)]
#[html(selector = ".PhoneNoHit")]
struct Error {
#[html(selector = ".search-info-container > p", attr = "inner")]
message: String,
let mut messages = Vec::new();
let history = Vec::new();
let comments = Vec::new();
let selector = Selector::parse(".CompanyResultListItem h3.name > a").unwrap();
if let Some(element) = html.select(&selector).next() {
let message = element.inner_html();
let message = htmlescape::decode_html(&message).unwrap();
messages.push(message);
}
Ok(Entry {
messages,
history,
comments,
})
}
pub struct Eniro;
@@ -37,18 +45,32 @@ impl Probe for Eniro {
body
};
if let Ok(company) = Company::from_html(&body) {
println!("eniro.se:");
println!(" {}", company.name);
match from_html(&body) {
Ok(entry) => {
println!("eniro.se:");
print!("{}", entry);
Ok(())
} else if let Ok(error) = Error::from_html(&body) {
println!("eniro.se:");
println!(" Antal sökningar på det här numret: {}", error.message);
Ok(())
} else {
Err(())
Ok(())
}
Err(_) => Err(()),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_0702269893() {
let document = include_str!("../../fixtures/eniro/0702269893.html");
let expected = Entry {
messages: vec!["Anonym Kund För Refill".to_string()],
history: vec![],
comments: vec![],
};
assert_eq!(from_html(&document), Ok(expected));
}
}