public void CreateTranslate_should_save_translate() { var dto = TranslateFakeData.GetFakedCreatedTranslate(); var repository = Substitute.For <ITranslationRepository>(); var sut = new TranslationService(repository); sut.CreateTranslate(dto); var language = new LanguageBuilder().WithAbbrevation(dto.LanguageAbbr).Build(); var translations = new List <Domain.Entities.Translation>() { new Domain.Entities.Translation(language, dto.Translation) }; var phraseType = new PhraseTypeBuilder().WithName(dto.PhraseType).Build(); var phrase = new PhraseBuilder().WithId(dto.PhraseId).WithPhraseType(phraseType).Build(); var expectedTranslate = new TranslateBuilder() .WithPhrase(phrase) .WithTranslations(translations).Build(); repository.Received(1).Save(ArgExt.Compare(expectedTranslate, new TranslatorEqualityComparer())); }