/** * Copyright (C) 2018-2019 Christian Pierre MOMON * * This file is part of (April) Hebdobot. * * Hebdobot is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Hebdobot is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Hebdobot. If not, see */ package org.april.hebdobot.reviewstats; import java.io.File; import java.time.LocalDateTime; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.BasicConfigurator; import org.april.hebdobot.bot.stats.ReviewData; import org.april.hebdobot.bot.stats.ReviewDatas; import org.april.hebdobot.bot.stats.ReviewDatasFile; import org.april.hebdobot.bot.stats.ReviewStatsReporter; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * The Class ReviewStatsTest. */ public class ReviewStatsTest { private static final Logger logger = LoggerFactory.getLogger(ReviewStatsTest.class); /** * Test load. * * @throws Exception * the exception */ @Test public void testLoad() throws Exception { System.out.println("================"); ReviewDatas datas = ReviewDatasFile.load(new File("test/org/april/hebdobot/reviewstats/reviewstats.csv")); for (ReviewData data : datas) { System.out.println(data.toString()); } } /** * Test report duration. * * @throws Exception * the exception */ @Test public void testReportDuration() throws Exception { System.out.println("================"); ReviewDatas datas = ReviewDatasFile.load(new File("test/org/april/hebdobot/reviewstats/reviewstats.csv")); datas.clean(); logger.debug("File loaded."); ReviewData currentReviewData = new ReviewData(LocalDateTime.now(), 12, 17L); datas.add(currentReviewData); String report = ReviewStatsReporter.reportDuration(datas, currentReviewData.getDuration()); logger.debug("Report=" + report); Assert.assertTrue(StringUtils.contains(report, "Statistiques sur la durée de la revue (17 min) : position 3 (min.=14 min, moy.=17,2 min, max.=20 min), fréquence 7/14 (50 %)")); } /** * Test report new max user count 01. * * @throws Exception * the exception */ @Test public void testReportNewUserCountRecord01() throws Exception { System.out.println("================"); ReviewDatas datas = ReviewDatasFile.load(new File("test/org/april/hebdobot/reviewstats/reviewstats.csv")); datas.clean(); logger.debug("File loaded."); ReviewData currentReview = new ReviewData(LocalDateTime.now(), 12, 17L); datas.add(currentReview); String report = ReviewStatsReporter.reportNewUserCountRecord(datas); logger.debug("Report=" + report); Assert.assertTrue(StringUtils.startsWith(report, "Le dernier record de")); } /** * Test report new max user count 02. * * @throws Exception * the exception */ @Test public void testReportNewUserCountRecord02() throws Exception { System.out.println("================"); ReviewDatas datas = ReviewDatasFile.load(new File("test/org/april/hebdobot/reviewstats/reviewstats.csv")); datas.clean(); logger.debug("File loaded."); ReviewData currentReview = new ReviewData(LocalDateTime.now(), 42000, 17L); datas.add(currentReview); String report = ReviewStatsReporter.reportNewUserCountRecord(datas); logger.debug("Report=" + report); Assert.assertTrue(StringUtils.startsWith(report, "*\\o/* Nouveau record de participation")); } /** * Test report user count. * * @throws Exception * the exception */ @Test public void testReportUserCount() throws Exception { System.out.println("================"); ReviewDatas datas = ReviewDatasFile.load(new File("test/org/april/hebdobot/reviewstats/reviewstats.csv")); datas.clean(); logger.debug("File loaded."); ReviewData currentReview = new ReviewData(LocalDateTime.now(), 12, 17L); datas.add(currentReview); String report = ReviewStatsReporter.reportUserCount(datas, currentReview.getUserCount()); logger.debug("Report=" + report); Assert.assertEquals(report, "Statistiques sur la participation à la revue (12 personnes) : position 3 (min.=2, moy.=6,6, max.=14), fréquence 4/312 (1 %)"); } /** * Inits the. */ @BeforeClass public static void init() { BasicConfigurator.configure(); logger.info("Basic log configuration done."); } }