работает вроде все, кроме тестов

This commit is contained in:
ekallin 2024-04-15 17:52:36 +04:00
parent 1713a0be9a
commit 19481483e6
24 changed files with 842 additions and 234 deletions

View File

@ -1,3 +1,4 @@
{
"java.configuration.updateBuildConfiguration": "automatic"
"java.configuration.updateBuildConfiguration": "automatic",
"java.debug.settings.onBuildFailureProceed": true
}

BIN
backend/data.mv.db Normal file

Binary file not shown.

423
backend/data.trace.db Normal file
View File

@ -0,0 +1,423 @@
2024-04-15 17:50:52.581212+04:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLNonTransientException: GeneralError; SQL statement:
create table viewes (id integer not null, movie_id integer not null, user_id integer not null, primary key (id)) [50000-224]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:566)
at org.h2.message.DbException.addSQL(DbException.java:177)
at org.h2.command.Command.executeUpdate(Command.java:272)
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:262)
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:231)
at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94)
at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java)
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:80)
at org.hibernate.tool.schema.internal.Helper.applySqlString(Helper.java:233)
at org.hibernate.tool.schema.internal.Helper.applySqlStrings(Helper.java:217)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createTables(SchemaCreatorImpl.java:420)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createSequencesTablesConstraints(SchemaCreatorImpl.java:340)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:239)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:172)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:142)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:118)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:256)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:145)
at java.base/java.util.HashMap.forEach(HashMap.java:1421)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:142)
at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37)
at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:315)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:450)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1507)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1833)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1234)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137)
at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)
at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)
at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454)
at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:553)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130)
at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191)
at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)
at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$10(ClassBasedTestDescriptor.java:378)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:383)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$11(ClassBasedTestDescriptor.java:378)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:377)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$6(ClassBasedTestDescriptor.java:290)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:289)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$4(ClassBasedTestDescriptor.java:279)
at java.base/java.util.Optional.orElseGet(Optional.java:364)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$5(ClassBasedTestDescriptor.java:278)
at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:106)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:105)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:69)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$2(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:90)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:95)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:91)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:60)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:98)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:40)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:529)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:757)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: java.sql.SQLException: GeneralError
at org.h2.message.DbException.convert(DbException.java:412)
at org.h2.command.Command.executeUpdate(Command.java:268)
... 122 more
Caused by: java.lang.AssertionError
at org.h2.engine.Database.addMeta(Database.java:737)
at org.h2.engine.Database.addSchemaObject(Database.java:915)
at org.h2.command.ddl.CreateTable.update(CreateTable.java:125)
at org.h2.command.CommandContainer.update(CommandContainer.java:169)
at org.h2.command.Command.executeUpdate(Command.java:256)
... 122 more
2024-04-15 17:50:52.598211+04:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLNonTransientException: GeneralError; SQL statement:
alter table if exists favorites add constraint FKpbtimrfu4b5fna6esnqfj0e3y foreign key (movie_id) references movies [50000-224]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:566)
at org.h2.message.DbException.addSQL(DbException.java:177)
at org.h2.command.Command.executeUpdate(Command.java:272)
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:262)
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:231)
at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94)
at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java)
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:80)
at org.hibernate.tool.schema.internal.Helper.applySqlString(Helper.java:233)
at org.hibernate.tool.schema.internal.Helper.applySqlStrings(Helper.java:217)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createForeignKeys(SchemaCreatorImpl.java:303)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:250)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:172)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:142)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:118)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:256)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:145)
at java.base/java.util.HashMap.forEach(HashMap.java:1421)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:142)
at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37)
at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:315)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:450)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1507)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1833)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1234)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137)
at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)
at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)
at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454)
at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:553)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130)
at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191)
at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)
at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$10(ClassBasedTestDescriptor.java:378)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:383)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$11(ClassBasedTestDescriptor.java:378)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:377)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$6(ClassBasedTestDescriptor.java:290)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:289)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$4(ClassBasedTestDescriptor.java:279)
at java.base/java.util.Optional.orElseGet(Optional.java:364)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$5(ClassBasedTestDescriptor.java:278)
at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:106)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:105)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:69)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$2(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:90)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:95)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:91)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:60)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:98)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:40)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:529)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:757)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: java.sql.SQLException: GeneralError
at org.h2.message.DbException.convert(DbException.java:412)
at org.h2.command.Command.executeUpdate(Command.java:268)
... 121 more
Caused by: java.lang.AssertionError
at org.h2.engine.Database.addMeta(Database.java:737)
at org.h2.engine.Database.addSchemaObject(Database.java:915)
at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:375)
at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:368)
at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:269)
at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:74)
at org.h2.command.ddl.AlterTable.update(AlterTable.java:46)
at org.h2.command.CommandContainer.update(CommandContainer.java:169)
at org.h2.command.Command.executeUpdate(Command.java:256)
... 121 more
2024-04-15 17:50:52.604213+04:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLNonTransientException: GeneralError; SQL statement:
alter table if exists favorites add constraint FKk7du8b8ewipawnnpg76d55fus foreign key (user_id) references users [50000-224]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:566)
at org.h2.message.DbException.addSQL(DbException.java:177)
at org.h2.command.Command.executeUpdate(Command.java:272)
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:262)
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:231)
at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94)
at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java)
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:80)
at org.hibernate.tool.schema.internal.Helper.applySqlString(Helper.java:233)
at org.hibernate.tool.schema.internal.Helper.applySqlStrings(Helper.java:217)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createForeignKeys(SchemaCreatorImpl.java:303)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:250)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:172)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:142)
at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:118)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:256)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:145)
at java.base/java.util.HashMap.forEach(HashMap.java:1421)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:142)
at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37)
at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:315)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:450)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1507)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1833)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1234)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:952)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137)
at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)
at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)
at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454)
at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:553)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130)
at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191)
at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)
at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$10(ClassBasedTestDescriptor.java:378)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:383)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$11(ClassBasedTestDescriptor.java:378)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:377)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$6(ClassBasedTestDescriptor.java:290)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:289)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$4(ClassBasedTestDescriptor.java:279)
at java.base/java.util.Optional.orElseGet(Optional.java:364)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$5(ClassBasedTestDescriptor.java:278)
at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:106)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:105)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:69)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$2(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:90)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:95)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:91)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:60)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:98)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:40)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:529)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:757)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: java.sql.SQLException: GeneralError
at org.h2.message.DbException.convert(DbException.java:412)
at org.h2.command.Command.executeUpdate(Command.java:268)
... 121 more
Caused by: java.lang.AssertionError
at org.h2.engine.Database.addMeta(Database.java:737)
at org.h2.engine.Database.addSchemaObject(Database.java:915)
at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:375)
at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:368)
at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:269)
at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:74)
at org.h2.command.ddl.AlterTable.update(AlterTable.java:46)
at org.h2.command.CommandContainer.update(CommandContainer.java:169)
at org.h2.command.Command.executeUpdate(Command.java:256)
... 121 more

