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");
        }