How to use Arb.Companion.domain method of io.kotest.property.arbitrary.domain class

Best Kotest code snippet using io.kotest.property.arbitrary.domain.Arb.Companion.domain

CategoryRepositoryCreateSpec.kt

Source:CategoryRepositoryCreateSpec.kt Github

copy

Full Screen

1package com.gaveship.category.domain.model2import com.gaveship.category.Mock3import io.kotest.assertions.throwables.shouldThrow4import io.kotest.core.spec.style.ExpectSpec5import io.kotest.matchers.collections.shouldHaveSize6import io.kotest.matchers.collections.singleElement7import io.kotest.matchers.nulls.beNull8import io.kotest.matchers.shouldBe9import io.kotest.matchers.shouldHave10import io.kotest.matchers.shouldNot11import io.kotest.property.Arb12import io.kotest.property.arbitrary.chunked13import io.kotest.property.arbitrary.next14import io.kotest.property.arbitrary.single15import io.kotest.property.arbitrary.string16import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest17import org.springframework.data.jpa.repository.config.EnableJpaAuditing18import javax.validation.ConstraintViolation19import javax.validation.ConstraintViolationException20@EnableJpaAuditing21@DataJpaTest(22 showSql = true,23 properties = [24 "spring.flyway.enabled=false",25 "spring.jpa.hibernate.ddl-auto=create"26 ]27)28class CategoryRepositoryCreateSpec(29 private val categoryRepository: CategoryRepository30) : ExpectSpec() {31 companion object {32 private const val ONE_TO_FIFTY_MESSAGE = "크기가 0에서 50 사이여야 합니다"33 }34 init {35 context("Category 생성을 할 때") {36 val targetCategory = Mock.category().single()37 expect("Name만 있으면 Category가 생성된다.") {38 val savedCategory = categoryRepository.save(targetCategory)39 savedCategory.id shouldNot beNull()40 savedCategory.name shouldBe targetCategory.name41 }42 expect("Name이 비어있어도 Category가 생성된다.") {43 targetCategory.name = ""44 val savedCategory = categoryRepository.save(targetCategory)45 savedCategory.id shouldNot beNull()46 savedCategory.name shouldBe targetCategory.name47 }48 expect("Name과 하위 Category 정보로 Category가 생성된다.") {49 val categoryChildren = Mock.category().chunked(10, 10).single()50 targetCategory.children = categoryChildren51 val savedCategory = categoryRepository.save(targetCategory)52 savedCategory.id shouldNot beNull()53 savedCategory.name shouldBe targetCategory.name54 savedCategory.children shouldNot beNull()55 savedCategory.children!! shouldHaveSize categoryChildren.size56 }57 expect("Name과 2Depth의 하위 Categories로 Category가 생성된다.") {58 val childrenOfChildrenOfChildren = Mock.category().chunked(10, 10).single()59 val childrenOfChildren = Mock.category(children = childrenOfChildrenOfChildren).chunked(10, 10).single()60 val categoryChildren = Mock.category(children = childrenOfChildren).chunked(20, 20).single()61 targetCategory.children = categoryChildren62 val savedCategory = categoryRepository.save(targetCategory)63 savedCategory.id shouldNot beNull()64 savedCategory.name shouldBe targetCategory.name65 savedCategory.children shouldNot beNull()66 savedCategory.children!! shouldHaveSize categoryChildren.size67 savedCategory.children!!.forEach { children ->68 children.children shouldNot beNull()69 children.children!! shouldHaveSize childrenOfChildren.size70 children.children!!.forEach { childrenOfChildren ->71 childrenOfChildren.children shouldNot beNull()72 childrenOfChildren.children!! shouldHaveSize childrenOfChildrenOfChildren.size73 }74 }75 }76 expect("Name이 임계치를 초과하면 Category를 생성할 수 없다.") {77 val nameThreshold = 5178 targetCategory.name = Arb.string(nameThreshold, nameThreshold).next()79 val constraintViolationException = shouldThrow<ConstraintViolationException> {80 categoryRepository.save(targetCategory)81 }82 constraintViolationException.constraintViolations shouldHave83 singleElement {84 isEqualCheckOneToFiftyMessage(it) && isEqualTestName(it, targetCategory)85 }86 }87 }88 }89 private fun isEqualCheckOneToFiftyMessage(it: ConstraintViolation<*>) =90 it.message == ONE_TO_FIFTY_MESSAGE91 private fun isEqualTestName(92 it: ConstraintViolation<*>,93 targetCategory: Category94 ) = it.invalidValue.toString() == targetCategory.name95}...

