package org.fenixedu.cms.domain; import org.fenixedu.bennu.core.groups.ArgumentParser; import org.fenixedu.bennu.core.groups.CustomGroup; import org.fenixedu.bennu.core.groups.CustomGroupRegistry; import org.fenixedu.bennu.core.groups.CustomGroupRegistry.BooleanParser; import org.fenixedu.bennu.core.groups.CustomGroupRegistry.DateTimeParser; import org.fenixedu.bennu.core.groups.CustomGroupRegistry.StringParser; import org.fenixedu.bennu.core.groups.Group; import org.fenixedu.cms.domain.component.*; import org.joda.time.DateTime; import org.joda.time.Seconds; import org.junit.BeforeClass; import pt.ist.fenixframework.Atomic; import pt.ist.fenixframework.Atomic.TxMode; import java.util.stream.Stream; public class TestCMS { private static final String USER_GROUP = "org.fenixedu.bennu.core.groups.UserGroup"; private static final String USER_PARSER = "org.fenixedu.bennu.core.groups.UserGroup$UserArgumentParser"; protected static final String DATETIME_PATTERN = "dd-MM-YYY HH:mm:ss"; protected static final int DATETIME_EPSILON = 1; public static void ensure() throws ClassNotFoundException { CustomGroupRegistry.registerCustomGroup((Class<? extends CustomGroup>) Group.anonymous().getClass()); CustomGroupRegistry.registerCustomGroup((Class<? extends CustomGroup>) Group.anyone().getClass()); CustomGroupRegistry.registerCustomGroup((Class<? extends CustomGroup>) Group.logged().getClass()); CustomGroupRegistry.registerCustomGroup((Class<? extends CustomGroup>) Group.nobody().getClass()); CustomGroupRegistry.registerCustomGroup((Class<? extends CustomGroup>) Class.forName(USER_GROUP)); CustomGroupRegistry.registerArgumentParser((Class<? extends ArgumentParser<?>>) Class.forName(USER_PARSER)); CustomGroupRegistry.registerArgumentParser(BooleanParser.class); CustomGroupRegistry.registerArgumentParser(StringParser.class); CustomGroupRegistry.registerArgumentParser(DateTimeParser.class); loadComponents(); } @BeforeClass @Atomic(mode = TxMode.WRITE) public static void initObjects() throws ClassNotFoundException { ensure(); } protected boolean equalDates(DateTime expected, DateTime result) { return equalDates(expected, result, DATETIME_EPSILON); } protected boolean equalDates(DateTime expected, DateTime result, int eps) { if (expected == null && result == null) { return true; } int diff = Seconds.secondsBetween(expected, result).getSeconds(); return Math.abs(diff) <= eps; } private static void loadComponents() { Stream.of(StaticPost.class, ListCategoryPosts.class, ViewPost.class).forEach(type -> { if (type.isAnnotationPresent(ComponentType.class)) { Component.register(type); } }); } }