package com.aventstack.extentreports;
import java.util.List;
import com.aventstack.extentreports.model.Author;
import com.aventstack.extentreports.model.Category;
import com.aventstack.extentreports.model.Test;
/**
* Allows sharing of aggregates/collections to be shared with the started reporter. A few examples
* of these collections include:
*
* <ul>
* <li>Category context - list of all categories and associated tests</li>
* <li>Exception context - list of all exceptions and associated tests</li>
* <li>Complete list of started tests</li>
* <li>System information</li>
* </ul>
*/
public interface ReportAggregatesListener {
/**
* Allows sharing the complete list of tests with the reporter
*
* @param testList list of all tests created by {@link ExtentReports}
*/
void setTestList(List<Test> testList);
/**
* Passes the complete list of logs to the reporter
*
* @param logs testrunner logs
*/
void setTestRunnerLogs(List<String> logs);
/**
* Allows sharing the complete list of category and associated tests with the reporter
*
* @param categoryContext collection containing categories and all associated tests
*/
void setCategoryContextInfo(TestAttributeTestContextProvider<Category> categoryContext);
/**
* Allows sharing the complete list of author and associated tests with the reporter
*
* @param authorContext collection containing author and all associated tests
*/
void setAuthorContextInfo(TestAttributeTestContextProvider<Author> authorContext);
/**
* Allows sharing the complete list of exceptions and associated tests with the reporter
*
* @param exceptionContext collection containing exception and all associated tests
*/
void setExceptionContextInfo(ExceptionTestContextImpl exceptionContext);
/**
* Passes all system information to the reporter
*
* @param systemAttributeContext system information
*/
void setSystemAttributeContext(SystemAttributeContext systemAttributeContext);
/**
* Passes the stats of the run session for all possible levels:
*
* <ul>
* <li>Features/Tests</li>
* <li>Scenarios/Logs</li>
* <li>Steps</li>
* </ul>
*
* @param sc {@link SessionStatusStats} represents stats of each hierarchical level of test/event
*/
void setStatusCount(SessionStatusStats sc);
}