Full Screen

Full Screen

EmailTests.kt

Source:EmailTests.kt Github

copy

Full Screen

1/*2 * Copyright 2022 the original author or authors.3 *4 * Licensed under the Apache License, Version 2.0 (the "License");5 * you may not use this file except in compliance with the License.6 * You may obtain a copy of the License at7 *8 * https://www.apache.org/licenses/LICENSE-2.09 *10 * Unless required by applicable law or agreed to in writing, software11 * distributed under the License is distributed on an "AS IS" BASIS,12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13 * See the License for the specific language governing permissions and14 * limitations under the License.15 */16package io.github.hwolf.kvalidation.common17import io.github.hwolf.kvalidation.ConstraintViolation18import io.github.hwolf.kvalidation.PropertyName19import io.github.hwolf.kvalidation.PropertyType20import io.github.hwolf.kvalidation.validate21import io.github.hwolf.kvalidation.validator22import io.kotest.core.spec.style.FunSpec23import io.kotest.datatest.withData24import io.kotest.property.Arb25import io.kotest.property.arbitrary.domain26import io.kotest.property.arbitrary.email27import io.kotest.property.arbitrary.emailLocalPart28import io.kotest.property.arbitrary.map29import io.kotest.property.checkAll30import strikt.api.expectThat31class EmailTests : FunSpec({32 data class EmailBean(val email: String)33 val normalMail = "max.mustermann@muster.de"34 val localMail = "max.mustermann@localhost"35 context("Validate mail") {36 val validator = validator<EmailBean> { EmailBean::email { email() } }37 context("is valid mail") {38 withData(listOf(normalMail)) { mail ->39 val actual = validator.validate(EmailBean(mail))40 expectThat(actual).isValid()41 }42 }43 context("is invalid mail") {44 withData(localMail, "max.mustermann@", "muster.xy") { mail ->45 val actual = validator.validate(EmailBean(mail))46 expectThat(actual).hasViolations(ConstraintViolation(47 propertyPath = listOf(PropertyName("email")),48 propertyType = PropertyType("String"),49 propertyValue = mail,50 constraint = Email(emptySet())))51 }52 }53 context("random mail is valid") {54 checkAll(Arb.email()) { mail ->55 val actual = validator.validate(EmailBean(mail))56 expectThat(actual).isValid()57 }58 }59 context("random local mail is invalid") {60 checkAll(Arb.emailLocalPart()) { mail ->61 val actual = validator.validate(EmailBean(mail))62 expectThat(actual).not().isValid()63 }64 }65 }66 context("validate local mails") {67 val validator = validator<EmailBean> { EmailBean::email { email(Email.Option.AllowLocal) } }68 context("is valid local mail") {69 withData(normalMail, localMail) { mail ->70 val actual = validator.validate(EmailBean(mail))71 expectThat(actual).isValid()72 }73 }74 context("is invalid local mail") {75 withData("max.mustermann@", "muster.xy") { mail ->76 val actual = validator.validate(EmailBean(mail))77 expectThat(actual).hasViolations(ConstraintViolation(78 propertyPath = listOf(PropertyName("email")),79 propertyType = PropertyType("String"),80 propertyValue = mail,81 constraint = Email(setOf(Email.Option.AllowLocal))))82 }83 }84 context("random mail is valid") {85 checkAll(Arb.email()) { mail ->86 val actual = validator.validate(EmailBean(mail))87 expectThat(actual).isValid()88 }89 }90 context("random local mail is valid") {91 checkAll(Arb.email(domainGen = Arb.serverName())) { mail ->92 val actual = validator.validate(EmailBean(mail))93 expectThat(actual).isValid()94 }95 }96 }97})98private fun Arb.Companion.serverName() = domain().map { it.substring(0, it.indexOf('.')) }...

Full Screen

Full Screen

EntitiesGen.kt

Source:EntitiesGen.kt Github

copy

Full Screen

