def run(self, input_files, metadata, output_files):  # pylint: disable=no-self-use
        """
        Main run function for the validation of FASTQ files. The pipeline uses FastQC

        Parameters
        ----------
        input_files : dict
            fastq : str
                List of file locations
        metadata : dict
            fastq : dict
                Required meta data
        output_files : dict
            report : str
                Location of the HTML

        Returns
        -------
        outputfiles : dict
            List of locations for the output index files
        output_metadata : dict
            Metadata about each of the files
        """

        output_files_generated = {}
        output_metadata = {}

        # FastQC Validation
        logger.info("Generating validation report for FastQ file")
        fastqc_handle = fastqcTool()
        bti, btm = fastqc_handle.run(
            input_files,
            metadata,
            {'report': output_files['report']}
        )

        try:
            output_files_generated['report'] = bti["report"]
            output_metadata['report'] = btm['report']

            tool_name = output_metadata['report'].meta_data['tool']
            output_metadata['report'].meta_data['tool_description'] = tool_name
            output_metadata['report'].meta_data['tool'] = "process_fastqc"
        except KeyError:
            logger.fatal("FastQ validation process failed")

        return (output_files_generated, output_metadata)
def test_fastqc_hic_1():
    """
    Test case to ensure that the GEM indexer works.
    """
    resource_path = os.path.join(os.path.dirname(__file__), "data/")

    input_files = {"fastq": resource_path + "tb.Human.SRR1658573_2.fastq.gz"}

    output_files = {
        "report": resource_path + "tb.Human.SRR1658573_2.report",
    }

    metadata = {
        "fastq": Metadata("data_rnaseq", "fastq", [], None,
                          {'assembly': 'test'})
    }

    fastqc_handle = fastqcTool()
    fastqc_handle.run(input_files, metadata, output_files)

    assert os.path.isfile(output_files["report"]) is True
    assert os.path.getsize(output_files["report"]) > 0