|
1 | 1 | package io.github.serpro69.kfaker.docs
|
2 | 2 |
|
3 | 3 | import io.github.serpro69.kfaker.Faker
|
| 4 | +import io.github.serpro69.kfaker.fakerConfig |
4 | 5 | import io.github.serpro69.kfaker.provider.misc.ConstructorFilterStrategy
|
5 | 6 | import io.github.serpro69.kfaker.provider.misc.FallbackStrategy
|
6 | 7 | import io.kotest.core.spec.style.DescribeSpec
|
@@ -161,6 +162,113 @@ class Extras : DescribeSpec({
|
161 | 162 | // END extras_random_instance_nine
|
162 | 163 | }
|
163 | 164 | }
|
| 165 | + |
| 166 | + context("Configuration levels") { |
| 167 | + // START extras_random_instance_ten |
| 168 | + class Foo |
| 169 | + data class Bar(val int: Int, val uuid: UUID) |
| 170 | + data class Baz(val foo: Foo, val bar: Bar, val string: String) |
| 171 | + // END extras_random_instance_ten |
| 172 | + |
| 173 | + it("should configure random class instance from fakerConfig") { |
| 174 | + // START extras_random_instance_eleven |
| 175 | + val cfg = fakerConfig { |
| 176 | + randomClassInstance { |
| 177 | + typeGenerator<Bar> { Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111")) } |
| 178 | + } |
| 179 | + } |
| 180 | + val f = Faker(cfg) |
| 181 | + val baz: Baz = f.randomProvider.randomClassInstance<Baz>() |
| 182 | + assertEquals(baz.bar, Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111"))) |
| 183 | + val anotherBaz = f.randomProvider.new().randomClassInstance<Baz>() |
| 184 | + assertEquals(anotherBaz.bar, Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111"))) |
| 185 | + // END extras_random_instance_eleven |
| 186 | + } |
| 187 | + |
| 188 | + it("should configure random class instance from randomProvider") { |
| 189 | + // START extras_random_instance_twelve |
| 190 | + val cfg = fakerConfig { |
| 191 | + randomClassInstance { |
| 192 | + typeGenerator<Bar> { Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111")) } |
| 193 | + } |
| 194 | + } |
| 195 | + val f = Faker(cfg).also { |
| 196 | + it.randomProvider.configure { |
| 197 | + typeGenerator<UUID> { UUID.fromString("00000000-0000-0000-0000-000000000000") } |
| 198 | + } |
| 199 | + } |
| 200 | + |
| 201 | + val bar: Bar = f.randomProvider.randomClassInstance() |
| 202 | + val baz: Baz = f.randomProvider.randomClassInstance() |
| 203 | + assertEquals(bar.uuid, UUID.fromString("00000000-0000-0000-0000-000000000000")) |
| 204 | + assertEquals(baz.bar, Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111"))) |
| 205 | + // END extras_random_instance_twelve |
| 206 | + } |
| 207 | + |
| 208 | + it("should configure random class instance from function") { |
| 209 | + // START extras_random_instance_thirteen |
| 210 | + faker.randomProvider.configure { |
| 211 | + typeGenerator<Bar> { Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111")) } |
| 212 | + } |
| 213 | + val baz: Baz = faker.randomProvider.randomClassInstance { |
| 214 | + typeGenerator<Bar> { Bar(1, UUID.fromString("00000000-0000-0000-0000-000000000000")) } |
| 215 | + } |
| 216 | + assertEquals(baz.bar, Bar(1, UUID.fromString("00000000-0000-0000-0000-000000000000"))) |
| 217 | + // END extras_random_instance_thirteen |
| 218 | + } |
| 219 | + } |
| 220 | + |
| 221 | + context("New instances and copies") { |
| 222 | + class Foo |
| 223 | + data class Bar(val int: Int, val uuid: UUID) |
| 224 | + data class Baz(val foo: Foo, val bar: Bar, val string: String) |
| 225 | + |
| 226 | + it("should create a new instance") { |
| 227 | + // START extras_random_instance_fourteen |
| 228 | + val cfg = fakerConfig { |
| 229 | + randomClassInstance { // ❶ |
| 230 | + typeGenerator<Bar> { Bar(1, UUID.fromString("00000000-0000-0000-0000-000000000000")) } |
| 231 | + } |
| 232 | + } |
| 233 | + val f = Faker(cfg) |
| 234 | + f.randomProvider.configure { // ❷ |
| 235 | + typeGenerator<Bar> { Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111")) } |
| 236 | + } |
| 237 | + val new = f.randomProvider.new() // ❸ |
| 238 | + val baz: Baz = f.randomProvider.randomClassInstance<Baz>() |
| 239 | + val newBaz: Baz = new.randomClassInstance<Baz>() |
| 240 | + assertEquals(Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111")), baz.bar) |
| 241 | + assertEquals(Bar(1, UUID.fromString("00000000-0000-0000-0000-000000000000")), newBaz.bar) |
| 242 | + // END extras_random_instance_fourteen |
| 243 | + } |
| 244 | + |
| 245 | + it("should make a copy") { |
| 246 | + // START extras_random_instance_fifteen |
| 247 | + val cfg = fakerConfig { // ❶ |
| 248 | + randomClassInstance { |
| 249 | + typeGenerator<Bar> { Bar(1, UUID.fromString("00000000-0000-0000-0000-000000000000")) } |
| 250 | + } |
| 251 | + } |
| 252 | + val f = Faker(cfg) |
| 253 | + f.randomProvider.configure { // ❷ |
| 254 | + typeGenerator<Bar> { Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111")) } |
| 255 | + } |
| 256 | + val copy = f.randomProvider.copy() // ❸ |
| 257 | + val baz: Baz = f.randomProvider.randomClassInstance<Baz>() |
| 258 | + val bazCopy: Baz = copy.randomClassInstance<Baz>() |
| 259 | + assertEquals(Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111")), baz.bar) |
| 260 | + assertEquals(Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111")), bazCopy.bar) |
| 261 | + |
| 262 | + copy.configure { // ❹ |
| 263 | + typeGenerator<Bar> { Bar(0, UUID.fromString("22222222-2222-2222-2222-222222222222")) } |
| 264 | + } |
| 265 | + val originalBaz: Baz = f.randomProvider.randomClassInstance<Baz>() |
| 266 | + val reconfiguredBazCopy = copy.randomClassInstance<Baz>() |
| 267 | + assertEquals(Bar(42, UUID.fromString("11111111-1111-1111-1111-111111111111")), originalBaz.bar) |
| 268 | + assertEquals(Bar(0, UUID.fromString("22222222-2222-2222-2222-222222222222")), reconfiguredBazCopy.bar) |
| 269 | + // END extras_random_instance_fifteen |
| 270 | + } |
| 271 | + } |
164 | 272 | }
|
165 | 273 |
|
166 | 274 | describe("Random Everything") {
|
|
0 commit comments