Hi,
Pls advice I am quite new in TDD, and lets say I have class below, there are also some private methods.
namespace EWSMailProcessor
{
public class AttachementsDownloader : IAttachementsDownloader
private readonly ExchangeService exchangeService;
private EmailMessage message;
public AttachementsDownloader(IKrukExchangeServiceFactory krukExchangeService)
this.exchangeService = krukExchangeService.CreateConnection();
}
public AttachementsDownloader()
//: this(new KrukExchangeServiceFactory())
{}
public IEnumerable<IEmail> DownloadEmailAttachment(SearchFilter searchFilter)
FindItemsResults<Item> findResults = this.exchangeService.FindItems(WellKnownFolderName.Inbox, searchFilter, new ItemView(100));
foreach (Item item in findResults.Items)
message = EmailMessage.Bind(this.exchangeService, item.Id, new PropertySet(BasePropertySet.IdOnly, ItemSchema.Attachments, ItemSchema.HasAttachments));
if (HasEmailAttachement)
FileAttachment fileAttachment = message.Attachments[0] as FileAttachment;
fileAttachment.Load();
Email email = CreateEmailModel(item, message, fileAttachment);
yield return email;
// MoveMessageToArchive(message);
private Email CreateEmailModel(Item item, EmailMessage message, FileAttachment fileAttachment)
Email email = new Email();
email.MessageSubject = item.Subject;
email.Attachment = new System.IO.MemoryStream(fileAttachment.Content);
email.EmailMessage = message;
return email;
private FolderId FindArchiveFolderId()
Folder rootfolder = Folder.Bind(this.exchangeService, WellKnownFolderName.MsgFolderRoot);
rootfolder.Load();
List<FolderId> folderIdList = (from folder in rootfolder.FindFolders(new FolderView(40)) where folder.DisplayName == "Archiv" select folder.Id).ToList();
return folderIdList[0];
private void MoveMessageToArchive(EmailMessage message)
message.Move(FindArchiveFolderId());
public bool HasEmailAttachement
get
return message.HasAttachments;