1package es.ffgiraldez.comicsearch.comics.gen2import arrow.core.Either3import arrow.core.left4import arrow.core.right5import es.ffgiraldez.comicsearch.comics.domain.ComicError6import es.ffgiraldez.comicsearch.comics.domain.Volume7import es.ffgiraldez.comicsearch.query.base.presentation.QueryViewState8import io.kotest.property.Arb9import io.kotest.property.arbitrary.*10fun Arb.Companion.suggestions(): Arb<Either<ComicError, List<String>>> = arb {11 generateSequence {12 when (Arb.bool().next(it)) {13 true -> Arb.comicError().next(it).left()14 false -> Arb.suggestionList().next(it).right()15 }16 }17}18fun Arb.Companion.suggestionList(): Arb<List<String>> = arb {19 generateSequence {20 Arb.query().values(it).take(10).map { it.value }.toList()21 }22}23fun Arb.Companion.suggestionsViewState(): Arb<QueryViewState<String>> = arb(24 listOf(QueryViewState.idle(), QueryViewState.loading())25) {26 generateSequence {27 Arb.suggestions().next(it).fold(28 { QueryViewState.error(it) },29 { QueryViewState.result(it) }30 )31 }32}33fun Arb.Companion.suggestionsErrorViewState(): Arb<QueryViewState.Error> = suggestionsViewState()34 .filter { it is QueryViewState.Error }35 .map { it as QueryViewState.Error }36fun Arb.Companion.suggestionsResultViewState(): Arb<QueryViewState.Result<String>> = suggestionsViewState()37 .filter { it is QueryViewState.Result<String> }38 .map { it as QueryViewState.Result<String> }39fun Arb.Companion.search(): Arb<Either<ComicError, List<Volume>>> = arb {40 generateSequence {41 when (Arb.bool().next(it)) {42 true -> Arb.comicError().next(it).left()43 false -> Arb.volumeList().next(it).right()44 }45 }46}47fun Arb.Companion.comicError(): Arb<ComicError> = arb { rs ->48 generateSequence {49 when (Arb.bool().next(rs)) {50 true -> ComicError.EmptyResultsError51 false -> ComicError.NetworkError52 }53 }54}55fun Arb.Companion.query(): Arb<String> = Arb.string(minSize = 1, maxSize = 10)56fun Arb.Companion.volume(): Arb<Volume> = Arb.bind(Arb.string(), Arb.string(), Arb.string(), ::Volume)57fun Arb.Companion.volumeList(): Arb<List<Volume>> = arb {58 generateSequence {59 Arb.volume().values(it).take(10).map { it.value }.toList()60 }61}62fun Arb.Companion.searchViewState(): Arb<QueryViewState<Volume>> = arb(63 listOf(QueryViewState.idle(), QueryViewState.loading())64) {65 generateSequence {66 Arb.search().next(it).fold(67 { QueryViewState.error(it) },68 { QueryViewState.result(it) }69 )70 }71}72fun Arb.Companion.searchErrorViewState(): Arb<QueryViewState.Error> = searchViewState()73 .filter { it is QueryViewState.Error }74 .map { it as QueryViewState.Error }75fun Arb.Companion.searchResultViewState(): Arb<QueryViewState.Result<Volume>> = searchViewState()76 .filter { it is QueryViewState.Result<Volume> }77 .map { it as QueryViewState.Result<Volume> }...

Full Screen

Full Screen

emails.kt

Source:emails.kt Github

copy

Full Screen

1package io.kotest.property.arbitrary2import io.kotest.property.Arb3import io.kotest.property.Gen4import io.kotest.property.azstring5import kotlin.random.nextInt6@Deprecated("This function is deprecated since 5.0. Use Arb.email(localPartGen, domainGen). This will be removed in 6.0")7fun Arb.Companion.email(usernameSize: IntRange = 3..10, domainSize: IntRange): Arb<String> {8 val tlds = listOf("com", "net", "gov", "co.uk", "jp", "nl", "ru", "de", "com.br", "it", "pl", "io")9 return arbitrary {10 val tld = tlds.random(it.random)11 val username = it.random.azstring(size = it.random.nextInt(usernameSize))12 val domain = it.random.azstring(size = it.random.nextInt(domainSize))13 val usernamep = if (username.length > 5 && it.random.nextBoolean()) {14 username.take(username.length / 2) + "." + username.drop(username.length / 2)15 } else username16 "$usernamep@$domain.$tld"17 }18}19fun Arb.Companion.email(20 localPartGen: Gen<String> = emailLocalPart(),21 domainGen: Gen<String> = domain()22) = bind(localPartGen, domainGen) { localPart, domain -> "$localPart@$domain" }23/**24 * https://en.wikipedia.org/wiki/Email_address#Local-part25 *26 * If unquoted, it may use any of these ASCII characters:27 * - uppercase and lowercase Latin letters A to Z and a to z28 * - digits 0 to 929 * - printable characters !#$%&'*+-/=?^_`{|}~30 * - dot ., provided that it is not the first or last character and provided also that it does not appear consecutively31 * (e.g., John..Doe@example.com is not allowed)32 */33fun Arb.Companion.emailLocalPart(): Arb<String> = arbitrary { rs ->34 val possibleChars = ('A'..'Z') + ('a'..'z') + ('0'..'9') + """!#$%&'*+-/=?^_`{|}~.""".toList()35 val firstAndLastChars = possibleChars - '.'36 val size = rs.random.nextInt(1..64)37 val str = if (size <= 2) {38 List(size) { firstAndLastChars.random(rs.random) }.joinToString("")39 } else {40 firstAndLastChars.random(rs.random) +41 List(size - 2) { possibleChars.random(rs.random) }.joinToString("") +42 firstAndLastChars.random(rs.random)43 }44 str.replace("\\.+".toRegex(), ".")45}...