View File

@ -12,7 +12,7 @@ import jakarta.persistence.Table;
@Table(name = "categories")
public class CategorieEntity extends BaseEntity {
@Column(nullable = false, unique = true, length = 15)
@Column(nullable = false, unique = true, length = 50)
private String name;
@Column(nullable = true)

View File

@ -1,7 +1,6 @@
package com.example.backend.categories.service;
import java.util.List;
import java.util.Optional;
import java.util.stream.StreamSupport;
@ -12,7 +11,6 @@ import com.example.backend.core.errors.NotFoundException;
import com.example.backend.categories.model.CategorieEntity;
import com.example.backend.categories.repository.CategorieRepository;
@Service
public class CategorieService {
@ -39,14 +37,16 @@ public class CategorieService {
return repository.findById(id).orElseThrow(() -> new NotFoundException(id));
}
@Transactional
public CategorieEntity create(CategorieEntity entity) {
if(entity == null){
if (entity == null) {
throw new IllegalArgumentException("Сущность не найдена");
}
checkName(entity.getName());
return repository.save(entity);
}
@Transactional
public CategorieEntity update(Integer id, CategorieEntity entity) {
final CategorieEntity existsentity = get(id);
existsentity.setName(entity.getName());
@ -54,6 +54,7 @@ public class CategorieService {
return repository.save(existsentity);
}
@Transactional
public CategorieEntity delete(Integer id) {
final CategorieEntity existsentity = get(id);
repository.delete(existsentity);

View File

@ -0,0 +1,7 @@
package com.example.backend.core.errors;
public class NullArgumentException extends RuntimeException {
public NullArgumentException(Integer id) {
super(String.format("В данной сущности нет объектов в айдишником <[%s]>", id));
}
}

View File

@ -13,17 +13,16 @@ public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = Constants.SEQUENCE_NAME)
@SequenceGenerator(name = Constants.SEQUENCE_NAME, sequenceName = Constants.SEQUENCE_NAME, allocationSize = 1)
protected Long id;
protected Integer id;
protected BaseEntity() {
}
public Long getId() {
public Integer getId() {
return id;
}
public void setId(Long id) {
public void setId(Integer id) {
this.id = id;
}
}

View File

@ -55,8 +55,9 @@ public class FavoriteController {
}
@GetMapping("/{id}")
public FavoriteDto get(@PathVariable(name = "id") Integer id) {
return toDto(favoriteService.get(id));
public FavoriteDto get(@PathVariable(name = "userId") Integer userId,
@PathVariable(name = "id") Integer id) {
return toDto(favoriteService.get(userId, id));
}
@PostMapping
@ -65,12 +66,15 @@ public class FavoriteController {
}
@PutMapping("/{id}")
public FavoriteDto update(@PathVariable(name = "id") Integer id, @RequestBody FavoriteDto dto) {
return toDto(favoriteService.update(id, toEntity(dto)));
public FavoriteDto update(@PathVariable(name = "userId") Integer userId,
@PathVariable(name = "id") Integer id,
@RequestBody FavoriteDto dto) {
return toDto(favoriteService.update(userId, id, toEntity(dto)));
}
@DeleteMapping("/{id}")
public FavoriteDto delete(@PathVariable(name = "id") Integer id) {
return toDto(favoriteService.delete(id));
public FavoriteDto delete(@PathVariable(name = "userId") Integer userId,
@PathVariable(name = "id") Integer id) {
return toDto(favoriteService.delete(userId, id));
}
}

View File

@ -1,11 +1,13 @@
package com.example.backend.favorites.repository;
import java.util.Optional;
import java.util.List;
import org.springframework.data.repository.CrudRepository;
import com.example.backend.favorites.model.FavoriteEntity;
public interface FavoriteRepository extends CrudRepository<FavoriteEntity, Integer> {
Optional<FavoriteEntity> findOneByUserIdAndId(long userId, long id);
Optional<FavoriteEntity> findOneByMovieIdAndId(long movieId, long id);
List<FavoriteEntity> findByUserId(Integer userId);
Optional<FavoriteEntity> findOneByUserIdAndId(Integer userId, Integer id);
}

View File

@ -1,49 +1,54 @@
package com.example.backend.favorites.service;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.example.backend.core.errors.NotFoundException;
import com.example.backend.favorites.model.FavoriteEntity;
import com.example.backend.favorites.repository.FavoriteRepository;
import com.example.backend.users.service.UserService;
@Service
public class FavoriteService {
private final FavoriteRepository repository;
private final UserService userService;
public FavoriteService(FavoriteRepository repository) {
public FavoriteService(FavoriteRepository repository, UserService userService) {
this.repository = repository;
this.userService = userService;
}
@Transactional(readOnly = true)
public List<FavoriteEntity> getAll(Integer userId) {
if (Objects.equals(userId, 0)) {
return repository.getAll();
}
return repository.getAll().stream()
.filter(item -> item.getUser().getId().equals(userId))
.toList();
userService.get(userId);
return repository.findByUserId(userId);
}
public FavoriteEntity get(Integer id) {
return Optional.ofNullable(repository.get(id)).orElseThrow(() -> new NotFoundException(id));
@Transactional(readOnly = true)
public FavoriteEntity get(Integer userId, Integer id) {
userService.get(userId);
return repository.findOneByUserIdAndId(userId, id).orElseThrow(() -> new NotFoundException(id));
}
@Transactional
public FavoriteEntity create(FavoriteEntity entity) {
return repository.create(entity);
return repository.save(entity);
}
public FavoriteEntity update(Integer id, FavoriteEntity entity) {
final FavoriteEntity exisEntity = get(id);
@Transactional
public FavoriteEntity update(Integer userId, Integer id, FavoriteEntity entity) {
final FavoriteEntity exisEntity = get(userId, id);
exisEntity.setUser(entity.getUser());
exisEntity.setMovie(entity.getMovie());
return repository.update(exisEntity);
return repository.save(exisEntity);
}
public FavoriteEntity delete(Integer id) {
final FavoriteEntity exisEntity = get(id);
return repository.delete(exisEntity);
@Transactional
public FavoriteEntity delete(Integer userId, Integer id) {
final FavoriteEntity exisEntity = get(userId, id);
repository.delete(exisEntity);
return exisEntity;
}
}

View File

@ -72,7 +72,7 @@ public class MovieController {
@GetMapping("/countView")
public Integer countView(@RequestParam(name = "movieId", defaultValue = "0") Integer movieId) {
return movieService.countViews(movieId);
return movieService.countView(movieId);
}
}

View File

@ -8,14 +8,14 @@ import com.example.backend.core.model.BaseEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
@Entity
@Table(name = "movies")
public class MovieEntity extends BaseEntity {
@OneToMany
@ManyToOne
@JoinColumn(name = "categorieId", nullable = false)
private CategorieEntity categorie;

View File

@ -1,8 +1,23 @@
package com.example.backend.movies.repository;
import java.util.Optional;
import org.springframework.data.repository.CrudRepository;
import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import com.example.backend.movies.model.MovieEntity;
public interface MovieRepository extends CrudRepository<MovieEntity, Integer> {
Optional<MovieEntity> findByNameIgnoreCase(String name);
Optional<MovieEntity> findByCategorieIdAndId(Integer categorieId, Integer id);
List<MovieEntity> findByCategorieId(Integer categorieId);
@Query("SELECT COUNT(DISTINCT v.user.id) FROM ViewedEntity v WHERE v.movie.id = :movieId")
Integer getCountViews(@Param("movieId") Integer movieId);
public interface MovieRepository extends CrudRepository<MovieRepository, Integer> {
Optional<MovieRepository> findByNameIgnoreCase(String name);
}

View File

@ -1,44 +1,56 @@
package com.example.backend.movies.service;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.StreamSupport;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.example.backend.core.errors.NotFoundException;
import com.example.backend.movies.model.MovieEntity;
import com.example.backend.movies.repository.MovieRepository;
import com.example.backend.viewed.service.ViewedService;
@Service
public class MovieService {
private final MovieRepository repository;
private final ViewedService viewedService;
public MovieService(MovieRepository repository, ViewedService viewedService) {
public MovieService(MovieRepository repository) {
this.repository = repository;
this.viewedService = viewedService;
}
public List<MovieEntity> getAll(Integer categorieId) {
if (Objects.equals(categorieId, 0)) {
return repository.getAll();
private void checkName(String name) {
if (repository.findByNameIgnoreCase(name).isPresent()) {
throw new IllegalArgumentException(
String.format("Type with name %s is already exists", name));
}
return repository.getAll().stream()
.filter(item -> item.getCategorie().getId().equals(categorieId))
.toList();
}
@Transactional(readOnly = true)
public List<MovieEntity> getAll(Integer categorieId) {
if (categorieId == 0) {
return StreamSupport.stream(repository.findAll().spliterator(), false).toList();
}
return repository.findByCategorieId(categorieId);
}
@Transactional(readOnly = true)
public MovieEntity get(Integer id) {
return Optional.ofNullable(repository.get(id)).orElseThrow(() -> new NotFoundException(id));
return repository.findById(id).orElseThrow(() -> new NotFoundException(id));
}
@Transactional
public MovieEntity create(MovieEntity entity) {
return repository.create(entity);
if (entity == null) {
throw new IllegalArgumentException("Сущность не найдена");
}
checkName(entity.getName());
return repository.save(entity);
}
@Transactional
public MovieEntity update(Integer id, MovieEntity entity) {
final MovieEntity exisEntity = get(id);
exisEntity.setCategorie(entity.getCategorie());
@ -46,17 +58,20 @@ public class MovieService {
exisEntity.setDescription(entity.getDescription());
exisEntity.setDuration(entity.getDuration());
exisEntity.setImage(entity.getImage());
return repository.update(exisEntity);
return repository.save(exisEntity);
}
@Transactional
public MovieEntity delete(Integer id) {
final MovieEntity exisEntity = get(id);
return repository.delete(exisEntity);
repository.delete(exisEntity);
return exisEntity;
}
public Integer countViews(Integer movieId) {
@Transactional(readOnly = true)
public Integer countView(Integer movieId) {
return viewedService.countViewed(movieId);
return repository.getCountViews(movieId);
}
}

View File

@ -1,9 +1,11 @@
package com.example.backend.users.service;
import java.util.List;
import java.util.Optional;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.stream.StreamSupport;
import com.example.backend.core.errors.NotFoundException;
import com.example.backend.users.model.UserEntity;
@ -17,29 +19,35 @@ public class UserService {
this.repository = repository;
}
@Transactional
public List<UserEntity> getAll() {
return repository.getAll();
return StreamSupport.stream(repository.findAll().spliterator(), false).toList();
}
@Transactional
public UserEntity get(Integer id) {
return Optional.ofNullable(repository.get(id)).orElseThrow(() -> new NotFoundException(id));
return repository.findById(id).orElseThrow(() -> new NotFoundException(id));
}
@Transactional
public UserEntity create(UserEntity entity) {
return repository.create(entity);
return repository.save(entity);
}
@Transactional
public UserEntity update(Integer id, UserEntity entity) {
final UserEntity existsentity = get(id);
existsentity.setUsername(entity.getUsername());
existsentity.setPassword(entity.getPassword());
existsentity.setIsAdmin(entity.getIsAdmin());
return repository.update(existsentity);
return repository.save(existsentity);
}
@Transactional
public UserEntity delete(Integer id) {
final UserEntity existsentity = get(id);
return repository.delete(existsentity);
repository.delete(existsentity);
return existsentity;
}
}

View File

@ -56,8 +56,9 @@ public class ViewedController {
}
@GetMapping("/{id}")
public ViewedDto get(@PathVariable(name = "id") Integer id) {
return toDto(viewedService.get(id));
public ViewedDto get(@PathVariable(name = "userId") Integer userId,
@PathVariable(name = "id") Integer id) {
return toDto(viewedService.get(userId, id));
}
@PostMapping
@ -66,12 +67,15 @@ public class ViewedController {
}
@PutMapping("/{id}")
public ViewedDto update(@PathVariable(name = "id") Integer id, @RequestBody ViewedDto dto) {
return toDto(viewedService.update(id, toEntity(dto)));
public ViewedDto update(@PathVariable(name = "userId") Integer userId,
@PathVariable(name = "id") Integer id,
@RequestBody ViewedDto dto) {
return toDto(viewedService.update(userId, id, toEntity(dto)));
}
@DeleteMapping("/{id}")
public ViewedDto delete(@PathVariable(name = "id") Integer id) {
return toDto(viewedService.delete(id));
public ViewedDto delete(@PathVariable(name = "userId") Integer userId,
@PathVariable(name = "id") Integer id) {
return toDto(viewedService.delete(userId, id));
}
}

View File

@ -1,11 +1,15 @@
package com.example.backend.viewed.repository;
import java.util.Optional;
import org.springframework.data.repository.CrudRepository;
import java.util.List;
import org.springframework.data.repository.CrudRepository;
import com.example.backend.viewed.model.ViewedEntity;
public interface ViewedRepository extends CrudRepository<ViewedEntity, Integer> {
Optional<ViewedEntity> findOneByUserIdAndId(long userId, long id);
Optional<ViewedEntity> findOneByMovieIdAndId(long movieId, long id);
List<ViewedEntity> findByUserId(Integer userId);
Optional<ViewedEntity> findOneByUserIdAndId(Integer userId, Integer id);
}

View File

@ -1,62 +1,60 @@
package com.example.backend.viewed.service;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.example.backend.core.errors.NotFoundException;
import com.example.backend.users.service.UserService;
import com.example.backend.viewed.model.ViewedEntity;
import com.example.backend.viewed.repository.ViewedRepository;
@Service
public class ViewedService {
private final ViewedRepository repository;
private final UserService userService;
public ViewedService(ViewedRepository repository) {
public ViewedService(ViewedRepository repository, UserService userService) {
this.repository = repository;
this.userService = userService;
}
@Transactional(readOnly = true)
public List<ViewedEntity> getAll(Integer userId) {
if (Objects.equals(userId, 0)) {
return repository.getAll();
}
return repository.getAll().stream()
.filter(item -> item.getUser().getId().equals(userId))
.toList();
userService.get(userId);
return repository.findByUserId(userId);
}
public Integer countViewed(Integer movieId) {
if (Objects.equals(movieId, 0)) {
return repository.getAll().size();
}
return repository.getAll().stream()
.filter(item -> item.getMovie().getId().equals(
movieId))
.toList().size();
// return (int) repository.getAll().stream().filter(item ->
// item.getMovie().getId().equals(movieId)).count();
}
public ViewedEntity get(Integer id) {
return Optional.ofNullable(repository.get(id)).orElseThrow(() -> new NotFoundException(id));
@Transactional(readOnly = true)
public ViewedEntity get(Integer userId, Integer id) {
userService.get(userId);
return repository.findOneByUserIdAndId(userId, id).orElseThrow(() -> new NotFoundException(id));
}
@Transactional
public ViewedEntity create(ViewedEntity entity) {
return repository.create(entity);
return repository.save(entity);
}
public ViewedEntity update(Integer id, ViewedEntity entity) {
final ViewedEntity exisEntity = get(id);
@Transactional
public ViewedEntity update(Integer userId, Integer id, ViewedEntity entity) {
final ViewedEntity exisEntity = get(userId, id);
exisEntity.setUser(entity.getUser());
exisEntity.setMovie(entity.getMovie());
return repository.update(exisEntity);
return repository.save(exisEntity);
}
public ViewedEntity delete(Integer id) {
final ViewedEntity exisEntity = get(id);
return repository.delete(exisEntity);
@Transactional
public ViewedEntity delete(Integer userId, Integer id) {
final ViewedEntity exisEntity = get(userId, id);
repository.delete(exisEntity);
return exisEntity;
}
// @Transactional
// public Integer countViewed(Integer movieId) {
// return repository.getCountViews(movieId);
// }
}

View File

@ -1 +1,20 @@
# Server
spring.main.banner-mode=off
server.port=8080
# Logger settings
# Available levels are: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
logging.level.com.example.demo=DEBUG
# JPA Settings
spring.datasource.url=jdbc:h2:file:./data
spring.datasource.username=elina
spring.datasource.password=elina
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.hibernate.ddl-auto=create
spring.jpa.open-in-view=false
# spring.jpa.show-sql=true
# spring.jpa.properties.hibernate.format_sql=true
# H2 console
spring.h2.console.enabled=true

View File

@ -1,54 +1,77 @@
package com.example.backend;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.dao.DataIntegrityViolationException;
import com.example.backend.categories.model.CategorieEntity;
import com.example.backend.categories.service.CategorieService;
import com.example.backend.core.errors.NotFoundException;
@SpringBootTest
@TestMethodOrder(OrderAnnotation.class)
public class CategorieServiceTests {
class CategorieServiceTests {
@Autowired
private CategorieService categorieService;
private CategorieEntity categorie;
@BeforeEach
void createData() {
removeData();
categorie = categorieService.create(new CategorieEntity(1, "Drama", "null"));
categorieService.create(new CategorieEntity(2, "Comedy", "null"));
}
@AfterEach
void removeData() {
categorieService.getAll().forEach(item -> categorieService.delete(item.getId()));
}
@Test
void getTest() {
Assertions.assertThrows(NotFoundException.class, () -> categorieService.get(0));
}
@Test
@Order(1)
void createTest() {
categorieService.create(new CategorieEntity(1, "Драма", ""));
final CategorieEntity lastCategorie = categorieService.create(new CategorieEntity(2, "Хоррор", ""));
Assertions.assertEquals(lastCategorie, categorieService.get(2));
Assertions.assertEquals(2, categorieService.getAll().size());
Assertions.assertEquals(categorie, categorieService.get(categorie.getId()));
}
@Test
@Order(2)
void update() {
final String newName = "Комедия";
final CategorieEntity entity = categorieService.get(2);
final String oldName = entity.getName();
final CategorieEntity newEntity = categorieService.update(2, new CategorieEntity(2, newName, ""));
void createNotUniqueTest() {
final CategorieEntity nonUniqueCategorie = new CategorieEntity(1, "Drama", "null");
Assertions.assertThrows(IllegalArgumentException.class, () -> categorieService.create(nonUniqueCategorie));
}
@Test
void createNullableTest() {
final CategorieEntity nullableCategorie = new CategorieEntity(1, null, "null");
Assertions.assertThrows(DataIntegrityViolationException.class, () -> categorieService.create(
nullableCategorie));
}
@Test
void updateTest() {
final String newName = "TEST";
final String oldName = categorie.getName();
final CategorieEntity cat = new CategorieEntity(categorie.getId(), newName, categorie.getImage());
final CategorieEntity newEntity = categorieService.update(categorie.getId(), cat);
Assertions.assertEquals(newName, newEntity.getName());
Assertions.assertNotEquals(oldName, "Аниме");
Assertions.assertNotEquals(oldName, newEntity.getName());
}
@Test
@Order(3)
void delete() {
categorieService.delete(2);
void deleteTest() {
categorieService.delete(categorie.getId());
Assertions.assertEquals(1, categorieService.getAll().size());
Assertions.assertNotEquals(2, categorieService.getAll().size());
Assertions.assertNotEquals(3, categorieService.getAll().size());
}
}

View File

@ -1,76 +1,80 @@
package com.example.backend;
// package com.example.backend;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
// import org.junit.jupiter.api.TestMethodOrder;
// import org.junit.jupiter.api.Assertions;
// import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
// import org.junit.jupiter.api.Order;
// import org.junit.jupiter.api.Test;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.boot.test.context.SpringBootTest;
import com.example.backend.categories.model.CategorieEntity;
import com.example.backend.core.errors.NotFoundException;
import com.example.backend.favorites.model.FavoriteEntity;
import com.example.backend.favorites.service.FavoriteService;
import com.example.backend.movies.model.MovieEntity;
import com.example.backend.users.model.UserEntity;
// import com.example.backend.categories.model.CategorieEntity;
// import com.example.backend.core.errors.NotFoundException;
// import com.example.backend.favorites.model.FavoriteEntity;
// import com.example.backend.favorites.service.FavoriteService;
// import com.example.backend.movies.model.MovieEntity;
// import com.example.backend.users.model.UserEntity;
@SpringBootTest
@TestMethodOrder(OrderAnnotation.class)
public class FavoriteServiceTests {
@Autowired
private FavoriteService favoriteService;
// @SpringBootTest
// @TestMethodOrder(OrderAnnotation.class)
// public class FavoriteServiceTests {
// @Autowired
// private FavoriteService favoriteService;
@Test
void getTest() {
Assertions.assertThrows(NotFoundException.class, () -> favoriteService.get(0));
}
// @Test
// void getTest() {
// Assertions.assertThrows(NotFoundException.class, () ->
// favoriteService.get(0));
// }
@Test
@Order(1)
void createTest() {
final CategorieEntity cat1 = new CategorieEntity(1, "Драма", "");
// @Test
// @Order(1)
// void createTest() {
// final CategorieEntity cat1 = new CategorieEntity(1, "Драма", "");
final MovieEntity mov1 = new MovieEntity(1, cat1, "Хатико", "какой-то фильм", "", "");
final MovieEntity mov2 = new MovieEntity(2, cat1, "Унесеснные призраками", "какой-то фильм", "", "");
// final MovieEntity mov1 = new MovieEntity(1, cat1, "Хатико", "какой-то фильм",
// "", "");
// final MovieEntity mov2 = new MovieEntity(2, cat1, "Унесеснные призраками",
// "какой-то фильм", "", "");
final UserEntity us1 = new UserEntity(1, "elina", "123", true);
// final UserEntity us1 = new UserEntity(1, "elina", "123", true);
favoriteService.create(new FavoriteEntity(1, us1, mov1));
final FavoriteEntity lastFavorite = favoriteService.create(new FavoriteEntity(2, us1, mov2));
// favoriteService.create(new FavoriteEntity(1, us1, mov1));
// final FavoriteEntity lastFavorite = favoriteService.create(new
// FavoriteEntity(2, us1, mov2));
Assertions.assertEquals(lastFavorite, favoriteService.get(2));
Assertions.assertEquals(2, favoriteService.getAll(1).size());
}
// Assertions.assertEquals(lastFavorite, favoriteService.get(2));
// Assertions.assertEquals(2, favoriteService.getAll(1).size());
// }
@Test
@Order(2)
void update() {
// @Test
// @Order(2)
// void update() {
final CategorieEntity cat1 = new CategorieEntity(1, "Драма", "");
// final CategorieEntity cat1 = new CategorieEntity(1, "Драма", "");
final MovieEntity mov2 = new MovieEntity(1, cat1, "Унесеснные призраками",
"какой-то фильм", "", "");
// final MovieEntity mov2 = new MovieEntity(1, cat1, "Унесеснные призраками",
// "какой-то фильм", "", "");
final UserEntity us1 = new UserEntity(1, "elina", "123", true);
// final UserEntity us1 = new UserEntity(1, "elina", "123", true);
final FavoriteEntity fav = new FavoriteEntity(1, us1, mov2);
// final FavoriteEntity fav = new FavoriteEntity(1, us1, mov2);
final FavoriteEntity oldFav = favoriteService.get(1);
// final FavoriteEntity oldFav = favoriteService.get(1);
final FavoriteEntity newFav = favoriteService.update(2, fav);
// final FavoriteEntity newFav = favoriteService.update(2, fav);
Assertions.assertNotEquals(oldFav.getMovie().getName(),
newFav.getMovie().getName());
// Assertions.assertNotEquals(oldFav.getMovie().getName(),
// newFav.getMovie().getName());
}
// }
@Test
@Order(3)
void delete() {
// @Test
// @Order(3)
// void delete() {
favoriteService.delete(1);
// favoriteService.delete(1);
Assertions.assertEquals(1, favoriteService.getAll(1).size());
}
}
// Assertions.assertEquals(1, favoriteService.getAll(1).size());
// }
// }

View File

@ -1,88 +1,94 @@
package com.example.backend;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.dao.DataIntegrityViolationException;
import com.example.backend.categories.model.CategorieEntity;
import com.example.backend.categories.service.CategorieService;
import com.example.backend.core.errors.NotFoundException;
import com.example.backend.movies.model.MovieEntity;
import com.example.backend.movies.service.MovieService;
import com.example.backend.users.model.UserEntity;
import com.example.backend.viewed.model.ViewedEntity;
import com.example.backend.viewed.service.ViewedService;
@SpringBootTest
@TestMethodOrder(OrderAnnotation.class)
public class MovieServiceTest {
class MovieServiceTest {
@Autowired
private MovieService movieService;
@Autowired
private ViewedService viewedService;
private MovieEntity movie;
@Autowired
private CategorieService categorieService;
@Autowired
private CategorieEntity cat;
@BeforeEach
void createData() {
removeData();
cat = categorieService.create(new CategorieEntity(1, "Drama", "null"));
movie = movieService.create(new MovieEntity(1, cat, "1", "1", "1", "1"));
movieService.create(new MovieEntity(2, cat, "2", "2", "2", "2"));
}
@AfterEach
void removeData() {
movieService.getAll(cat.getId()).forEach(item -> movieService.delete(item.getId()));
categorieService.getAll().forEach(item -> categorieService.delete(item.getId()));
}
@Test
void getTest() {
Assertions.assertThrows(NotFoundException.class, () -> movieService.get(0));
Assertions.assertThrows(NotFoundException.class, () -> viewedService.get(0));
Assertions.assertThrows(NotFoundException.class, () -> movieService.get(20));
}
@Test
@Order(1)
void createTest() {
final CategorieEntity cat1 = new CategorieEntity(1, "Драма", "");
movieService.create(new MovieEntity(1, cat1, "Хатико", "какой-то фильм", "", ""));
final MovieEntity lastMovie = movieService.create(new MovieEntity(2, cat1, "Любовь и голуби", "", "", ""));
Assertions.assertEquals(lastMovie, movieService.get(2));
Assertions.assertEquals(2, movieService.getAll(1).size());
Assertions.assertEquals(2, movieService.getAll(cat.getId()).size());
Assertions.assertEquals(movie, movieService.get(movie.getId()));
}
@Test
@Order(2)
void update() {
final CategorieEntity newCategorie = new CategorieEntity(1, "Комедия", "");
final MovieEntity entity = movieService.get(2);
final String oldName = entity.getCategorie().getName();
final MovieEntity newEntity = movieService.update(2,
new MovieEntity(2, newCategorie, "Любовь и голуби", "", "", ""));
Assertions.assertEquals(newCategorie.getName(), newEntity.getCategorie().getName());
Assertions.assertNotEquals(oldName, "Аниме");
void createNotUniqueTest() {
final MovieEntity nonUniqueCategorie = new MovieEntity(3, cat, "1", "1", "1", "1");
Assertions.assertThrows(IllegalArgumentException.class, () -> movieService.create(nonUniqueCategorie));
}
@Test
@Order(3)
void delete() {
movieService.delete(2);
Assertions.assertNotEquals(2, movieService.getAll(1).size());
void createNullableTest() {
final MovieEntity nullableCategorie = new MovieEntity(1, cat, null, "1", "1", "1");
Assertions.assertThrows(DataIntegrityViolationException.class, () -> movieService.create(
nullableCategorie));
}
@Test
@Order(4)
void checkCounViewed() {
final UserEntity us1 = new UserEntity(1, "", "", true);
final UserEntity us2 = new UserEntity(2, "", "", true);
final UserEntity us3 = new UserEntity(3, "", "", true);
final CategorieEntity cat1 = new CategorieEntity(1, "", "");
final MovieEntity mov1 = new MovieEntity(1, cat1, "", "", "", "");
viewedService.create(new ViewedEntity(1, us1, mov1));
viewedService.create(new ViewedEntity(2, us2, mov1));
viewedService.create(new ViewedEntity(3, us3, mov1));
final Integer count = movieService.countViews(1);
Assertions.assertEquals(3, count);
void updateTest() {
final String newName = "TEST";
final String oldName = movie.getName();
final MovieEntity mov = new MovieEntity(movie.getId(), movie.getCategorie(), newName, movie.getDescription(),
movie.getDuration(), movie.getImage());
final MovieEntity newEntity = movieService.update(movie.getId(), mov);
Assertions.assertEquals(newName, newEntity.getName());
Assertions.assertNotEquals(oldName, newEntity.getName());
}
@Test
void deleteTest() {
movieService.delete(1);
Assertions.assertEquals(1, movieService.getAll(cat.getId()).size());
Assertions.assertNotEquals(3, movieService.getAll(cat.getId()).size());
}
}

BIN
data.mv.db Normal file

Binary file not shown.

70
data.trace.db Normal file
View File

@ -0,0 +1,70 @@
2024-04-15 12:19:20.050452+04:00 database: wrong user or password; user: "SA"
org.h2.message.DbException: Неверное имя пользователя или пароль
Wrong user name or password [28000-224]
at org.h2.message.DbException.get(DbException.java:223)
at org.h2.message.DbException.get(DbException.java:199)
at org.h2.message.DbException.get(DbException.java:188)
at org.h2.engine.Engine.openSession(Engine.java:154)
at org.h2.engine.Engine.openSession(Engine.java:222)
at org.h2.engine.Engine.createSession(Engine.java:201)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:343)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125)
at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:288)
at org.h2.server.web.WebServer.getConnection(WebServer.java:811)
at org.h2.server.web.WebApp.login(WebApp.java:1039)
at org.h2.server.web.WebApp.process(WebApp.java:227)
at org.h2.server.web.WebApp.processRequest(WebApp.java:177)
at org.h2.server.web.JakartaWebServlet.doGet(JakartaWebServlet.java:129)
at org.h2.server.web.JakartaWebServlet.doPost(JakartaWebServlet.java:166)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Неверное имя пользователя или пароль
Wrong user name or password [28000-224]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:522)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
... 50 more
2024-04-15 12:20:09.391447+04:00 jdbc[13]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Синтаксическая ошибка в выражении SQL "SELECT * FROM CATEGORIES CATEGORIES [*]FAVORITES"
Syntax error in SQL statement "SELECT * FROM CATEGORIES CATEGORIES [*]FAVORITES"; SQL statement:
SELECT * FROM CATEGORIES CATEGORIES FAVORITES [42000-224]
2024-04-15 16:29:01.404545+04:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLDataException: Значение слишком длинное для поля "PASSWORD CHARACTER VARYING(5)": "'string' (6)"
Value too long for column "PASSWORD CHARACTER VARYING(5)": "'string' (6)"; SQL statement:
insert into users (is_admin,password,username,id) values (?,?,?,?) [22001-224]
2024-04-15 16:29:07.847974+04:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLDataException: Значение слишком длинное для поля "PASSWORD CHARACTER VARYING(5)": "'string' (6)"
Value too long for column "PASSWORD CHARACTER VARYING(5)": "'string' (6)"; SQL statement:
insert into users (is_admin,password,username,id) values (?,?,?,?) [22001-224]