mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-11-12 22:41:35 +00:00
#2361 - Tidy tests only, move to LoggedSql (ebean-test)
This commit is contained in:
1 parent
e5dceda4b9
commit
1696caadd4
163 files changed
+1024
-1179
No files matched your search
@@ -2,7 +2,7 @@ package io.ebean;
|
||||
|
||||
import io.ebean.meta.BasicMetricVisitor;
|
||||
import io.ebean.meta.MetaQueryMetric;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -56,7 +56,7 @@ public class DtoQuery2Test extends BaseTestCase {
|
||||
ResetBasicData.reset();
|
||||
final int expectedCount = server().find(Customer.class).findCount();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
int counter = 0;
|
||||
try (final QueryIterator<DCust> iterator = server().findDto(DCust.class, "select id, name from o_customer where id > :id")
|
||||
.setParameter("id", 0)
|
||||
@@ -72,7 +72,7 @@ public class DtoQuery2Test extends BaseTestCase {
|
||||
|
||||
assertThat(counter).isEqualTo(expectedCount);
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select id, name from o_customer where id > ?");
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ public class DtoQuery2Test extends BaseTestCase {
|
||||
ResetBasicData.reset();
|
||||
final int expectedCount = server().find(Customer.class).findCount();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
try (final Stream<DCust> stream =
|
||||
server()
|
||||
@@ -96,7 +96,7 @@ public class DtoQuery2Test extends BaseTestCase {
|
||||
assertThat(names.size()).isEqualTo(expectedCount);
|
||||
}
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select id, name from o_customer where id > ?");
|
||||
}
|
||||
|
||||
@@ -105,12 +105,12 @@ public class DtoQuery2Test extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
server().findDto(DCust.class, "select id, name from o_customer where id > :id")
|
||||
.setParameter("id", 0)
|
||||
.findEach(it -> log.info("got " + it.getId() + " " + it.getName()));
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select id, name from o_customer where id > ?");
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ public class DtoQuery2Test extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
server().findDto(DCust.class, "select id, name from o_customer where id > :id order by id desc")
|
||||
.setParameter("id", 0)
|
||||
.findEachWhile(customer -> {
|
||||
@@ -127,7 +127,7 @@ public class DtoQuery2Test extends BaseTestCase {
|
||||
return customer.getId() > 3;
|
||||
});
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select id, name from o_customer where id > ?");
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import io.ebean.annotation.Platform;
|
||||
import io.ebean.meta.MetaQueryMetric;
|
||||
import io.ebean.meta.MetaTimedMetric;
|
||||
import io.ebean.meta.ServerMetrics;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -76,7 +76,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
List<Contact> list = DB.find(Contact.class)
|
||||
.select("email, concat(lastName, ISO_WEEK(?)) as lastName")
|
||||
@@ -86,7 +86,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
|
||||
assertThat(list).isNotEmpty();
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql).hasSize(1);
|
||||
assertSql(sql.get(0)).contains("select t0.id, t0.email, concat(t0.last_name, ISO_WEEK(?)) lastName from contact");
|
||||
}
|
||||
@@ -97,7 +97,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
//
|
||||
// ResetBasicData.reset();
|
||||
//
|
||||
// LoggedSqlCollector.start();
|
||||
// LoggedSql.start();
|
||||
//
|
||||
// List<Contact> list = DB.find(Contact.class)
|
||||
// .select("email, concat(lastName, ISO_WEEK(:date)) as lastName")
|
||||
@@ -108,7 +108,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
//
|
||||
// assertThat(list).isNotEmpty();
|
||||
//
|
||||
// List<String> sql = LoggedSqlCollector.stop();
|
||||
// List<String> sql = LoggedSql.stop();
|
||||
// assertThat(sql).hasSize(2);
|
||||
// assertSql(sql.get(0)).contains("select t0.id, t0.email, concat(t0.last_name, ISO_WEEK(?)) lastName from contact");
|
||||
// }
|
||||
@@ -118,7 +118,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
DtoQuery<ContactDto> query = DB.find(Contact.class)
|
||||
// we must explicitly add the id property for DTO query (if we want it)
|
||||
@@ -135,7 +135,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
assertThat(dto.getFullName()).isNotNull();
|
||||
}
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select t0.id, t0.email, " + concat("t0.last_name", ", ", "t0.first_name")
|
||||
+ " fullName from contact t0 where t0.email is not null and t0.last_name is not null order by t0.last_name");
|
||||
}
|
||||
@@ -145,7 +145,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
DtoQuery<ContactDto2> query = DB.find(Contact.class)
|
||||
.where().isNotNull("email").order().asc("lastName")
|
||||
@@ -162,7 +162,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
assertThat(dto.getId()).isGreaterThan(0);
|
||||
}
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select t0.id, t0.first_name, t0.last_name");
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
DtoQuery<ContactDto> query = DB.find(Contact.class)
|
||||
.select("email, " + concat("lastName", ", ", "firstName") + " as fullName").where().isNotNull("email")
|
||||
@@ -186,7 +186,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
assertThat(dto.getFullName()).isNotNull();
|
||||
}
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select t0.email, " + concat("t0.last_name", ", ", "t0.first_name")
|
||||
+ " fullName from contact t0 where t0.email is not null and t0.last_name is not null order by t0.last_name");
|
||||
}
|
||||
@@ -196,7 +196,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
List<ContactDto> contactDtos = DB.find(Contact.class).setLabel("emailFullName")
|
||||
.select("email, " + concat("lastName", ", ", "firstName") + " as fullName").where().isNotNull("email")
|
||||
@@ -209,7 +209,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
assertThat(dto.getFullName()).isNotNull();
|
||||
}
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
|
||||
if (isSqlServer()) {
|
||||
assertSql(sql.get(0)).contains("select top 10 t0.email, " + concat("t0.last_name", ", ", "t0.first_name")
|
||||
@@ -226,7 +226,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
List<ContactDto> contactDtos = DB.find(Contact.class)
|
||||
.select("id, email, " + concat("lastName", ", ", "firstName") + " as fullName").where().isNotNull("email")
|
||||
@@ -240,7 +240,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
assertThat(dto.getEmail()).isNotNull();
|
||||
}
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
if (isSqlServer()) {
|
||||
assertSql(sql.get(0)).contains("select top 10 t0.id, t0.email, "
|
||||
+ concat("t0.last_name", ", ", "t0.first_name")
|
||||
@@ -256,7 +256,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
List<ContactDto> contactDtos = DB.find(Contact.class)
|
||||
.select(concat("lastName", ", ", "firstName") + " as fullName").where().isNotNull("lastName").order()
|
||||
@@ -270,7 +270,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
assertThat(dto.getEmail()).isNull();
|
||||
}
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select " + concat("t0.last_name", ", ", "t0.first_name") + " fullName from contact t0 where");
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
List<ContactTotals> contactDtos = DB.find(Contact.class).select("lastName, count(*) as totalCount").where()
|
||||
.isNotNull("lastName").having().gt("count(*)", 1).order().desc("count(*)").asDto(ContactTotals.class)
|
||||
@@ -292,7 +292,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
|
||||
assertThat(dto.getTotalCount()).isNotNull();
|
||||
}
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select t0.last_name, count(*) totalCount from contact t0 where t0.last_name is not null group by t0.last_name having count(*) > ?");
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import io.ebean.annotation.Platform;
|
||||
import io.ebean.meta.BasicMetricVisitor;
|
||||
import io.ebean.meta.MetaQueryMetric;
|
||||
import io.ebean.meta.ServerMetrics;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -57,12 +57,12 @@ public class DtoQueryTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
server().findDto(DCust.class, "select id, name from o_customer where id > :id")
|
||||
.setParameter("id", 0)
|
||||
.findEach(it -> log.info("got " + it.getId() + " " + it.getName()));
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select id, name from o_customer where id > ?");
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ public class DtoQueryTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
server().findDto(DCust.class, "select id, name from o_customer where id > :id order by id desc")
|
||||
.setParameter("id", 0)
|
||||
.findEachWhile(customer -> {
|
||||
@@ -79,7 +79,7 @@ public class DtoQueryTest extends BaseTestCase {
|
||||
return customer.getId() > 3;
|
||||
});
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select id, name from o_customer where id > ?");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.ebean;
|
||||
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.EBasicVer;
|
||||
|
||||
@@ -20,7 +20,7 @@ public class EbeanServer_deleteAllByIdTest extends BaseTestCase {
|
||||
final EBasicVer bean1 = bean("foo1");
|
||||
final EBasicVer bean2 = bean("foo2");
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
DB.saveAll(bean0, bean1, bean2);
|
||||
|
||||
@@ -28,7 +28,7 @@ public class EbeanServer_deleteAllByIdTest extends BaseTestCase {
|
||||
assertNotNull(bean1.getId());
|
||||
assertNotNull(bean2.getId());
|
||||
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(4);
|
||||
assertThat(loggedSql.get(0)).contains("insert into e_basicver");
|
||||
assertSqlBind(loggedSql, 1, 3);
|
||||
@@ -52,10 +52,10 @@ public class EbeanServer_deleteAllByIdTest extends BaseTestCase {
|
||||
}
|
||||
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
DB.deleteAll(EBasicVer.class, ids);
|
||||
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
platformAssertIn(loggedSql.get(0), "delete from e_basicver where id ");
|
||||
}
|
||||
@@ -73,12 +73,12 @@ public class EbeanServer_deleteAllByIdTest extends BaseTestCase {
|
||||
|
||||
Database db = DB.getDefault();
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
try (Transaction txn = db.beginTransaction()) {
|
||||
db.deleteAll(EBasicVer.class, ids, txn);
|
||||
txn.commit();
|
||||
}
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
platformAssertIn(loggedSql.get(0), "delete from e_basicver where id ");
|
||||
}
|
||||
@@ -94,11 +94,11 @@ public class EbeanServer_deleteAllByIdTest extends BaseTestCase {
|
||||
ids.add(someBean.getId());
|
||||
}
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
DB.deleteAllPermanent(EBasicVer.class, ids);
|
||||
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
platformAssertIn(loggedSql.get(0), "delete from e_basicver where id ");
|
||||
}
|
||||
@@ -117,12 +117,12 @@ public class EbeanServer_deleteAllByIdTest extends BaseTestCase {
|
||||
|
||||
Database db = DB.getDefault();
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
try (Transaction txn = db.beginTransaction()) {
|
||||
db.deleteAllPermanent(EBasicVer.class, ids, txn);
|
||||
txn.commit();
|
||||
}
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
platformAssertIn(loggedSql.get(0), "delete from e_basicver where id ");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package io.ebean;
|
||||
|
||||
import org.tests.model.basic.EBasicVer;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
@@ -18,10 +18,10 @@ public class EbeanServer_deleteByIdTest extends BaseTestCase {
|
||||
DB.save(someBean);
|
||||
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
DB.delete(EBasicVer.class, someBean.getId());
|
||||
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id = ?");
|
||||
}
|
||||
@@ -33,10 +33,10 @@ public class EbeanServer_deleteByIdTest extends BaseTestCase {
|
||||
DB.save(someBean);
|
||||
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
DB.deletePermanent(EBasicVer.class, someBean.getId());
|
||||
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id = ?");
|
||||
}
|
||||
@@ -50,7 +50,7 @@ public class EbeanServer_deleteByIdTest extends BaseTestCase {
|
||||
|
||||
Database server = DB.getDefault();
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
Transaction txn = server.beginTransaction();
|
||||
try {
|
||||
server.delete(EBasicVer.class, someBean.getId(), txn);
|
||||
@@ -58,7 +58,7 @@ public class EbeanServer_deleteByIdTest extends BaseTestCase {
|
||||
} finally {
|
||||
txn.end();
|
||||
}
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id = ?");
|
||||
}
|
||||
@@ -71,7 +71,7 @@ public class EbeanServer_deleteByIdTest extends BaseTestCase {
|
||||
|
||||
Database server = DB.getDefault();
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
Transaction txn = server.beginTransaction();
|
||||
try {
|
||||
server.deletePermanent(EBasicVer.class, someBean.getId(), txn);
|
||||
@@ -79,7 +79,7 @@ public class EbeanServer_deleteByIdTest extends BaseTestCase {
|
||||
} finally {
|
||||
txn.end();
|
||||
}
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id = ?");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package io.ebean;
|
||||
|
||||
import org.tests.model.basic.EBasicVer;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
@@ -18,10 +18,10 @@ public class EbeanServer_deleteTest extends BaseTestCase {
|
||||
DB.save(someBean);
|
||||
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
DB.delete(someBean);
|
||||
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id=? and ");
|
||||
}
|
||||
@@ -34,7 +34,7 @@ public class EbeanServer_deleteTest extends BaseTestCase {
|
||||
|
||||
Database server = DB.getDefault();
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
Transaction txn = server.beginTransaction();
|
||||
try {
|
||||
server.delete(someBean, txn);
|
||||
@@ -42,7 +42,7 @@ public class EbeanServer_deleteTest extends BaseTestCase {
|
||||
} finally {
|
||||
txn.end();
|
||||
}
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id=? and ");
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.ebean;
|
||||
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
@@ -88,9 +88,9 @@ public class EbeanServer_eqlTest extends BaseTestCase {
|
||||
}
|
||||
|
||||
// check also select count(*)
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
query.findCount();
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql.get(0)).startsWith("select count(*) from o_customer t0;");
|
||||
}
|
||||
|
||||
@@ -114,9 +114,9 @@ public class EbeanServer_eqlTest extends BaseTestCase {
|
||||
}
|
||||
|
||||
// check also select count(*)
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
query.findCount();
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql.get(0)).startsWith("select count(*) from o_customer t0;");
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.ebean;
|
||||
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.EBasicVer;
|
||||
|
||||
@@ -19,11 +19,11 @@ public class EbeanServer_saveAllTest extends BaseTestCase {
|
||||
List<EBasicVer> someBeans = beans(3);
|
||||
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
DB.saveAll(someBeans);
|
||||
|
||||
// assert
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(4);
|
||||
assertThat(loggedSql.get(0)).contains("insert into e_basicver (");
|
||||
assertThat(loggedSql.get(0)).contains("name, description, other, last_update) values (");
|
||||
@@ -33,19 +33,19 @@ public class EbeanServer_saveAllTest extends BaseTestCase {
|
||||
}
|
||||
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
DB.updateAll(someBeans);
|
||||
|
||||
loggedSql = LoggedSqlCollector.stop();
|
||||
loggedSql = LoggedSql.stop();
|
||||
|
||||
assertThat(loggedSql).hasSize(3);
|
||||
assertThat(loggedSql.get(0)).contains("update e_basicver set name=?, last_update=? where id=? ");
|
||||
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
DB.deleteAll(someBeans);
|
||||
|
||||
loggedSql = LoggedSqlCollector.stop();
|
||||
loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(4);
|
||||
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id=?");
|
||||
}
|
||||
@@ -57,31 +57,31 @@ public class EbeanServer_saveAllTest extends BaseTestCase {
|
||||
|
||||
try (Transaction transaction = server.beginTransaction()) {
|
||||
transaction.setBatchMode(true);
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
for (EBasicVer bean : beans(2)) {
|
||||
server.save(bean);
|
||||
}
|
||||
|
||||
// jdbc batch, no sql yet
|
||||
assertThat(LoggedSqlCollector.current()).isEmpty();
|
||||
assertThat(LoggedSql.collect()).isEmpty();
|
||||
|
||||
server.saveAll(beans(3));
|
||||
|
||||
// still batch, no sql yet
|
||||
assertThat(LoggedSqlCollector.current()).isEmpty();
|
||||
assertThat(LoggedSql.collect()).isEmpty();
|
||||
|
||||
for (EBasicVer bean : beans(2)) {
|
||||
server.save(bean);
|
||||
}
|
||||
// still batch, no sql yet
|
||||
assertThat(LoggedSqlCollector.current()).isEmpty();
|
||||
assertThat(LoggedSql.collect()).isEmpty();
|
||||
|
||||
// flush now
|
||||
transaction.commit();
|
||||
|
||||
// and we have our SQL from jdbc batch flush
|
||||
assertThat(LoggedSqlCollector.stop()).isNotEmpty();
|
||||
assertThat(LoggedSql.stop()).isNotEmpty();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -113,14 +113,14 @@ public class EbeanServer_saveAllTest extends BaseTestCase {
|
||||
Database server = DB.getDefault();
|
||||
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
try (Transaction txn = server.beginTransaction()) {
|
||||
server.saveAll(someBeans, txn);
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
// assert
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(4);
|
||||
assertThat(loggedSql.get(0)).contains("insert into e_basicver (");
|
||||
assertThat(loggedSql.get(0)).contains("name, description, other, last_update) values (");
|
||||
@@ -130,23 +130,23 @@ public class EbeanServer_saveAllTest extends BaseTestCase {
|
||||
}
|
||||
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
try (Transaction txn = server.beginTransaction()) {
|
||||
server.updateAll(someBeans, txn);
|
||||
txn.commit();
|
||||
}
|
||||
loggedSql = LoggedSqlCollector.stop();
|
||||
loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(3);
|
||||
assertThat(loggedSql.get(0)).contains("update e_basicver set name=?, last_update=? where id=? ");
|
||||
|
||||
// act
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
try (Transaction txn = server.beginTransaction()) {
|
||||
server.deleteAll(someBeans, txn);
|
||||
txn.commit();
|
||||
}
|
||||
loggedSql = LoggedSqlCollector.stop();
|
||||
loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(4);
|
||||
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id=?");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package io.ebean;
|
||||
|
||||
import io.ebean.service.SpiFetchGroupQuery;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.Address;
|
||||
import org.tests.model.basic.Contact;
|
||||
@@ -47,10 +47,10 @@ public class FetchGroupTest extends BaseTestCase {
|
||||
.ilike("name", "rob")
|
||||
.select(fetch);
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
query.findList();
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql).hasSize(2);
|
||||
assertSql(sql.get(0)).contains("select t0.id, t0.name, t0.status from o_customer");
|
||||
assertSql(sql.get(1)).contains("select t0.customer_id, t0.id, t0.first_name, t0.last_name, t0.email from contact");
|
||||
@@ -75,10 +75,10 @@ public class FetchGroupTest extends BaseTestCase {
|
||||
.ilike("name", "rob")
|
||||
.select(fetch);
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
query.findList();
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql).hasSize(2);
|
||||
assertSql(sql.get(0)).contains("select t0.id, t0.name from o_customer");
|
||||
assertSql(sql.get(1)).contains(" from contact");
|
||||
@@ -105,10 +105,10 @@ public class FetchGroupTest extends BaseTestCase {
|
||||
.ilike("name", "rob")
|
||||
.select(FBCustomer);
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
query.findList();
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql).hasSize(1);
|
||||
assertSql(sql.get(0)).contains("select t0.id, t0.name, t0.version, t1.id, t1.line_1, t1.line_2, t1.city, t2.code, t2.name from o_customer t0 left join o_address t1 on t1.id = t0.billing_address_id left join o_country t2 on t2.code = t1.country_code ");
|
||||
}
|
||||
@@ -122,7 +122,7 @@ public class FetchGroupTest extends BaseTestCase {
|
||||
|
||||
final FetchGroup<Customer> fetchGroup = query.buildFetchGroup();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
Customer.find
|
||||
.query()
|
||||
@@ -131,7 +131,7 @@ public class FetchGroupTest extends BaseTestCase {
|
||||
.select(fetchGroup)
|
||||
.findList();
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql).hasSize(1);
|
||||
assertSql(sql.get(0)).contains("select t0.id, t0.name from o_customer t0 where");
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package io.ebean;
|
||||
import io.ebean.annotation.IgnorePlatform;
|
||||
import io.ebean.annotation.Platform;
|
||||
import io.ebean.bean.EntityBean;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.converstation.User;
|
||||
|
||||
@@ -37,10 +37,10 @@ public class TestUnsetLoadedProperties extends BaseTestCase {
|
||||
|
||||
assertThat(beanState.loadedProps()).containsExactly("id", "name");
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
user.update();
|
||||
|
||||
List<String> loggedSql = LoggedSqlCollector.stop();
|
||||
List<String> loggedSql = LoggedSql.stop();
|
||||
assertThat(loggedSql).hasSize(1);
|
||||
assertThat(loggedSql.get(0)).doesNotContain("email");
|
||||
}
|
||||
@@ -114,10 +114,10 @@ public class TestUnsetLoadedProperties extends BaseTestCase {
|
||||
updUser.setName("mod occ");
|
||||
updUser.markPropertyUnset("version");
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
updUser.save();
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("where id=?;");
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import io.ebean.annotation.IgnorePlatform;
|
||||
import io.ebean.annotation.Platform;
|
||||
import io.ebean.meta.MetaQueryMetric;
|
||||
import io.ebean.meta.ServerMetrics;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.Country;
|
||||
import org.tests.model.basic.Customer;
|
||||
@@ -55,7 +55,7 @@ public class UpdateQueryTest extends BaseTestCase {
|
||||
|
||||
UpdateQuery<Customer> update = server().update(Customer.class);
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
int rows = update
|
||||
.setRaw("status = status")
|
||||
@@ -63,7 +63,7 @@ public class UpdateQueryTest extends BaseTestCase {
|
||||
.update();
|
||||
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql).hasSize(1);
|
||||
assertThat(rows).isGreaterThan(0);
|
||||
|
||||
@@ -81,7 +81,7 @@ public class UpdateQueryTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
int rows = server().find(Customer.class)
|
||||
.where()
|
||||
@@ -92,7 +92,7 @@ public class UpdateQueryTest extends BaseTestCase {
|
||||
.update();
|
||||
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql).hasSize(1);
|
||||
assertThat(rows).isEqualTo(0);
|
||||
|
||||
@@ -103,7 +103,7 @@ public class UpdateQueryTest extends BaseTestCase {
|
||||
public void query_asUpdate_idIn() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
int rows = server().find(Customer.class)
|
||||
.where()
|
||||
@@ -113,7 +113,7 @@ public class UpdateQueryTest extends BaseTestCase {
|
||||
.setLabel("asUpdateByIds")
|
||||
.update();
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql).hasSize(1);
|
||||
assertThat(rows).isEqualTo(0);
|
||||
|
||||
@@ -201,7 +201,7 @@ public class UpdateQueryTest extends BaseTestCase {
|
||||
|
||||
Country nz = server.reference(Country.class, "NZ");
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
server.update(Customer.class)
|
||||
.set("status", Customer.Status.ACTIVE)
|
||||
@@ -211,7 +211,7 @@ public class UpdateQueryTest extends BaseTestCase {
|
||||
.setMaxRows(100)
|
||||
.update();
|
||||
|
||||
final List<String> sql = LoggedSqlCollector.stop();
|
||||
final List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("update o_customer set status=? where id in (select t0.id from o_customer t0 left join o_address t1 on t1.id = t0.billing_address_id where t1.country_code = ? and t0.id > ? limit 100)");
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ public class UpdateQueryTest extends BaseTestCase {
|
||||
|
||||
Database server = server();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
server.update(Customer.class)
|
||||
.set("status", Customer.Status.ACTIVE)
|
||||
@@ -230,7 +230,7 @@ public class UpdateQueryTest extends BaseTestCase {
|
||||
.setMaxRows(100)
|
||||
.update();
|
||||
|
||||
final List<String> sql = LoggedSqlCollector.stop();
|
||||
final List<String> sql = LoggedSql.stop();
|
||||
if (isMySql() || isH2() || isMariaDB()) {
|
||||
assertSql(sql.get(0)).contains("update o_customer set status=? where id > ? limit 100");
|
||||
} else {
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@ package io.ebeaninternal.server.expression;
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.DB;
|
||||
import io.ebean.Query;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.Contact;
|
||||
import org.tests.model.basic.Customer;
|
||||
@@ -35,13 +35,13 @@ public class IsEmptyExpressionQueryTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
DB.find(EUserNoFk.class)
|
||||
.where().isEmpty("files")
|
||||
.delete();
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql).hasSize(1);
|
||||
|
||||
if (isPlatformSupportsDeleteTableAlias()) {
|
||||
|
||||
@@ -2,7 +2,7 @@ package io.ebeaninternal.server.expression;
|
||||
|
||||
import io.ebean.DB;
|
||||
import io.ebean.Query;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.onetoone.album.Cover;
|
||||
@@ -35,11 +35,11 @@ public class NoopExpressionTest extends BaseExpressionTest {
|
||||
.where().add(NoopExpression.INSTANCE)
|
||||
.query();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
query.findCount();
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertSql(sql.get(0)).contains("select count(*) from cover t0 where 1=1 and");
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import io.ebean.annotation.ForPlatform;
|
||||
import io.ebean.annotation.IgnorePlatform;
|
||||
import io.ebean.annotation.Platform;
|
||||
import io.ebeaninternal.api.SpiQuery;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
import io.ebean.test.LoggedSql;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.OrderDetail;
|
||||
@@ -532,12 +532,12 @@ public class EqlParserTest extends BaseTestCase {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
LoggedSql.start();
|
||||
|
||||
Query<Customer> query = parse("select name fetch billingAddress (line1, city) fetch contacts (email) limit 10");
|
||||
query.findList();
|
||||
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
List<String> sql = LoggedSql.stop();
|
||||
assertThat(sql).hasSize(2);
|
||||
assertSql(sql.get(0)).contains("select t0.id, t0.name, t1.id, t1.line_1, t1.city from o_customer t0 left join o_address");
|
||||
assertSql(sql.get(1)).contains("select t0.customer_id, t0.id, t0.email from contact t0 where (t0.customer_id)");
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
package io.ebeantest;
|
||||
|
||||
import io.ebeaninternal.api.SpiLogger;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Capture the log messages (executed SQL) for testing.
|
||||
*/
|
||||
class CaptureLogger implements SpiLogger {
|
||||
|
||||
private final SpiLogger wrapped;
|
||||
|
||||
private List<String> messages = new ArrayList<>();
|
||||
|
||||
private boolean active;
|
||||
|
||||
CaptureLogger(SpiLogger wrapped) {
|
||||
this.wrapped = wrapped;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDebug() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTrace() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void debug(String msg) {
|
||||
if (active) {
|
||||
messages.add(msg);
|
||||
}
|
||||
wrapped.debug(msg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void trace(String msg) {
|
||||
if (active) {
|
||||
messages.add(msg);
|
||||
}
|
||||
wrapped.trace(msg);
|
||||
}
|
||||
|
||||
List<String> start() {
|
||||
this.active = true;
|
||||
return collect();
|
||||
}
|
||||
|
||||
List<String> stop() {
|
||||
this.active = false;
|
||||
return collect();
|
||||
}
|
||||
|
||||
List<String> collect() {
|
||||
List<String> response = messages;
|
||||
messages = new ArrayList<>();
|
||||
return response;
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package io.ebeantest;
|
||||
|
||||
import io.ebeaninternal.api.SpiLogger;
|
||||
import io.ebeaninternal.api.SpiLoggerFactory;
|
||||
import io.ebeaninternal.server.logger.DSpiLogger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Create a logger that captures the SQL and register it for later access in tests.
|
||||
*/
|
||||
public class CapturingLoggerFactory implements SpiLoggerFactory {
|
||||
|
||||
@Override
|
||||
public SpiLogger create(String name) {
|
||||
|
||||
DSpiLogger logger = new DSpiLogger(LoggerFactory.getLogger(name));
|
||||
if (name.equals("io.ebean.SQL")) {
|
||||
return LoggedSql.register(logger);
|
||||
}
|
||||
return logger;
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
package io.ebeantest;
|
||||
|
||||
import io.ebeaninternal.api.SpiLogger;
|
||||
import io.ebeaninternal.server.logger.DSpiLogger;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LoggedSql {
|
||||
|
||||
private static CaptureLogger sqlLogger;
|
||||
|
||||
static SpiLogger register(DSpiLogger logger) {
|
||||
if (sqlLogger == null) {
|
||||
sqlLogger = new CaptureLogger(logger);
|
||||
}
|
||||
return sqlLogger;
|
||||
}
|
||||
|
||||
public static List<String> start() {
|
||||
return sqlLogger.start();
|
||||
}
|
||||
|
||||
public static List<String> stop() {
|
||||
return sqlLogger.stop();
|
||||
}
|
||||
|
||||
public static List<String> collect() {
|
||||
return sqlLogger.collect();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user