pub struct EndpointWithContext<T>where
T: Send + Sync + RowSource,
for<'t> &'t <<T as RowSource>::Rows as RowSet>::Target: IntoIterator<Item = &'t <T as RowSource>::Item>,{ /* private fields */ }wiremock only.Expand description
A Django-style endpoint for a collection of objects that require a context value.
EndpointWithContext implements
wiremock::Respond and so can be mounted directly into a
wiremock::MockServer. It contains a RowSource which it
will query for a fresh data on each query.
The primary distinction between this type and Endpoint is that
it can be used with types that require a context object, and so
relies on the extended traits FilterableWithContext,
IntoRowWithContext and SortableWithContext.
Any supplied RowSource needs to generate RowSet values
that double as the context value required by these traits.
Implementations§
Source§impl<'q, T> EndpointWithContext<T>
impl<'q, T> EndpointWithContext<T>
Sourcepub fn new(row_source: T, base_uri: Option<&str>) -> Self
pub fn new(row_source: T, base_uri: Option<&str>) -> Self
Create a new EndpointWithContext.
row_source is where the data comes from. base_uri, if
provided, should be the wiremock server URI.
base_uri is only required because wiremock mangles the
request URL such that it’s not possible to inspect it to see
how to give out other URLs on the same server; the port
number, which is usually random when mocking, is lost. Since
Django includes full absolute URLs for the next and preceding
pages for a query, mimicking this is impossible without more
information (i.e. including usable URLs for the next page
within the query response is impossible).
Sourcepub fn default_limit(&mut self, limit: usize)
pub fn default_limit(&mut self, limit: usize)
Set the default number of results returned
This is the value used when no limit is specified in the query. This value is configurable in Django; the default behaviour of this mock endpoint is to return everything, but that makes testing code that uses the default pagination more difficult.
Trait Implementations§
Source§impl<'q, T, A, R> Respond for EndpointWithContext<T>where
T: Send + Sync + RowSource<Rows = A, Item = R>,
for<'t> &'t <A as RowSet>::Target: IntoIterator<Item = &'t R>,
R: Send + Sync + FilterableWithContext<'q, A> + SortableWithContext<'q, A> + IntoRowWithContext<'q, A> + 'q,
A: Clone + 'q + RowSet,
impl<'q, T, A, R> Respond for EndpointWithContext<T>where
T: Send + Sync + RowSource<Rows = A, Item = R>,
for<'t> &'t <A as RowSet>::Target: IntoIterator<Item = &'t R>,
R: Send + Sync + FilterableWithContext<'q, A> + SortableWithContext<'q, A> + IntoRowWithContext<'q, A> + 'q,
A: Clone + 'q + RowSet,
Source§fn respond(&self, request: &Request) -> ResponseTemplate
fn respond(&self, request: &Request) -> ResponseTemplate
Request return a ResponseTemplate that will be used
by the MockServer as blueprint for the response returned to the client.