Ninja-Squad / DbSetup

An API for populating a database in unit tests
http://dbsetup.ninja-squad.com/
212 stars 34 forks source link

Repeated insertion of values. #41

Closed PeterWolters closed 9 years ago

PeterWolters commented 9 years ago

Goodafternoon,

First of all, thank you for this superb framework.

It would be a nice addition if the framework supports some kind of bulk insertion mechanism.

See example below: Operation INSERT_NAME_1K = insertInto(TRAN) .withGeneratedValue("ID", ValueGenerators.sequence().startingAt(1L).incrementingBy(1)) .columns("NAME", "ADDRESS") .values("Donald", "Duckstad") .valuesToRepeat("Donald", "Donald").times(1000) .build();

jnizet commented 9 years ago

Well, it does. Not with that syntax of course, but using a simple loop:

Insert.Builder builder = insertInto(TRAN)
    .withGeneratedValue("ID", ValueGenerators.sequence().startingAt(1L).incrementingBy(1))
    .columns("NAME", "ADDRESS")
    .values("Donald", "Duckstad");
for (int i = 0; i < 1000; i++) {
    builder.values("Donald", "Donald");
}
Operation INSERT_NAME_1K = builder.build();

Your suggested syntax is of course prettier, although less flexible. Do you have to do that often? I personally had to do that once, and thus didn't really feel the need for such a feature. But if you can convince me it's useful, why not.

PeterWolters commented 9 years ago

I agree with you that the desired requirement can be be fulfilled with a for loop.

For readability and maintainability reasons I think its a nice feature to have. You can construct with one statement the desired operation without using any, ugly, for loop and writing extra code.

I hope this convinces you :)

Peter.

jnizet commented 9 years ago

@PeterWolters FYI, I just release version 1.6.0, containing this feature, which should be available soon in Maven central. See http://dbsetup.ninja-squad.com/release-notes.html

PeterWolters commented 9 years ago

@jnizet , Glad to see that my arguments convinced you! Thank you very much for implementing this neat feature!

Kind regards,

Peter Wolters.