From c66917c237c5d5136d9461da09e1f9f9e1b4bce9 Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Fr, 30 Sep 2022 12:09:07 +0200
Subject: [PATCH] exercise

---
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/IngredientService.java |   12 ++++++
 src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise09Test.java            |    4 -
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/logging/LoggerProducer.java    |   20 ++++++++++
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/domain/Beverage.java           |    4 ++
 src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise10Test.java            |   35 +++++++++++++++++
 5 files changed, 72 insertions(+), 3 deletions(-)

diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/domain/Beverage.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/domain/Beverage.java
index 601489a..671d2c6 100644
--- a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/domain/Beverage.java
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/domain/Beverage.java
@@ -22,6 +22,10 @@
     this.alcoholPercent = alcoholPercent;
   }
 
+  public String getId() {
+    return id;
+  }
+
   public String getName() {
     return this.name;
   }
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/logging/LoggerProducer.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/logging/LoggerProducer.java
new file mode 100644
index 0000000..2d9a397
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/logging/LoggerProducer.java
@@ -0,0 +1,20 @@
+package de.gedoplan.seminar.sbt.di.exercise.logging;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InjectionPoint;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Scope;
+
+import static org.springframework.beans.factory.config.ConfigurableBeanFactory.SCOPE_PROTOTYPE;
+
+@Configuration
+public class LoggerProducer {
+
+    @Bean
+    @Scope(SCOPE_PROTOTYPE)
+    public Logger getLogger(InjectionPoint injectionPoint) {
+        return LoggerFactory.getLogger(injectionPoint.getMember().getDeclaringClass());
+    }
+}
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/IngredientService.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/IngredientService.java
new file mode 100644
index 0000000..7163535
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/IngredientService.java
@@ -0,0 +1,12 @@
+package de.gedoplan.seminar.sbt.di.exercise.service;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class IngredientService {
+
+  public boolean isAvailable(String id, double amount) {
+    // Dummy check: Anything but rum is available
+    return !"RUM".equals(id);
+  }
+}
diff --git a/src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise09Test.java b/src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise09Test.java
index 8d30c2c..ee1241c 100644
--- a/src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise09Test.java
+++ b/src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise09Test.java
@@ -13,12 +13,10 @@
 @AutoConfigureMockMvc
 @SpringBootTest
 public class Exercise09Test {
-
     @Autowired
     MockMvc mockMvc;
-
     @Test
-    public void testFiltersNonAlcEmpty() throws Exception {
+    public void testMethodCounter() throws Exception {
         mockMvc.perform(get("/api/bar/cocktails"))
                 .andExpect(status().isOk());
 
diff --git a/src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise10Test.java b/src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise10Test.java
new file mode 100644
index 0000000..8d53158
--- /dev/null
+++ b/src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise10Test.java
@@ -0,0 +1,35 @@
+package de.gedoplan.seminar.sbt.di.exercise;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@AutoConfigureMockMvc
+@SpringBootTest
+public class Exercise10Test {
+
+    @Autowired
+    MockMvc mockMvc;
+
+    @Test
+    public void test() throws Exception {
+        String location = mockMvc.perform(post("/api/mixer/order"))
+                .andExpect(status().isCreated())
+                .andReturn().getResponse().getHeader("Location");
+
+        mockMvc.perform(post(location+"/kirr"))
+                .andExpect(status().isCreated());
+
+        mockMvc.perform(post(location+"/stdq"))
+                .andExpect(status().isConflict());
+
+        mockMvc.perform(put(location+"/placed"))
+                .andExpect(status().isNoContent());
+    }
+}

--
Gitblit v1.7.1