Struct pact_consumer::builders::PactBuilder
source · pub struct PactBuilder { /* private fields */ }
Expand description
Builder for Pact
objects.
use pact_consumer::prelude::*;
use pact_consumer::*;
let pact = PactBuilder::new("Greeting Client", "Greeting Server")
.interaction("asks for a greeting", "", |mut i| {
i.request.path("/greeting/hello");
i.response
.header("Content-Type", "application/json")
.json_body(json_pattern!({ "message": "hello" }));
i
})
.build();
// The request method and response status default as follows.
assert_eq!(pact.interactions()[0].as_request_response().unwrap().request.method, "GET");
assert_eq!(pact.interactions()[0].as_request_response().unwrap().response.status, 200);
Implementations§
source§impl PactBuilder
impl PactBuilder
sourcepub fn new<C, P>(consumer: C, provider: P) -> Self
pub fn new<C, P>(consumer: C, provider: P) -> Self
Create a new PactBuilder
, specifying the names of the service
consuming the API and the service providing it.
sourcepub fn new_v3_message<C, P>(consumer: C, provider: P) -> Self
pub fn new_v3_message<C, P>(consumer: C, provider: P) -> Self
Create a new PactBuilder
, specifying the names of the service
consuming the API and the service providing it. This creates a V3 message pact, and only
message interactions can be added.
sourcepub fn new_v4<C, P>(consumer: C, provider: P) -> Self
pub fn new_v4<C, P>(consumer: C, provider: P) -> Self
Create a new PactBuilder
for a V4 specification Pact, specifying the names of the service
consuming the API and the service providing it.
sourcepub fn with_output_dir<P: Into<PathBuf>>(&mut self, dir: P) -> &mut Self
pub fn with_output_dir<P: Into<PathBuf>>(&mut self, dir: P) -> &mut Self
Sets the output directory to write any pact files to. If this is not set, will default to the PACT_OUTPUT_DIR environment variable. If that is not set, will use the target directory.
sourcepub async fn using_plugin(
self,
name: &str,
version: Option<String>,
) -> PactBuilderAsync
pub async fn using_plugin( self, name: &str, version: Option<String>, ) -> PactBuilderAsync
Add a plugin to be used by the test. Note this will return an async version of the Pact builder and requires the plugin crate feature.
Panics:
Plugins only work with V4 specification pacts. This method will panic if the pact
being built is V3 format. Use PactBuilder::new_v4
to create a builder with a V4 format
pact.
sourcepub fn interaction<D, F>(
&mut self,
description: D,
interaction_type: D,
build_fn: F,
) -> &mut Self
pub fn interaction<D, F>( &mut self, description: D, interaction_type: D, build_fn: F, ) -> &mut Self
Add a new HTTP Interaction
to the Pact
. Needs to return a clone of the builder
that is passed in.
sourcepub fn push_interaction(
&mut self,
interaction: &(dyn Interaction + Send + Sync + RefUnwindSafe),
) -> &mut Self
pub fn push_interaction( &mut self, interaction: &(dyn Interaction + Send + Sync + RefUnwindSafe), ) -> &mut Self
Directly add a pre-built Interaction
to our Pact
. Normally it’s
easier to use interaction
instead of this function.
sourcepub fn build(&self) -> Box<dyn Pact + Send + Sync + RefUnwindSafe>
pub fn build(&self) -> Box<dyn Pact + Send + Sync + RefUnwindSafe>
Return the Pact
we’ve built.
sourcepub fn output_dir<D: Into<PathBuf>>(&mut self, dir: D) -> &mut Self
👎Deprecated: Use with_output_dir
pub fn output_dir<D: Into<PathBuf>>(&mut self, dir: D) -> &mut Self
Sets the output directory to write pact files to
sourcepub fn message_interaction<D, F>(
&mut self,
description: D,
build_fn: F,
) -> &mut Self
pub fn message_interaction<D, F>( &mut self, description: D, build_fn: F, ) -> &mut Self
Add a new Asynchronous message Interaction
to the Pact
sourcepub fn synchronous_message_interaction<D, F>(
&mut self,
description: D,
build_fn: F,
) -> &mut Self
pub fn synchronous_message_interaction<D, F>( &mut self, description: D, build_fn: F, ) -> &mut Self
Add a new synchronous message Interaction
to the Pact
sourcepub fn messages(&self) -> MessageIterator<AsynchronousMessage>
pub fn messages(&self) -> MessageIterator<AsynchronousMessage>
Returns an iterator over the asynchronous messages in the Pact
sourcepub fn v3_messages(&self) -> MessageIterator<Message>
pub fn v3_messages(&self) -> MessageIterator<Message>
Returns an iterator over the asynchronous messages in a V3 Message Pact
sourcepub fn synchronous_messages(&self) -> MessageIterator<SynchronousMessage>
pub fn synchronous_messages(&self) -> MessageIterator<SynchronousMessage>
Returns an iterator over the synchronous req/res messages in the Pact
Trait Implementations§
source§impl Debug for PactBuilder
impl Debug for PactBuilder
source§impl StartMockServer for PactBuilder
impl StartMockServer for PactBuilder
source§fn start_mock_server(
&self,
_catalog_entry: Option<&str>,
mock_server_config: Option<MockServerConfig>,
) -> Box<dyn ValidatingMockServer>
fn start_mock_server( &self, _catalog_entry: Option<&str>, mock_server_config: Option<MockServerConfig>, ) -> Box<dyn ValidatingMockServer>
Auto Trait Implementations§
impl Freeze for PactBuilder
impl RefUnwindSafe for PactBuilder
impl Send for PactBuilder
impl Sync for PactBuilder
impl Unpin for PactBuilder
impl !UnwindSafe for PactBuilder
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightBlack
.
§Example
println!("{}", value.bright_black());
source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightGreen
.
§Example
println!("{}", value.bright_green());
source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightYellow
.
§Example
println!("{}", value.bright_yellow());
source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightMagenta
.
§Example
println!("{}", value.bright_magenta());
source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Returns self
with the
fg()
set to
Color::BrightWhite
.
§Example
println!("{}", value.bright_white());
source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightBlack
.
§Example
println!("{}", value.on_bright_black());
source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightGreen
.
§Example
println!("{}", value.on_bright_green());
source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightYellow
.
§Example
println!("{}", value.on_bright_yellow());
source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightBlue
.
§Example
println!("{}", value.on_bright_blue());
source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightMagenta
.
§Example
println!("{}", value.on_bright_magenta());
source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightCyan
.
§Example
println!("{}", value.on_bright_cyan());
source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Returns self
with the
bg()
set to
Color::BrightWhite
.
§Example
println!("{}", value.on_bright_white());
source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute
value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
source§fn underline(&self) -> Painted<&T>
fn underline(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::Underline
.
§Example
println!("{}", value.underline());
source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Returns self
with the
attr()
set to
Attribute::RapidBlink
.
§Example
println!("{}", value.rapid_blink());
source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
Quirk
value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition
value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);