Full Screen

Full Screen

PasswordSpec.kt

Source:PasswordSpec.kt Github

copy

Full Screen

1package eu.techzo.fwa.user2import eu.techzo.fwa.domain.Password3import eu.techzo.fwa.domain.Password.Companion.validate4import io.kotest.assertions.arrow.core.shouldBeInvalid5import io.kotest.assertions.arrow.core.shouldBeValid6import io.kotest.core.spec.style.FreeSpec7import io.kotest.property.Arb8import io.kotest.property.arbitrary.stringPattern9import io.kotest.property.checkAll10class PasswordSpec : FreeSpec({11 "should successfully create a password" {12 checkAll(Arb.stringPattern("[a-z][A-Z][0-9]{10,80}")) { value ->13 Password(value).validate().shouldBeValid()14 }15 }16 "should not create a password if lowercase chars are missing" {17 checkAll(Arb.stringPattern("[A-Z][0-9]{8,99}")) { value ->18 Password(value).validate().shouldBeInvalid()19 }20 }21 "should not create a password if uppercase chars are missing" {22 checkAll(Arb.stringPattern("[a-z][0-9]{8,99}")) { value ->23 Password(value).validate().shouldBeInvalid()24 }25 }26 "should not create a password if numbers are missing" {27 checkAll(Arb.stringPattern("[A-Z][a-z]{8,99}")) { value ->28 Password(value).validate().shouldBeInvalid()29 }30 }31 "should not create a password if length is not between 5 and 100 chars" {32 checkAll(Arb.stringPattern("[a-z][A-Z][0-9]{101,150}")) { value ->33 Password(value).validate().shouldBeInvalid()34 }35 }36})...

Full Screen

Full Screen

UsernameSpec.kt

Source:UsernameSpec.kt Github

copy

Full Screen

1package eu.techzo.fwa.user2import eu.techzo.fwa.domain.Username3import eu.techzo.fwa.domain.Username.Companion.validate4import io.kotest.assertions.arrow.core.shouldBeInvalid5import io.kotest.assertions.arrow.core.shouldBeValid6import io.kotest.core.spec.style.FreeSpec7import io.kotest.property.Arb8import io.kotest.property.arbitrary.stringPattern9import io.kotest.property.checkAll10class UsernameSpec : FreeSpec({11 "should create a valid username" {12 checkAll(Arb.stringPattern("[a-z0-9._-]{6,30}")) { value ->13 Username(value).validate().shouldBeValid()14 }15 }16 "should not create a username if not allowed chars are used" {17 checkAll(Arb.stringPattern("[#/*()]{6,30}")) { value ->18 Username(value).validate().shouldBeInvalid()19 }20 }21 "should not create a username if length is invalid" {22 checkAll(Arb.stringPattern("[a-z0-9._-]{31,100}")) { value ->23 Username(value).validate().shouldBeInvalid()24 }25 }26})...

Full Screen

Full Screen

domains.kt

Source:domains.kt Github

copy

Full Screen

1package io.kotest.property.arbs2import io.kotest.property.Arb3import io.kotest.property.arbitrary.arbitrary4/**5 * Generates domains where the domain name is a random string with the given length,6 * and the tld is a real country level tld.7 *8 * Will randomly include www, cdn and www2 prefixes.9 */10fun Arb.Companion.domain(nameLength: IntRange = 3..20): Arb<Domain> = arbitrary { rs ->11 val prefix = prefixes.random(rs.random)12 val name = List(rs.random.nextInt(nameLength.first, nameLength.last)) { ('a'..'z').random(rs.random) }.joinToString("")13 val domain = listOfNotNull(prefix, name, tlds.random(rs.random)).joinToString(".")14 Domain(domain)15}16private val prefixes = listOf("www", "www2", "cdn", null)17private val tlds = loadResourceAsLines("/country_tlds.txt")18data class Domain(val value: String)...

