## Eclipse/MySql junit custom properties for running local tests

## Copy file roller-junit.properties (this file) to app/src/test/resource

## Copy file junit-cleartables-mysql.sql to app/src/test/resources/dbscripts/junit-cleartables-mysql.sql

## Note: running local tests will execute dbscripts/junit-cleartables-mysql.sql and will
## clear files, so check before running or create an additional database with the details below

## Rename app/src/test/resource/roller-junit.properties when not testing!!

database.configurationType=jdbc
database.jdbc.driverClass=com.mysql.jdbc.Driver
database.jdbc.connectionURL=jdbc:mysql://localhost:3306/rollerdev?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;mysqlEncoding=utf8
database.jdbc.username=testuser
database.jdbc.password=testuser

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.transaction.factory_class=org.hibernate.transaction.JDBCTransactionFactory

## Run junit-cleartables-mysql.sql to reset data
junit.testdata.reset=true

# turn off transaction manager during JUnit testing (TODO: find way to activate for JUnit tests)
# use CMA authentication to work around Spring init issues in UI tests
authentication.cma.enabled=true

# use plain text passwords in testing
passwds.encryption.enabled=false

# we don't want to start with any folders/bookmarks for testing
newuser.blogroll=

# we don't want to start with any weblog categories for testing
newuser.categories=

# put directories in ${build.tests}
themes.dir=${project.build.testOutputDirectory}${file.separator}themes
search.index.dir=${project.build.testOutputDirectory}${file.separator}index
uploads.dir=${project.build.testOutputDirectory}${file.separator}uploadsdir
mediafiles.storage.dir=${project.build.testOutputDirectory}${file.separator}mediafiles
cache.dir=${project.build.testOutputDirectory}${file.separator}planet-cache

# don't auto migrate during tests
uploads.migrate.auto=false

# override tasks.enabled so we can add a test task
tasks.enabled=TestTask

# test task
tasks.TestTask.class=org.apache.roller.weblogger.business.TestTask
tasks.TestTask.startTime=immediate
tasks.TestTask.interval=1800
tasks.TestTask.leaseTime=300

# logging
log4j.rootCategory=INFO, roller
log4j.appender.roller.File=${project.build.directory}/roller.log
log4j.category.org.apache.roller=INFO
log4j.category.net.java.roller=ERROR

log4j.category.org.apache.struts=DEBUG
#log4j.category.org.apache.roller.planet.business.jpa.JPAPropertiesManagerImpl=DEBUG
#log4j.category.org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl=DEBUG
#log4j.category.org.apache.roller.weblogger.business=DEBUG

#log4j.category.org.apache.roller.planet.config.PlanetConfig=DEBUG
#log4j.category.org.apache.roller.weblogger.config.WebloggerConfig=DEBUG

#log4j.category.org.apache.roller.weblogger.planet.tasks=DEBUG
#log4j.category.org.apache.roller.planet.business=DEBUG
#log4j.category.org.apache.roller.weblogger.planet.business=DEBUG
