public void WhenNullCustomers_ShouldNotWriteToProductionAndDebugFiles()
            {
                //---------------Arrange-------------------
                var fileName   = "file.csv";
                var fileSystem = Substitute.For <IFileSystem>();
                var writer     = new CompositeCsvFileWriter(fileSystem);

                //---------------Act----------------
                writer.Write(fileName, null);
                //---------------Assert ----------------------
                fileSystem.DidNotReceive().WriteLine(Arg.Any <string>(), Arg.Any <string>());
                fileSystem.DidNotReceive().WriteLine(Arg.Any <string>(), Arg.Any <string>());
            }
            public void WhenNullOrWhiteSpaceFilename_ShouldNotWriteToProductionAndDebugFiles(string fileName)
            {
                //---------------Arrange-------------------
                var fileSystem = Substitute.For <IFileSystem>();
                var writer     = new CompositeCsvFileWriter(fileSystem);
                var customers  = new CustomerTestDataFactory().CreateCustomers(5);

                //---------------Act----------------
                writer.Write(fileName, customers);
                //---------------Assert ----------------------
                fileSystem.DidNotReceive().WriteLine(Arg.Any <string>(), Arg.Any <string>());
                fileSystem.DidNotReceive().WriteLine(Arg.Any <string>(), Arg.Any <string>());
            }
            public void WhenNotNullCustomers_ShouldWriteToProductionAndDebugFiles()
            {
                //---------------Arrange-------------------
                var productionBatchSize = 15000;
                var debugBatchSize      = 20;
                var numberOfRecords     = 15003;
                var fileName            = "file.csv";
                var fileSystem          = Substitute.For <IFileSystem>();
                var writer    = new CompositeCsvFileWriter(fileSystem);
                var customers = new CustomerTestDataFactory().CreateCustomersWithDuplicates(numberOfRecords, 2);

                //---------------Act----------------
                writer.Write(fileName, customers);
                //---------------Assert ----------------------
                fileSystem.Received(productionBatchSize).WriteLine("1_file.csv", Arg.Any <string>());
                fileSystem.Received(2).WriteLine("2_file.csv", Arg.Any <string>());
                fileSystem.Received(debugBatchSize).WriteLine("1_debug_file.csv", Arg.Any <string>());
                fileSystem.Received(3).WriteLine("751_debug_file.csv", Arg.Any <string>());
            }