From 427d4f5bd56ef76d0b9c960d43e0cf328b0d7086 Mon Sep 17 00:00:00 2001 From: Sebastien Deleuze Date: Mon, 24 Jul 2017 14:16:50 +0200 Subject: [PATCH] =?UTF-8?q?DATAMONGO-1748=20-=20Tweaked=20Kotlin=20extensi?= =?UTF-8?q?ons=20to=20add=20Collection=20variant=20of=20Criteria.inValues(?= =?UTF-8?q?=E2=80=A6)=20alias.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original pull request: #489. --- .../mongodb/core/query/CriteriaExtensions.kt | 8 +++++++ .../core/query/CriteriaExtensionsTests.kt | 24 +++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/query/CriteriaExtensions.kt b/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/query/CriteriaExtensions.kt index 5c331627b..0022d5c91 100644 --- a/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/query/CriteriaExtensions.kt +++ b/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/query/CriteriaExtensions.kt @@ -23,6 +23,14 @@ package org.springframework.data.mongodb.core.query */ fun Criteria.isEqualTo(o: Any?) : Criteria = `is`(o) +/** + * Extension for [Criteria.in] providing an `inValues` alias since `in` is a reserved keyword in Kotlin. + * + * @author Sebastien Deleuze + * @since 2.0 + */ +fun Criteria.inValues(c: Collection) : Criteria = `in`(c) + /** * Extension for [Criteria.in] providing an `inValues` alias since `in` is a reserved keyword in Kotlin. * diff --git a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/query/CriteriaExtensionsTests.kt b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/query/CriteriaExtensionsTests.kt index 983ca17b9..cbacb1b11 100644 --- a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/query/CriteriaExtensionsTests.kt +++ b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/query/CriteriaExtensionsTests.kt @@ -50,7 +50,7 @@ class CriteriaExtensionsTests { } @Test - fun `inValues() extension should call its Java counterpart`() { + fun `inValues(varags) extension should call its Java counterpart`() { val foo = "foo" val bar = "bar" @@ -61,10 +61,30 @@ class CriteriaExtensionsTests { } @Test - fun `inValues() extension should support nullable values`() { + fun `inValues(varags) extension should support nullable values`() { criteria.inValues(null, null) Mockito.verify(criteria, Mockito.times(1)).`in`(null, null) } + + @Test + fun `inValues(Collection) extension should call its Java counterpart`() { + + val c = listOf("foo", "bar") + + criteria.inValues(c) + + Mockito.verify(criteria, Mockito.times(1)).`in`(c) + } + + @Test + fun `inValues(Collection) extension should support nullable values`() { + + val c = listOf("foo", null, "bar") + + criteria.inValues(c) + + Mockito.verify(criteria, Mockito.times(1)).`in`(c) + } }