test: add happy case for email client

This commit is contained in:
Sandro Eiler 2024-02-27 15:12:50 +01:00
parent 506c632342
commit c3fce4a441

View file

@ -72,8 +72,9 @@ mod tests {
use fake::faker::lorem::en::{Paragraph, Sentence};
use fake::{Fake, Faker};
use secrecy::Secret;
use wiremock::matchers::{header, header_exists, method, path};
use wiremock::matchers::{any, header, header_exists, method, path};
use wiremock::{Mock, MockServer, Request, ResponseTemplate};
use claims::assert_ok;
struct SendEmailBodyMatcher;
@ -97,6 +98,36 @@ mod tests {
}
}
#[tokio::test]
async fn send_email_succeeds_if_the_server_returns_200() {
// Arrange
let mock_server = MockServer::start().await;
let sender = SubscriberEmail::parse(SafeEmail().fake()).unwrap();
let email_client = EmailClient::new(
mock_server.uri(),
sender,
Secret::new(Faker.fake())
);
let subscriber_email = SubscriberEmail::parse(SafeEmail().fake()).unwrap();
let subject: String = Sentence(1..2).fake();
let content: String = Paragraph(1..10).fake();
Mock::given(any())
.respond_with(ResponseTemplate::new(200))
.expect(1)
.mount(&mock_server)
.await;
// Act
let outcome = email_client
.send_email(subscriber_email, &subject, &content, &content)
.await;
// Assert
assert_ok!(outcome);
}
#[tokio::test]
async fn send_email_sends_the_expected_request() {
// Arrange