Spring data. Save-операции#

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

import static ru.tinkoff.qa.neptune.database.abstractions.UpdateAction.change;
import static ru.tinkoff.qa.neptune.spring.data.SpringDataContext.springData;
import static ru.tinkoff.qa.neptune.spring.data.select.common.CommonSelectStepFactory.*;

@SpringBootTest
public class MyTest {

    @Autowired
    private TestRepository testRepository;

    @Test
    public void myTest() {

        //ранее полученная или новая запись
        TestEntity testEntity;
        //ранее полученная или новая запись
        TestEntity testEntity2;

        //прямое сохранение новой/измененной записи
        TestEntity saved = springData().save(
            //описание того ЧТО следует сохранить,
            //в свободной форме или бизнес
            //терминологии
            "Test entity",
            testRepository,
            testEntity);

        //прямое сохранение нескольких новых/измененных записей
        Iterable<TestEntity> savedEntities = springData().save(
            "Test entities",
            testRepository,
            testEntity, testEntity2);

        //прямое сохранение коллекции новых/измененных записей
        Iterable<TestEntity> savedEntities2 = springData().save(
            "Test entities",
            testRepository,
            List.of(testEntity, testEntity2));

        //прямое сохранение новой/измененной записи
        TestEntity saved2 = springData().save("Test entity",
            testRepository,
            testEntity,
            //с документированием сделанных
            change("Set new ID = 10", e -> e.setId(10L)),
            //изменений
            change("Set new name = \"Test Name 1\"", e -> e.setName("Test Name 1")),
            change("Update ListData", e -> e.setListData(List.of("A1", "B1"))),
            change("Update ArrayData", e -> e.setArrayData(new String[]{"A1", "B1"})));

        //сохранение измененной записи, полученной с помощью запроса
        TestEntity saved3 = springData().save("Test entity",
            byId(testRepository, 1L),
            change("Set new ID = 10", e -> e.setId(10L)),
            change("Set new name = \"Test Name 1\"", e -> e.setName("Test Name 1")),
            change("Update ListData", e -> e.setListData(List.of("A1", "B1"))),
            change("Update ArrayData", e -> e.setArrayData(new String[]{"A1", "B1"})));

        //сохранение измененных записей, полученных с помощью запроса
        //аналогично примеру выше
        Iterable<TestEntity> savedEntities3 = springData().save("Test entities",
            byIds(testRepository, 1L, 2L),
            change("Set new ID = 10", e -> e.setId(10L)),
            change("Set new name = \"Test Name 1\"", e -> e.setName("Test Name 1")),
            change("Update ListData", e -> e.setListData(List.of("A1", "B1"))),
            change("Update ArrayData", e -> e.setArrayData(new String[]{"A1", "B1"})));
    }
}