Example #1
0
 public TranslatorModel(string apiKey, string uiLang, ITranslateAPI api)
 {
     if (string.IsNullOrEmpty(apiKey) || string.IsNullOrEmpty(uiLang))
     {
         throw new TranslatorModelException("API key must be specified");
     }
     _api   = api;
     ApiKey = apiKey;
     UiLang = uiLang;
 }
        [TestCase("TestDataLangs.xml", "en", "английский")] // верно ли задан атрибут?
        public void LangByKey_ValidXmlResponse_WorksCorrectly(string testDataFile, string key, string expect)
        {
            ITranslateAPI fakeYandexAPI = Substitute.For <ITranslateAPI>();
            string        responseLangs = File.ReadAllText(testDataFile);

            fakeYandexAPI.GetLangs(Arg.Any <string>(), Arg.Any <string>()).Returns(responseLangs);

            ITranslatorModel model = new TranslatorModel("api_key", "ui", fakeYandexAPI);

            var l = model.LangByKey(key);

            Assert.AreEqual(l.Value, expect);
        }
        public void LangsProperty_ValidXmlResponse_ContainsSomething(string testDataFile)
        {
            ITranslateAPI fakeYandexAPI = Substitute.For <ITranslateAPI>();
            string        responseLangs = File.ReadAllText(testDataFile);

            fakeYandexAPI.GetLangs(Arg.Any <string>(), Arg.Any <string>()).Returns(responseLangs);

            ITranslatorModel model = new TranslatorModel("api_key", "ui", fakeYandexAPI);

            var langs = model.Langs;

            Assert.IsTrue(model.Langs.Count > 0);
        }
        public void LangsProperty_ErrorXmlResponse_ThrowsExWithErrorMessage(string testDataFile)
        {
            ITranslateAPI fakeYandexAPI = Substitute.For <ITranslateAPI>();
            XmlDocument   doc           = new XmlDocument();
            string        responseLangs = File.ReadAllText(testDataFile);

            doc.LoadXml(responseLangs);

            fakeYandexAPI.GetLangs(Arg.Any <string>(), Arg.Any <string>()).Returns(responseLangs);

            ITranslatorModel model = new TranslatorModel("api_key", "ui", fakeYandexAPI);

            Exception ex = Assert.Catch <Exception>(() => model.Langs.ToString());
            string    expectedMessage = doc.LastChild.Attributes["message"].Value;

            StringAssert.Contains(expectedMessage, ex.Message);
        }
        public void DetectLang_ValidXmlResponse_WorksCorrectly(
            string text,
            string testDataFile,
            string testDataLangsFile,
            string expect)
        {
            ITranslateAPI fakeYandexAPI  = Substitute.For <ITranslateAPI>();
            string        responseLangs  = File.ReadAllText(testDataLangsFile);
            string        responseDetect = File.ReadAllText(testDataFile);

            fakeYandexAPI.GetLangs(Arg.Any <string>(), Arg.Any <string>()).Returns(responseLangs);
            fakeYandexAPI.Detect(Arg.Any <string>(), text).Returns(responseDetect);

            ITranslatorModel model = new TranslatorModel("api_key", "ui", fakeYandexAPI);

            string actual = model.DetectLang(text).Key;

            Assert.AreEqual(expect, actual);
        }
        public void Translate_ValidXmlResponse_WorksCorrectly(
            string text,
            string sourceLang,
            string testDataFile,
            string testDetectDataFile,
            string testDataLangsFile,
            string expect)
        {
            ITranslateAPI fakeYandexAPI     = Substitute.For <ITranslateAPI>();
            string        responseLangs     = File.ReadAllText(testDataLangsFile);
            string        responseTranslate = File.ReadAllText(testDataFile);
            string        responseDetect    = File.ReadAllText(testDetectDataFile);

            fakeYandexAPI.GetLangs(Arg.Any <string>(), Arg.Any <string>()).Returns(responseLangs);
            fakeYandexAPI.Detect(Arg.Any <string>(), text).Returns(responseDetect);
            fakeYandexAPI.Translate(Arg.Any <string>(), text, sourceLang).Returns(responseTranslate);

            ITranslatorModel model = new TranslatorModel("api_key", "ui", fakeYandexAPI);

            model.SetTargetLang(model.LangByKey(sourceLang.Split('-')[1]));
            string actual = model.Translate(text);

            Assert.AreEqual(expect, actual, "Model.Translate() works.");
        }
        public void ctor_UiIsNullOrEmpty_Throws(string apiKey, string ui)
        {
            ITranslateAPI fakeYandexAPI = Substitute.For <ITranslateAPI>();

            Assert.Throws <TranslatorModelException>(() => new TranslatorModel(apiKey, ui, fakeYandexAPI));
        }