diff --git a/src/main/kotlin/me/yujinyan/faktory/Factory.kt b/src/main/kotlin/me/yujinyan/faktory/Factory.kt index 59456eb..485961b 100644 --- a/src/main/kotlin/me/yujinyan/faktory/Factory.kt +++ b/src/main/kotlin/me/yujinyan/faktory/Factory.kt @@ -50,6 +50,8 @@ public class Factory(private val kClass: KClass, block: (Config.() - } } + public fun make(range: IntRange): Iterable = make(range.random()) + /** * Generate sample data. * diff --git a/src/test/kotlin/me/yujinyan/faktory/FactoryTest.kt b/src/test/kotlin/me/yujinyan/faktory/FactoryTest.kt index cd52a25..2c920f3 100644 --- a/src/test/kotlin/me/yujinyan/faktory/FactoryTest.kt +++ b/src/test/kotlin/me/yujinyan/faktory/FactoryTest.kt @@ -1,5 +1,7 @@ package me.yujinyan.faktory +import io.kotest.matchers.collections.shouldHaveAtLeastSize +import io.kotest.matchers.collections.shouldHaveAtMostSize import io.kotest.matchers.collections.shouldHaveSize import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe @@ -67,4 +69,16 @@ class FactoryTest { Post::author / Author::name by { "Peter Parker" } }.author.name shouldBe "Peter Parker" } + + @Test + fun `can configure list length`() { + val postFactory = factory { + Post::images by { factory().make(5..10) } + } + + postFactory.make().images.apply { + shouldHaveAtMostSize(10) + shouldHaveAtLeastSize(5) + } + } } \ No newline at end of file diff --git a/src/test/kotlin/me/yujinyan/faktory/TestClassesDeclarations.kt b/src/test/kotlin/me/yujinyan/faktory/TestClassesDeclarations.kt index 78d067c..0b63115 100644 --- a/src/test/kotlin/me/yujinyan/faktory/TestClassesDeclarations.kt +++ b/src/test/kotlin/me/yujinyan/faktory/TestClassesDeclarations.kt @@ -4,10 +4,15 @@ data class Post( val title: String, val body: String, val author: Author, + val images: List ) data class Author( val name: String ) +data class Image( + val url: String +) +