public void WordsService_IsMergePossible_WorksCorrectly( [Values(true, false)] bool cleanCache, [Values(true, false)] bool wordAlreadyTranslated) { // Arrange var langEn = new Language("English"); var langEsp = new Language("Spanish"); var langJp = new Language("Japanese"); var masterA = new MasterWord(); var masterB = new MasterWord(); new Word(masterA, "Hi orig", langEn); if (wordAlreadyTranslated) { new Word(masterB, "Hi duplicate", langEn); } var wordA2 = new Word(masterA, "Hola", langEsp); var wordB2 = new Word(masterB, "おはよう", langJp); MasterWordsService.Add(masterA); MasterWordsService.Add(masterB); if (cleanCache) { RefreshServicesAndClearCache(); wordA2 = WordsService.Get(wordA2.ID); wordB2 = WordsService.Get(wordB2.ID); } // Act var res = WordsService.IsMergePossible(wordA2.MasterWord, wordB2.MasterWord); // Assert Assert.AreEqual(wordAlreadyTranslated, !res, "If word is already translated via another language, merge should not be possible"); }