Chapter 3.9
+ Update tests to incorporate new structure. + Adjust tests to connect to database
This commit is contained in:
parent
6322ed3f5f
commit
3c97b96cf1
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,6 +2,7 @@
|
||||
.vscode
|
||||
#.env
|
||||
.gitlab-ci-local
|
||||
.DS_Store
|
||||
|
||||
# Added by cargo
|
||||
#
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
pub struct Settings {
|
||||
pub database: DatabaseSettings,
|
||||
@ -17,9 +16,10 @@ pub struct DatabaseSettings {
|
||||
pub fn get_configuration() -> Result<Settings, config::ConfigError> {
|
||||
// initialise config reader
|
||||
let settings = config::Config::builder()
|
||||
.add_source(
|
||||
config::File::new("configuration.yaml", config::FileFormat::Yaml)
|
||||
)
|
||||
.add_source(config::File::new(
|
||||
"configuration.yaml",
|
||||
config::FileFormat::Yaml,
|
||||
))
|
||||
.build()?;
|
||||
settings.try_deserialize::<Settings>()
|
||||
}
|
||||
|
@ -1,3 +1,3 @@
|
||||
pub mod configuration;
|
||||
pub mod routes;
|
||||
pub mod startup;
|
||||
pub mod startup;
|
||||
|
@ -1,6 +1,6 @@
|
||||
use std::net::TcpListener;
|
||||
use mail_app::startup::run;
|
||||
use mail_app::configuration::get_configuration;
|
||||
use mail_app::startup::run;
|
||||
use std::net::TcpListener;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), std::io::Error> {
|
||||
|
@ -2,4 +2,4 @@ mod health_check;
|
||||
mod subscriptions;
|
||||
|
||||
pub use health_check::*;
|
||||
pub use subscriptions::*;
|
||||
pub use subscriptions::*;
|
||||
|
@ -2,8 +2,8 @@ use actix_web::{web, HttpResponse};
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
pub struct FormData {
|
||||
email: String,
|
||||
name: String,
|
||||
// email: String,
|
||||
// name: String,
|
||||
}
|
||||
|
||||
pub async fn subscribe(_form: web::Form<FormData>) -> HttpResponse {
|
||||
|
@ -1,15 +1,15 @@
|
||||
use actix_web::{web, App, HttpServer};
|
||||
use actix_web::dev::Server;
|
||||
use std::net::TcpListener;
|
||||
use crate::routes::{health_check, subscribe};
|
||||
use actix_web::dev::Server;
|
||||
use actix_web::{web, App, HttpServer};
|
||||
use std::net::TcpListener;
|
||||
|
||||
pub fn run(listener: TcpListener) -> Result<Server, std::io::Error> {
|
||||
let server = HttpServer::new(|| {
|
||||
App::new()
|
||||
.route("/health_check", web::get().to(health_check))
|
||||
.route("/subscriptions", web::post().to(subscribe))
|
||||
})
|
||||
.listen(listener)?
|
||||
.run();
|
||||
})
|
||||
.listen(listener)?
|
||||
.run();
|
||||
Ok(server)
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
use std::net::TcpListener;
|
||||
use sqlx::{PgConnection, Connection};
|
||||
use mail_app::startup::run;
|
||||
use mail_app::configuration::get_configuration;
|
||||
use mail_app::startup::run;
|
||||
use sqlx::{Connection, PgConnection};
|
||||
use std::net::TcpListener;
|
||||
|
||||
fn spawn_app() -> String {
|
||||
let listener = TcpListener::bind("127.0.0.1:0").expect("Failed to bind to random port.");
|
||||
@ -59,7 +59,7 @@ async fn subscribe_returns_a_200_for_valid_form_data() {
|
||||
.fetch_one(&mut connection)
|
||||
.await
|
||||
.expect("Failed to fetch saved subscription.");
|
||||
|
||||
|
||||
assert_eq!(saved.email, "ursula_le_guin@gmail.com");
|
||||
assert_eq!(saved.name, "le guin");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user