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.