Parcourir la source

Unit test PollController

Mockito is lackluster, but i missed you, junit <3
vvmk il y a 8 ans
Parent
révision
6b277a1f68

+ 2
- 2
pom.xml Voir le fichier

@@ -10,13 +10,13 @@
10 10
     <parent>
11 11
         <groupId>org.springframework.boot</groupId>
12 12
         <artifactId>spring-boot-starter-parent</artifactId>
13
-        <version>1.5.3.RELEASE</version>
13
+        <version>2.0.0.RELEASE</version>
14 14
         <relativePath/> <!-- lookup parent from repository -->
15 15
     </parent>
16 16
     <properties>
17 17
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
18 18
         <start-class>io.zipcoder.tc_spring_poll_application.QuickPollApplication</start-class>
19
-        <java.version>1.7</java.version>
19
+        <java.version>9</java.version>
20 20
     </properties>
21 21
     <dependencies>
22 22
         <dependency>

+ 34
- 0
src/main/java/io/zipcoder/tc_spring_poll_application/controllers/PollController.java Voir le fichier

@@ -0,0 +1,34 @@
1
+package io.zipcoder.tc_spring_poll_application.controllers;
2
+
3
+import io.zipcoder.tc_spring_poll_application.domain.Poll;
4
+import io.zipcoder.tc_spring_poll_application.repositories.PollRepository;
5
+import org.springframework.beans.factory.annotation.Autowired;
6
+import org.springframework.http.HttpStatus;
7
+import org.springframework.http.ResponseEntity;
8
+import org.springframework.web.bind.annotation.RequestMapping;
9
+import org.springframework.web.bind.annotation.RequestMethod;
10
+import org.springframework.web.bind.annotation.RestController;
11
+
12
+/**
13
+ * project: spring-demo
14
+ * package: io.zipcoder.tc_spring_poll_application.controllers
15
+ * author: https://github.com/vvmk
16
+ * date: 4/5/18
17
+ */
18
+@RestController
19
+public class PollController {
20
+
21
+    private PollRepository pollRepository;
22
+
23
+    @Autowired
24
+    public PollController(PollRepository pollRepository) {
25
+        this.pollRepository = pollRepository;
26
+    }
27
+
28
+    @RequestMapping(name = "/polls", method = RequestMethod.GET)
29
+    public ResponseEntity<Iterable<Poll>> getAllPolls() {
30
+        Iterable<Poll> allPolls = pollRepository.findAll();
31
+        return new ResponseEntity<Iterable<Poll>>(allPolls, HttpStatus.OK);
32
+    }
33
+
34
+}

+ 4
- 0
src/main/java/io/zipcoder/tc_spring_poll_application/domain/Poll.java Voir le fichier

@@ -25,6 +25,10 @@ public class Poll {
25 25
     @OrderBy
26 26
     private Set<Option> options;
27 27
 
28
+    public Poll() {
29
+        // -_-
30
+    }
31
+
28 32
     public Long getId() {
29 33
         return Id;
30 34
     }

+ 62
- 0
src/test/java/io/zipcoder/tc_spring_poll_application/controllers/PollControllerTest.java Voir le fichier

@@ -0,0 +1,62 @@
1
+package io.zipcoder.tc_spring_poll_application.controllers;
2
+
3
+import io.zipcoder.tc_spring_poll_application.domain.Poll;
4
+import io.zipcoder.tc_spring_poll_application.repositories.PollRepository;
5
+import org.junit.Before;
6
+import org.junit.Test;
7
+import org.mockito.InjectMocks;
8
+import org.mockito.Mock;
9
+import org.mockito.Mockito;
10
+import org.mockito.MockitoAnnotations;
11
+import org.springframework.util.Assert;
12
+
13
+import java.util.ArrayList;
14
+import java.util.List;
15
+
16
+import static org.junit.Assert.assertEquals;
17
+import static org.mockito.Mockito.mock;
18
+import static org.mockito.Mockito.verify;
19
+
20
+/**
21
+ * project: spring-demo
22
+ * package: io.zipcoder.tc_spring_poll_application.controllers
23
+ * author: https://github.com/vvmk
24
+ * date: 4/5/18
25
+ */
26
+public class PollControllerTest {
27
+
28
+    @InjectMocks
29
+    private PollController pollCtrl;
30
+
31
+    @Mock
32
+    private PollRepository pollRepo;
33
+
34
+    private List<Poll> polls = new ArrayList<>();
35
+
36
+    @Before
37
+    public void setup() {
38
+        MockitoAnnotations.initMocks(this);
39
+
40
+        Mockito.when(pollRepo.findAll()).thenReturn(polls);
41
+    }
42
+
43
+    @Test
44
+    public void getAllPollsReturnsIterable() {
45
+        Class<?> expected = Iterable.class;
46
+        Class<?> actual = pollCtrl.getAllPolls().getBody().getClass();
47
+
48
+        verify(pollRepo).findAll();
49
+        Assert.isAssignable(expected, actual);
50
+    }
51
+
52
+    @Test
53
+    public void getAllPollsReturnsPolls() {
54
+        polls.add(mock(Poll.class));
55
+
56
+        long expected = 1;
57
+        long actual = pollCtrl.getAllPolls().getBody().spliterator().getExactSizeIfKnown();
58
+
59
+        verify(pollRepo).findAll();
60
+        assertEquals(expected, actual);
61
+    }
62
+}