Badgerati/Edison

View on GitHub
Edison.Engine/Repositories/Outputs/CsvOutputRepository.cs

Summary

Maintainability
A
0 mins
Test Coverage
/*
Edison is designed to be simpler and more performant unit/integration testing framework.

Copyright (c) 2015, Matthew Kelly (Badgerati)
Company: Cadaeic Studios
License: MIT (see LICENSE for details)
 */

using Edison.Engine.Core.Enums;
using Edison.Engine.Repositories.Interfaces;
using Edison.Framework;
using System;

namespace Edison.Engine.Repositories.Outputs
{
    public class CsvOutputRepository : IOutputRepository
    {

        private static Lazy<CsvOutputRepository> _lazy = new Lazy<CsvOutputRepository>(() => new CsvOutputRepository());
        public static IOutputRepository Instance
        {
            get { return _lazy.Value; }
        }


        public OutputType OutputType
        {
            get { return OutputType.Csv; }
        }

        public string ContentType
        {
            get { return "application/x-www-form-urlencoded"; }
        }

        public string OpenTag
        {
            get { return "\"Test\", \"State\", \"TimeTaken\", \"ErrorMessage\", \"StackTrace\", \"CreateDate\", \"Assembly\""; }
        }

        public string CloseTag
        {
            get { return string.Empty; }
        }

        public string Extension
        {
            get { return "csv"; }
        }


        public string ToString(TestResult result, bool withTrail)
        {
            return string.Format("\"{1}\", \"{2}\", \"{3}\", \"{4}\", \"{5}\", \"{6}\", \"{7}\"{0}",
                withTrail ? Environment.NewLine : string.Empty,
                RemoveNewLines(result.FullName),
                result.State,
                result.TimeTaken,
                RemoveNewLines(result.ErrorMessage),
                RemoveNewLines(result.StackTrace),
                result.CreateDateTimeString,
                result.Assembly);
        }


        private string RemoveNewLines(string value)
        {
            return value.Replace(Environment.NewLine, " ").Replace("\r", " ").Replace("\r\n", " ").Replace('"', '\'').Trim();
        }

    }
}