Добавление данных в тестовый контейнер с помощью функции из репозиторияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Добавление данных в тестовый контейнер с помощью функции из репозитория

Сообщение Anonymous »

Я настроил тестовый контейнер для использования во время интеграционного тестирования. Хотя это работает и тестовые данные добавляются в тестовый контейнер, я не могу точно проверить, что моя функция репозитория, используя JOOq, действительно добавляет какие-либо данные вообще, потому что кажется, что они никуда не идут.
Вот код моего файла test-data.sql:

Код: Выделить всё

CREATE TABLE IF NOT EXISTS users (uuid UUID NOT NULL, first_name VARCHAR(255), last_name VARCHAR(255), email_address VARCHAR(255));  INSERT INTO users (uuid, first_name, last_name, email_address) VALUES (etc)
вот код моего файла UsersRepositoryTest.java:

Код: Выделить всё

package users;

import cache.RedisBackedCache;
import com.example.config.JooqTestConfig;
import org.example.Application;
import org.jooq.DSLContext;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.flyway.FlywayProperties;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.DynamicPropertyRegistry;
import org.springframework.test.context.DynamicPropertySource;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.utility.DockerImageName;

import java.util.List;
import java.util.UUID;

import static org.jooq.codegen.maven.example.Tables.USERS;
import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest(classes = {Application.class, JooqTestConfig.class})
@Testcontainers
@ExtendWith(SpringExtension.class)
@ActiveProfiles("test")
public class UsersRepositoryTest {

private UsersRepository usersRepository;

@Autowired
private DSLContext dslContext;

@Container
private static final PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer("postgres:11.1")
.withDatabaseName("integration-tests-db").withUsername("username").withPassword("password")
.withInitScript("db/test-data.sql");

static {
postgreSQLContainer.start();
}

UsersResource user = new UsersResource(UUID.randomUUID(), "Tom", "Campbell", "tcampbell@rapid7.com");

@BeforeEach
void setUp() {
usersRepository = new UsersRepository(dslContext);
}

private UsersResource upsertedUser(String emailAddress) {

return dslContext.select(USERS.asterisk())
.from(USERS)
.where(USERS.EMAIL_ADDRESS.eq(emailAddress))
.fetchAnyInto(UsersResource.class);
}

@Test
void testConnectionToDatabase() {
Assertions.assertNotNull(usersRepository);
}

@Test
public void addUserSuccess(){
usersRepository.upsertUsers(user);
List users = usersRepository.getAllUsers();

assertTrue(users.contains(user));

}

@Test
void addUserAlreadyExists(){
usersRepository.upsertUsers(user);
Throwable exception = assertThrows(IllegalStateException.class, () ->  usersRepository.upsertUsers(user));
assertEquals("User could not be created", exception.getMessage());

}

@Test
void updateUser(){
usersRepository.upsertUsers(user);

UUID userUUID = dslContext.select(USERS.UUID)
.from(USERS)
.where(USERS.EMAIL_ADDRESS.eq(user.emailAddress))
.fetchSingleInto(UUID.class);

UsersResource updatedUser = new UsersResource(userUUID, "Matthew", "Shaw", "mshaw@rapid7.com");
usersRepository.updateUserName(updatedUser);
UsersResource upsertedUser = upsertedUser("mshaw@rapid7.com");

assertEquals(upsertedUser.uuid, updatedUser.uuid);
assertEquals(upsertedUser.firstName, updatedUser.firstName);
assertEquals(upsertedUser.lastName, updatedUser.lastName);
assertEquals(upsertedUser.emailAddress, updatedUser.emailAddress);
}

@Test
void deleteUserSuccess(){
usersRepository.upsertUsers(user);

UUID userUUID = dslContext.select(USERS.UUID)
.from(USERS)
.where(USERS.EMAIL_ADDRESS.eq(user.emailAddress))
.fetchSingleInto(UUID.class);

usersRepository.deleteUser(userUUID);
boolean userRecordExists = dslContext.fetchExists(USERS, USERS.EMAIL_ADDRESS.eq(user.emailAddress));
assertFalse(userRecordExists);
}

}
и, наконец, вот pom-файл:

