Skip to content

Commit 189b69e

Browse files
committed
SearchService now returns a TimedResponse and Runner has been adapted accordingly.
Issue #3
1 parent f8edc29 commit 189b69e

2 files changed

Lines changed: 18 additions & 25 deletions

File tree

src/run.rs

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use crate::test_suite::TestSuite;
33

44
use crate::search_service::SearchService;
55
use crate::test_result::TestResult;
6+
use crate::timed_search_results::TimedSearchResults;
67
use anyhow::Result;
78

89
#[derive(Debug)]
@@ -28,36 +29,35 @@ impl<T: SearchService> Runner<T> {
2829
}
2930

3031
fn run_test(&self, test_case: &TestCase) -> TestResult {
31-
let results = self.search_service.search(test_case);
32+
let response = self.search_service.search(test_case);
33+
let results = TimedSearchResults::from(response);
3234
TestResult::new(test_case, &results)
3335
}
3436
}
3537

3638
#[cfg(test)]
3739
mod tests {
3840
use super::*;
39-
use crate::identifiers::SuttaplexUid;
40-
use crate::response::general::SearchResults;
41-
use crate::timed_search_results::TimedSearchResults;
41+
use crate::timed_response::TimedResponse;
4242
use std::cell::RefCell;
4343
use std::time::Duration;
4444

4545
#[derive(Debug)]
4646
struct FakeSearchService {
47-
results: RefCell<Vec<TimedSearchResults>>,
47+
responses: RefCell<Vec<TimedResponse>>,
4848
}
4949

5050
impl FakeSearchService {
51-
fn new(results: Vec<TimedSearchResults>) -> FakeSearchService {
51+
fn new(responses: Vec<TimedResponse>) -> FakeSearchService {
5252
Self {
53-
results: RefCell::new(results),
53+
responses: RefCell::new(responses),
5454
}
5555
}
5656
}
5757

5858
impl SearchService for FakeSearchService {
59-
fn search(&self, _: &TestCase) -> TimedSearchResults {
60-
self.results.borrow_mut().pop().unwrap()
59+
fn search(&self, _: &TestCase) -> TimedResponse {
60+
self.responses.borrow_mut().pop().unwrap()
6161
}
6262
}
6363

@@ -124,18 +124,14 @@ mod tests {
124124
)
125125
.unwrap();
126126

127-
let search_results = TimedSearchResults {
127+
let service = FakeSearchService::new(vec![TimedResponse {
128128
elapsed: Duration::from_secs(3),
129-
results: Ok(SearchResults {
130-
text: Vec::new(),
131-
dictionary: Vec::new(),
132-
suttaplex: vec![SuttaplexUid::from("snp1.8")],
133-
}),
134-
};
135-
136-
let engine = FakeSearchService::new(vec![search_results]);
137-
let runner = Runner::new(&suite, engine).unwrap();
129+
json: Ok(String::from(r#"{ "suttaplex": [ { "uid": "mn1" } ] } "#)),
130+
}]);
131+
132+
let runner = Runner::new(&suite, service).unwrap();
138133
let test_result = runner.run().next().unwrap();
134+
139135
assert_eq!(test_result.elapsed, Duration::from_secs(3))
140136
}
141137
}

src/search_service.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
use crate::request::Request;
22
use crate::test_case::TestCase;
33
use crate::timed_response::TimedResponse;
4-
use crate::timed_search_results::TimedSearchResults;
5-
use anyhow::Context;
64
use std::time::Instant;
75

86
pub trait SearchService {
9-
fn search(&self, test_case: &TestCase) -> TimedSearchResults;
7+
fn search(&self, test_case: &TestCase) -> TimedResponse;
108
}
119

1210
#[derive(Debug)]
@@ -21,12 +19,11 @@ impl LiveSearchService {
2119
}
2220

2321
impl SearchService for LiveSearchService {
24-
fn search(&self, test_case: &TestCase) -> TimedSearchResults {
22+
fn search(&self, test_case: &TestCase) -> TimedResponse {
2523
let start = Instant::now();
2624
let response = Request::new(self.endpoint.clone(), test_case).send();
2725
let elapsed = start.elapsed();
28-
let timed_response = TimedResponse::new(elapsed, response);
29-
TimedSearchResults::from(timed_response)
26+
TimedResponse::new(elapsed, response)
3027
}
3128
}
3229

0 commit comments

Comments
 (0)