Struct NestedEndpointParams

Source
pub struct NestedEndpointParams<'a> {
    pub root: &'a str,
    pub parent: &'a str,
    pub child: &'a str,
    pub parent_query: &'a str,
    pub base_uri: Option<&'a str>,
}
Available on crate feature wiremock only.
Expand description

The construction parameters for NestedEndpoint

Example:

use django_query::mock::{nested_endpoint_matches, NestedEndpoint, NestedEndpointParams};

#[derive(Clone, Filterable, IntoRow, Sortable)]
struct Foo {
  #[django(traverse, foreign_key="id")]
  bar: Arc<Bar>
}

#[derive(Clone, Filterable, IntoRow, Sortable)]
struct Bar {
  id: i32
}

let s = wiremock::MockServer::start().await;

let foos = vec![Foo { bar: Arc::new( Bar { id: 1 }) }];

wiremock::Mock::given(wiremock::matchers::method("GET"))
   .and(nested_endpoint_matches("/api", "bars", "foos"))
   .respond_with(NestedEndpoint::new(
       foos,
       NestedEndpointParams {
           root: "/api/",
           parent: "bars",
           child: "foos",
           parent_query: "bar__id",
           base_uri: Some(&s.uri())
       }
   ))
   .mount(&s)
   .await;

let u = format!("{}/api/bars/1/foos/", s.uri());
let body: serde_json::Value = reqwest::get(&u)
    .await
    .expect("error getting response")
    .json()
    .await
    .expect("error parsing response");

assert_eq!(body, serde_json::json!{
  {
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
      { "bar": 1 }
    ]
  }
});

Fields§

§root: &'a str

The base mock path, without trailing slash, for example "/api/v0.2"

§parent: &'a str

The objects this endpoint is nested under, for example "bars".

§child: &'a str

The objects this endpoint serves, for example "foos"

§parent_query: &'a str

The filter path for the parent from the child, so for example "parent__id" if the filter expression for a given Foo to obtain the value used in the query from its Bar is "parent__id".

§base_uri: Option<&'a str>

The mock server URI, since wiremock does not make this available to us; specifying None here will break pagination (if requested) until wiremock propagates this information.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,