Код: Выделить всё

 & l t ; p r o j e c t   x m l n s = & q u o t ; h t t p : / / m a v e n . a p a c h e . o r g / P O M / 4 . 0 . 0 & q u o t ; < b r   / >                   x m l n s : x s i = & q u o t ; h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a - i n s t a n c e & q u o t ; < b r   / >                   x s i : s c h e m a L o c a t i o n = & q u o t ; h t t p : / / m a v e n . a p a c h e . o r g / P O M / 4 . 0 . 0   h t t p : / / m a v e n . a p a c h e . o r g / x s d / m a v e n - 3 . 9 . 7 . x s d & q u o t ; & g t ; < b r   / >         & l t ; m o d e l V e r s i o n & g t ; 4 . 0 . 0 & l t ; / m o d e l V e r s i o n & g t ; < b r   / > < b r   / >         & l t ; g r o u p I d & g t ; o r g . e x a m p l e & l t ; / g r o u p I d & g t ; < b r   / >         & l t ; a r t i f a c t I d & g t ; g o w n - q u b - a p p & l t ; / a r t i f a c t I d & g t ; < b r   / >         & l t ; v e r s i o n & g t ; 1 . 0 - S N A P S H O T & l t ; / v e r s i o n & g t ; < b r   / > < b r   / >         & l t ; p r o p e r t i e s & g t ; < b r   / >                 & l t ; m a v e n . c o m p i l e r . s o u r c e & g t ; 2 2 & l t ; / m a v e n . c o m p i l e r . s o u r c e & g t ; < b r   / >                 & l t ; m a v e n . c o m p i l e r . t a r g e t & g t ; 2 2 & l t ; / m a v e n . c o m p i l e r . t a r g e t & g t ; < b r   / >                 & l t ; p r o j e c t . b u i l d . s o u r c e E n c o d i n g & g t ; U T F - 8 & l t ; / p r o j e c t . b u i l d . s o u r c e E n c o d i n g & g t ; < b r   / >         & l t ; / p r o p e r t i e s & g t ; < b r   / > < b r   / >         & l t ; p a r e n t & g t ; < b r   / >                 & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r   / >                 & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - p a r e n t & l t ; / a r t i f a c t I d & g t ; < b r   / >                 & l t ; v e r s i o n & g t ; 3 . 3 . 0 & l t ; / v e r s i o n & g t ; < b r   / >         & l t ; / p a r e n t & g t ; < b r   / > < b r   / >         & l t ; d e p e n d e n c i e s & g t ; < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - w e b & l t ; / a r t i f a c t I d & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - j o o q & l t ; / a r t i f a c t I d & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - l o g g i n g & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; v e r s i o n & g t ; 3 . 2 . 4 & l t ; / v e r s i o n & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / > < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . j u n i t . j u p i t e r & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; j u n i t - j u p i t e r & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; v e r s i o n & g t ; 5 . 8 . 1 & l t ; / v e r s i o n & g t ; < b r   / >                         & l t ; s c o p e & g t ; t e s t & l t ; / s c o p e & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / > < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . t e s t c o n t a i n e r s & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; j u n i t - j u p i t e r & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; v e r s i o n & g t ; 1 . 1 9 . 8 & l t ; / v e r s i o n & g t ; < b r   / >                         & l t ; s c o p e & g t ; t e s t & l t ; / s c o p e & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / > < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . t e s t c o n t a i n e r s & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; p o s t g r e s q l & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; v e r s i o n & g t ; 1 . 1 9 . 3 & l t ; / v e r s i o n & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / > < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; c o m . h 2 d a t a b a s e & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; h 2 & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; v e r s i o n & g t ; 2 . 2 . 2 2 4 & l t ; / v e r s i o n & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . j o o q & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; j o o q - p o s t g r e s - e x t e n s i o n s & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; v e r s i o n & g t ; 3 . 1 9 . 9 & l t ; / v e r s i o n & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . j o o q & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; j o o q - c o d e g e n - m a v e n & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; v e r s i o n & g t ; 3 . 1 9 . 9 & l t ; / v e r s i o n & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . h s q l d b & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; h s q l d b & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; v e r s i o n & g t ; 2 . 7 . 1 & l t ; / v e r s i o n & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / > < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - s t a r t e r - t e s t & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; s c o p e & g t ; t e s t & l t ; / s c o p e & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - t e s t c o n t a i n e r s & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; s c o p e & g t ; t e s t & l t ; / s c o p e & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . j u n i t . p l a t f o r m & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; j u n i t - p l a t f o r m - c o m m o n s & l t ; / a r t i f a c t I d & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; o r g . s l f 4 j & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; s l f 4 j - a p i & l t ; / a r t i f a c t I d & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / > < b r   / >                 & l t ; d e p e n d e n c y & g t ; < b r   / >                         & l t ; g r o u p I d & g t ; r e d i s . c l i e n t s & l t ; / g r o u p I d & g t ; < b r   / >                         & l t ; a r t i f a c t I d & g t ; j e d i s & l t ; / a r t i f a c t I d & g t ; < b r   / >                         & l t ; v e r s i o n & g t ; 4 . 0 . 1 & l t ; / v e r s i o n & g t ; < b r   / >                 & l t ; / d e p e n d e n c y & g t ; < b r   / >         & l t ; / d e p e n d e n c i e s & g t ; < b r   / > < b r   / > < b r   / >         & l t ; b u i l d & g t ; < b r   / >                 & l t ; p l u g i n s & g t ; < b r   / >                         & l t ; p l u g i n & g t ; < b r   / >                                 & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k . b o o t & l t ; / g r o u p I d & g t ; < b r   / >                                 & l t ; a r t i f a c t I d & g t ; s p r i n g - b o o t - m a v e n - p l u g i n & l t ; / a r t i f a c t I d & g t ; < b r   / >                                 & l t ; v e r s i o n & g t ; 3 . 3 . 0 & l t ; / v e r s i o n & g t ; < b r   / >                                 & l t ; e x e c u t i o n s & g t ; < b r   / >                                         & l t ; e x e c u t i o n & g t ; < b r   / >                                                 & l t ; g o a l s & g t ; < b r   / >                                                         & l t ; g o a l & g t ; r e p a c k a g e & l t ; / g o a l & g t ; < b r   / >                                                 & l t ; / g o a l s & g t ; < b r   / >                                         & l t ; / e x e c u t i o n & g t ; < b r   / >                                 & l t ; / e x e c u t i o n s & g t ; < b r   / >                         & l t ; / p l u g i n & g t ; < b r   / >                         & l t ; p l u g i n & g t ; < b r   / > < b r   / >                                 & l t ; g r o u p I d & g t ; o r g . j o o q & l t ; / g r o u p I d & g t ; < b r   / >                                 & l t ; a r t i f a c t I d & g t ; j o o q - c o d e g e n - m a v e n & l t ; / a r t i f a c t I d & g t ; < b r   / >                                 & l t ; v e r s i o n & g t ; 3 . 1 9 . 9 & l t ; / v e r s i o n & g t ; < b r   / > < b r   / >                                 & l t ; e x e c u t i o n s & g t ; < b r   / >                                         & l t ; e x e c u t i o n & g t ; < b r   / >                                                 & l t ; g o a l s & g t ; < b r   / >                                                         & l t ; g o a l & g t ; g e n e r a t e & l t ; / g o a l & g t ; < b r   / >                                                 & l t ; / g o a l s & g t ; < b r   / >                                         & l t ; / e x e c u t i o n & g t ; < b r   / >                                 & l t ; / e x e c u t i o n s & g t ; < b r   / > < b r   / >                                 & l t ; d e p e n d e n c i e s & g t ; < b r   / >                                         & l t ; d e p e n d e n c y & g t ; < b r   / >                                                 & l t ; g r o u p I d & g t ; o r g . p o s t g r e s q l & l t ; / g r o u p I d & g t ; < b r   / >                                                 & l t ; a r t i f a c t I d & g t ; p o s t g r e s q l & l t ; / a r t i f a c t I d & g t ; < b r   / >                                                 & l t ; v e r s i o n & g t ; 4 2 . 6 . 0 & l t ; / v e r s i o n & g t ; < b r   / >                                         & l t ; / d e p e n d e n c y & g t ; < b r   / >                                 & l t ; / d e p e n d e n c i e s & g t ; < b r   / > < b r   / >                                 & l t ; c o n f i g u r a t i o n & g t ; < b r   / >                                         & l t ; j d b c & g t ; < b r   / >                                                 & l t ; d r i v e r & g t ; o r g . p o s t g r e s q l . D r i v e r & l t ; / d r i v e r & g t ; < b r   / >                                                 & l t ; u r l & g t ; j d b c : p o s t g r e s q l : p o s t g r e s & l t ; / u r l & g t ; < b r   / >                                         & l t ; / j d b c & g t ; < b r   / > < b r   / >                                         & l t ; g e n e r a t o r & g t ; < b r   / >                                                 & l t ; d a t a b a s e & g t ; < b r   / >                                                         & l t ; n a m e & g t ; o r g . j o o q . m e t a . p o s t g r e s . P o s t g r e s D a t a b a s e & l t ; / n a m e & g t ; < b r   / >                                                         & l t ; i n c l u d e s & g t ; . * & l t ; / i n c l u d e s & g t ; < b r   / >                                                         & l t ; e x c l u d e s & g t ; & l t ; / e x c l u d e s & g t ; < b r   / >                                         public


org.jooq.codegen.maven.example
target/generated-sources/jooq





org.apache.maven.plugins
maven-jar-plugin
3.4.1



true
lib/
org.example.Application





org.apache.maven.plugins
maven-compiler-plugin

22
22
22
--enable-preview



org.testcontainers
testcontainers-jooq-codegen-maven-plugin


org.testcontainers
postgresql
1.19.3


org.postgresql
postgresql
42.6.0




generate-jooq-sources

generate

generate-sources


POSTGRES
postgres:15.3-alpine



filesystem:src/main/resources/db/migration





.*
flyway_schema_history
public


example.micronaut.jooq
target/generated-sources/jooq












Я думаю, это потому, что мой JOOq, а затем тестовые контейнеры не выравниваются, поэтому их нельзя проверить.
Я создал таблицу пользователей через пользовательский интерфейс dbeaver .

Подробнее здесь: https://stackoverflow.com/questions/786 ... repository
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»