public void TestMust_AddUserTextToChat()
        {
            //arrange
            var db = new MockSQLite();
            var mockView = new MockDictionaryChatView();
            var mocklanguageManager = new MockLanguageManager(db);
            var chatHistoryManager = new MockChatHistoryManager(db);
            var mockChatManager = new MockChatManager(db);
            DictionaryChatPresenter presenter = new DictionaryChatPresenter(mockView, db, 1, mockChatManager, mocklanguageManager, chatHistoryManager);
            presenter.InitDirection();

            //act
            string userText = "test";
            string answerText = "тест";
            presenter.UserAddNewTextEvent(userText);

            //assert
            Assert.AreEqual(2, mockView.ListBubbles.Count);
            //Направление с английского на русский
            Assert.AreEqual(userText, mockView.ListBubbles[0].TextTo);
            Assert.AreEqual(answerText, mockView.ListBubbles[0].TextFrom);
            //Направление с русского на английский
            Assert.AreEqual(answerText, mockView.ListBubbles[1].TextTo);
            Assert.AreEqual(userText, mockView.ListBubbles[1].TextFrom);
        }
 public void TestMust_Get2ChatsForLastDays()
 {
     var db = new MockSQLite();
     var languageManager = new LanguageManager(db);
     var chatHistoryManager = new ChatHistoryManager(db);
     var chatManager = new ChatManager(db, languageManager, chatHistoryManager);
     var list = chatManager.GetChatsForLastDays(5);
     Assert.IsTrue(list.Count == 2);
 }
        public void TestMust_GetListRecentDirections()
        {
            //arrange
            var db = new MockSQLite();
            var languageManager = new LanguageManager(db);
            var mockView = new MockDirectionsView();
            var chatHistoryManager = new ChatHistoryManager(db);
            var presenter = new DirectionsPresenter(mockView, new ChatManager(db, languageManager, chatHistoryManager), languageManager);

            //act
            presenter.SelectedRecentLanguagesEvent();

            //assert
            Assert.AreEqual(2, mockView.listDirectionsRecent.Count);
            Assert.AreEqual(1, mockView.listDirectionsRecent[0].ChatId);//порядок важен
            Assert.AreEqual(2, mockView.listDirectionsRecent[1].ChatId);//порядок важен
        }
        public void TestMust_GetListAllDirections()
        {
            //arrange
            var db = new MockSQLite();
            var languageManager = new LanguageManager(db);
            var mockView = new MockDirectionsView();
            var chatHistoryManager = new ChatHistoryManager(db);
            var presenter = new DirectionsPresenter(mockView, new ChatManager(db, languageManager, chatHistoryManager), languageManager);

            //act
            presenter.SelectedAllLanguagesEvent("en");

            //assert
            Assert.GreaterOrEqual(6, mockView.listLanguages.Count, "Количество элементов меньше ожидаемого");
            Assert.IsTrue(mockView.listLanguages.Exists(i => i.NameLocal == "Русский"), "В коллекции нет Русского языка, а должен быть");
            Assert.IsTrue(mockView.listLanguages.Exists(i => i.NameLocal == "English"), "В коллекции нет Английского языка, а должен быть");
        }
        public void TestMust_FoundCurrentLocaleLanguageAtBottomList()
        {
            //arrange
            var db = new MockSQLite();
            var languageManager = new LanguageManager(db);
            var mockView = new MockDirectionsView();
            var chatHistoryManager = new ChatHistoryManager(db);
            var presenter = new DirectionsPresenter(mockView, new ChatManager(db, languageManager, chatHistoryManager), languageManager);
            string localeLanguage = "ru";

            //act
            presenter.SelectedAllLanguagesEvent(localeLanguage);

            //assert
            Assert.GreaterOrEqual(6, mockView.listLanguages.Count, "Количество элементов меньше ожидаемого");
            Assert.IsTrue(mockView.listLanguages[mockView.listLanguages.Count - 1].NameShort == localeLanguage, "Русский язык должен быть в самом низу списка поскольку это язык локалии");
        }