Full Screen

Full Screen

ResponseError.kt

Source:ResponseError.kt Github

copy

Full Screen

1package uk.co.appsplus.bootstrap.testing.arbs.ext2import com.squareup.moshi.Moshi3import io.kotest.property.Arb4import io.kotest.property.arbitrary.list5import io.kotest.property.arbitrary.map6import io.kotest.property.arbitrary.string7import uk.co.appsplus.bootstrap.network.models.ResponseError8fun Arb.Companion.domainError(): Arb<ResponseError> {9 return Arb10 .map(Arb.string(), Arb.list(Arb.string(), range = 1..3), minSize = 0, maxSize = 2)11 .map { ResponseError(it) }12}13fun ResponseError.toJson(): String {14 return Moshi.Builder().build().adapter(ResponseError::class.java).toJson(this)15}16fun Arb.Companion.domainErrorJson(): Arb<String> {17 return domainError()18 .map {19 it.toJson()20 }21}...

Full Screen

Full Screen

Arb.Companion.domain

Using AI Code Generation

copy

Full Screen

1import io.kotest.property.arbitrary.domain2import io.kotest.property.arbitrary.domainName3class DomainGeneratorTest : WordSpec({4 "domain generator" should {5 "generate valid domain names" {6 val domainGen = domain()7 forAll(domainGen) {8 it.isValidDomain()9 }10 }11 "generate valid subdomains" {12 val domainGen = domain()13 forAll(domainGen) {14 it.isValidSubdomain()15 }16 }17 "generate valid domain names with a given domain name" {18 val domainGen = domain("kotest.io")19 forAll(domainGen) {20 it.isValidDomain()21 }22 }23 "generate valid subdomains with a given domain name" {24 val domainGen = domain("kotest.io")25 forAll(domainGen) {26 it.isValidSubdomain()27 }28 }29 "generate valid domain names with a given domain name and subdomain" {30 val domainGen = domain("kotest.io", "www")31 forAll(domainGen) {32 it.isValidDomain()33 }34 }35 "generate valid subdomains with a given domain name and subdomain" {36 val domainGen = domain("kotest.io", "www")37 forAll(domainGen) {38 it.isValidSubdomain()39 }40 }41 "generate valid domain names with a given domain name and subdomain" {42 val domainGen = domain("kotest.io", "www")43 forAll(domainGen) {44 it.isValidDomain()45 }46 }47 "generate valid subdomains with a given domain name and subdomain" {48 val domainGen = domain("kotest.io", "www")49 forAll(domainGen) {50 it.isValidSubdomain()51 }52 }53 "generate valid domain names with a given domain name and subdomain" {54 val domainGen = domain("kotest.io", "www")55 forAll(domainGen) {56 it.isValidDomain()57 }58 }59 "generate valid subdomains with a given domain name and subdomain" {60 val domainGen = domain("kotest.io", "www")61 forAll(domainGen) {62 it.isValidSubdomain()63 }64 }65 "generate valid domain names with a given domain name and subdomain" {66 val domainGen = domain("kotest.io", "www")

Full Screen

Full Screen

Arb.Companion.domain

Using AI Code Generation

copy

Full Screen

1val domain: Domain<Int> = domain { Arb.int(0..100) }2val iterations: Iterations<Int> = iterations { Arb.int(0..100) }3val iterations: Iterations<Int> = iterations { Arb.int(0..100) }4val iterations: Iterations<Int> = iterations { Arb.int(0..100) }5val iterations: Iterations<Int> = iterations { Arb.int(0..100) }6val iterations: Iterations<Int> = iterations { Arb.int(0..100) }7val iterations: Iterations<Int> = iterations { Arb.int(0..100) }8val iterations: Iterations<Int> = iterations { Arb.int(0..100) }9val iterations: Iterations<Int> = iterations { Arb.int(0..100) }10val iterations: Iterations<Int> = iterations { Arb.int(0..100) }11val iterations: Iterations<Int> = iterations {

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Kotest automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in domain

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful