From eba5b938f5aa356a08e93a84f7c6f3f5f25ad59b Mon Sep 17 00:00:00 2001 From: Felipe Reis Date: Sun, 18 Jun 2017 16:39:30 +1000 Subject: [PATCH] BAEL-809: Add Kotlin Mockito supporting code (#2102) --- kotlin-mockito/README.md | 8 ++ kotlin-mockito/pom.xml | 115 ++++++++++++++++++ .../java/com/baeldung/java/ArrayExample.java | 24 ++++ .../main/java/com/baeldung/java/Customer.java | 24 ++++ .../java/com/baeldung/java/StringUtils.java | 7 ++ .../kotlin/com/baeldung/kotlin/BookService.kt | 6 + .../com/baeldung/kotlin/LendBookManager.kt | 11 ++ .../kotlin/JavaCallToKotlinUnitTest.java | 17 +++ .../baeldung/kotlin/LendBookManagerTest.kt | 33 +++++ 9 files changed, 245 insertions(+) create mode 100644 kotlin-mockito/README.md create mode 100644 kotlin-mockito/pom.xml create mode 100644 kotlin-mockito/src/main/java/com/baeldung/java/ArrayExample.java create mode 100644 kotlin-mockito/src/main/java/com/baeldung/java/Customer.java create mode 100644 kotlin-mockito/src/main/java/com/baeldung/java/StringUtils.java create mode 100644 kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/BookService.kt create mode 100644 kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/LendBookManager.kt create mode 100644 kotlin-mockito/src/test/java/com/baeldung/kotlin/JavaCallToKotlinUnitTest.java create mode 100644 kotlin-mockito/src/test/kotlin/com/baeldung/kotlin/LendBookManagerTest.kt diff --git a/kotlin-mockito/README.md b/kotlin-mockito/README.md new file mode 100644 index 0000000000..1408bc1ebd --- /dev/null +++ b/kotlin-mockito/README.md @@ -0,0 +1,8 @@ +## Relevant articles: + +- [Introduction to the Kotlin Language](http://www.baeldung.com/kotlin) +- [A guide to the “when{}” block in Kotlin](http://www.baeldung.com/kotlin-when) +- [Comprehensive Guide to Null Safety in Kotlin](http://www.baeldung.com/kotlin-null-safety) +- [Kotlin Java Interoperability](http://www.baeldung.com/kotlin-java-interoperability) +- [Difference Between “==” and “===” in Kotlin](http://www.baeldung.com/kotlin-equality-operators) +- [Generics in Kotlin](http://www.baeldung.com/kotlin-generics) diff --git a/kotlin-mockito/pom.xml b/kotlin-mockito/pom.xml new file mode 100644 index 0000000000..47f4f8947f --- /dev/null +++ b/kotlin-mockito/pom.xml @@ -0,0 +1,115 @@ + + + 4.0.0 + + kotlin-mockito + 1.0-SNAPSHOT + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + org.mockito + mockito-all + ${mockito.version} + test + + + junit + junit + ${junit.version} + test + + + + + + ${project.basedir}/src/main/kotlin + ${project.basedir}/src/test/kotlin + + + + kotlin-maven-plugin + org.jetbrains.kotlin + ${kotlin.version} + + + compile + + compile + + + + ${project.basedir}/src/main/kotlin + ${project.basedir}/src/main/java + + + + + test-compile + + test-compile + + + + ${project.basedir}/src/test/kotlin + ${project.basedir}/src/test/java + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler.version} + + + + default-compile + none + + + + default-testCompile + none + + + java-compile + compile + + compile + + + + java-test-compile + test-compile + + testCompile + + + + + + + + + 1.9.5 + 4.12 + 1.1.2-4 + 3.5.1 + + + diff --git a/kotlin-mockito/src/main/java/com/baeldung/java/ArrayExample.java b/kotlin-mockito/src/main/java/com/baeldung/java/ArrayExample.java new file mode 100644 index 0000000000..ef91db517b --- /dev/null +++ b/kotlin-mockito/src/main/java/com/baeldung/java/ArrayExample.java @@ -0,0 +1,24 @@ +package com.baeldung.java; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +public class ArrayExample { + + public int sumValues(int[] nums) { + int res = 0; + + for (int x:nums) { + res += x; + } + + return res; + } + + public void writeList() throws IOException { + File file = new File("E://file.txt"); + FileReader fr = new FileReader(file); + fr.close(); + } +} diff --git a/kotlin-mockito/src/main/java/com/baeldung/java/Customer.java b/kotlin-mockito/src/main/java/com/baeldung/java/Customer.java new file mode 100644 index 0000000000..0156bf7b44 --- /dev/null +++ b/kotlin-mockito/src/main/java/com/baeldung/java/Customer.java @@ -0,0 +1,24 @@ +package com.baeldung.java; + +public class Customer { + + private String firstName; + private String lastName; + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + +} diff --git a/kotlin-mockito/src/main/java/com/baeldung/java/StringUtils.java b/kotlin-mockito/src/main/java/com/baeldung/java/StringUtils.java new file mode 100644 index 0000000000..f405924cdf --- /dev/null +++ b/kotlin-mockito/src/main/java/com/baeldung/java/StringUtils.java @@ -0,0 +1,7 @@ +package com.baeldung.java; + +public class StringUtils { + public static String toUpperCase(String name) { + return name.toUpperCase(); + } +} diff --git a/kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/BookService.kt b/kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/BookService.kt new file mode 100644 index 0000000000..993ee555af --- /dev/null +++ b/kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/BookService.kt @@ -0,0 +1,6 @@ +package com.baeldung.kotlin + +interface BookService { + fun inStock(bookId: Int): Boolean + fun lend(bookId: Int, memberId: Int) +} \ No newline at end of file diff --git a/kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/LendBookManager.kt b/kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/LendBookManager.kt new file mode 100644 index 0000000000..5a4718162a --- /dev/null +++ b/kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/LendBookManager.kt @@ -0,0 +1,11 @@ +package com.baeldung.kotlin + +class LendBookManager(val bookService:BookService) { + fun checkout(bookId: Int, memberId: Int) { + if(bookService.inStock(bookId)) { + bookService.lend(bookId, memberId) + } else { + throw IllegalStateException("Book is not available") + } + } +} diff --git a/kotlin-mockito/src/test/java/com/baeldung/kotlin/JavaCallToKotlinUnitTest.java b/kotlin-mockito/src/test/java/com/baeldung/kotlin/JavaCallToKotlinUnitTest.java new file mode 100644 index 0000000000..370f24785a --- /dev/null +++ b/kotlin-mockito/src/test/java/com/baeldung/kotlin/JavaCallToKotlinUnitTest.java @@ -0,0 +1,17 @@ +package com.baeldung.kotlin; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class JavaCallToKotlinUnitTest { + @Test + public void givenKotlinClass_whenCallFromJava_shouldProduceResults() { + //when + int res = new MathematicsOperations().addTwoNumbers(2, 4); + + //then + assertEquals(6, res); + + } +} diff --git a/kotlin-mockito/src/test/kotlin/com/baeldung/kotlin/LendBookManagerTest.kt b/kotlin-mockito/src/test/kotlin/com/baeldung/kotlin/LendBookManagerTest.kt new file mode 100644 index 0000000000..3998d6a92e --- /dev/null +++ b/kotlin-mockito/src/test/kotlin/com/baeldung/kotlin/LendBookManagerTest.kt @@ -0,0 +1,33 @@ +package com.baeldung.kotlin; + +import org.junit.Assert +import org.junit.Test +import java.lang.IllegalStateException +import org.mockito.InjectMocks +import org.mockito.Mockito + +class LibraryManagementTest { + @Test(expected = IllegalStateException::class) + fun whenBookIsNotAvailable_thenAnExceptionIsThrown() { + val mockBookService = Mockito.mock(BookService::class.java) + + Mockito.`when`(mockBookService.inStock(100)).thenReturn(false) + + val manager = LendBookManager(mockBookService) + + manager.checkout(100, 1) + } + + @Test + fun whenBookIsAvailable_thenLendMethodIsCalled() { + val mockBookService = Mockito.mock(BookService::class.java) + + Mockito.`when`(mockBookService.inStock(100)).thenReturn(true) + + val manager = LendBookManager(mockBookService) + + manager.checkout(100, 1) + + Mockito.`verify`(mockBookService).lend(100, 1) + } +} \ No newline at end of file