diff --git a/src/main.rs b/src/main.rs
index 24cc811e90b3f15d5ff146bb8b20b91310617237..5af326782882b039d5fadcb93e23bb2d0518fd74 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -60,6 +60,13 @@ mod tests {
     use rocket::uri;
     use super::*;
 
+    fn build_response<'r>(operation: Operation)  -> (Status, OperationResult) {
+        let client = Client::tracked(launch()).expect("valid rocket instance");
+        let req = client.post(uri!(super::index)).json(&operation);
+        let response = req.dispatch();
+        (response.status(), response.into_json::<OperationResult>().unwrap())
+    }
+    
     #[test]
     fn index() {
         let client = Client::tracked(launch()).expect("valid rocket instance");
@@ -71,13 +78,20 @@ mod tests {
 
     #[test]
     fn plus() {
-        let client = Client::tracked(launch()).expect("valid rocket instance");
-        let operation = Operation::Plus(3, 8);
-        let req = client.post(uri!(super::index)).json(&operation);
-        let response = req.dispatch();
-        assert_eq!(response.status(), Status::Ok);
+        let (status, response) = build_response(Operation::Plus(3, 8));
+        assert_eq!(status, Status::Ok);
 
         let expected = OperationResult::new("3 + 8", 11);
-        assert_eq!(response.into_json::<OperationResult>().unwrap(), expected); 
+        assert_eq!(response, expected); 
+    }
+
+    #[test]
+    fn moins() {
+        let (status, response) = build_response(Operation::Moins(10, 20));
+        assert_eq!(status, Status::Ok);
+
+        let expected = OperationResult::new("10 - 20", -10);
+        assert_eq!(response, expected); 
     }
+
 }
diff --git a/src/operations.rs b/src/operations.rs
index 45644e7ced43f8ed212726b097154415d992cd50..e6ee1f0595052bb6448163fda133ced520d50bab 100644
--- a/src/operations.rs
+++ b/src/operations.rs
@@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize};
 #[derive(Serialize, Deserialize, Copy, Clone, Debug)]
 pub enum Operation {
     Plus(i32,i32),
+    Moins(i32,i32),
 }
 
 #[derive(Deserialize, Serialize, PartialEq, Debug)]
@@ -31,7 +32,11 @@ impl From<&Operation> for OperationResult {
             Operation::Plus(op1, op2) => OperationResult {
                 operation: format!("{op1} + {op2}"),
                 resultat: op1 + op2,
-            }
+            },
+            Operation::Moins(op1, op2) => OperationResult {
+                operation: format!("{op1} - {op2}"),
+                resultat: op1 - op2,
+            },
         }
     }
 }
@@ -55,5 +60,14 @@ mod tests {
 
         assert_eq!(result, expected);
     }
+
+    #[test]
+    fn moins() {
+        let operation = Operation::Moins(4, 5);
+        let result = OperationResult::from(operation);
+        let expected = OperationResult::new("4 - 5", -1);
+
+        assert_eq!(result, expected);
+    }
     
 }