public void CommitActionCommandCanExecute_SelectedDatabaseHasValue_ReturnsTrue()
        {
            var sut = new ChooseDatabaseViewModel(_eventAggregator, _stub.Out <IDatabaseManager>(), _stub.Out <IDatabaseConnector>())
            {
                SelectedItem = "someName"
            };

            Assert.That(sut.CommitActionCommand.CanExecute(null), Is.True);
        }
        public void CommitActionCommandCanExecute_SelectedDatabaseIsEmpty_ReturnsFalse()
        {
            var sut = new ChooseDatabaseViewModel(_eventAggregator, _stub.Out <IDatabaseManager>(), _stub.Out <IDatabaseConnector>())
            {
                SelectedItem = null
            };

            Assert.That(sut.CommitActionCommand.CanExecute(null), Is.False);
        }
        public void Constructor_DatabaseManagerFindsNoPokerTellDatabases_AvailableDatabasesIsEmpty()
        {
            _databaseManagerMock
            .Setup(dm => dm.GetAllPokerTellDatabases())
            .Returns(Enumerable.Empty <string>);

            var sut = new ChooseDatabaseViewModel(_eventAggregator, _databaseManagerMock.Object, _stub.Out <IDatabaseConnector>());

            Assert.That(sut.AvailableItems.Count, Is.EqualTo(0));
        }
        public void Constructor_DatabaseManagerFindsOnePokerTellDatabase_AvailableDatabasesContainsIt()
        {
            const string dataBaseName = "someDatabase";

            _databaseManagerMock
            .Setup(dm => dm.GetAllPokerTellDatabases())
            .Returns(new List <string> {
                dataBaseName
            });

            var sut = new ChooseDatabaseViewModel(_eventAggregator, _databaseManagerMock.Object, _stub.Out <IDatabaseConnector>());

            Assert.That(sut.AvailableItems.First(), Is.EqualTo(dataBaseName));
        }
        public void DetermineSelectedItem_DatabaseManagerFindsOnePokerTellDatabaseThatIsNotUsed_SelectedDatabaseIsSetToThatDatabase()
        {
            const string notInUseDatabase = "someDatabase";

            _databaseManagerMock
            .Setup(dm => dm.GetAllPokerTellDatabases())
            .Returns(new List <string> {
                notInUseDatabase
            });

            var sut = new ChooseDatabaseViewModel(_eventAggregator, _databaseManagerMock.Object, _stub.Out <IDatabaseConnector>())
                      .DetermineSelectedItem();

            Assert.That(sut.SelectedItem, Is.EqualTo(notInUseDatabase));
        }
        public void CommitActionExecute_DatabaseSelected_CallsDatabaseConnectorConnectToDatabase()
        {
            var databaseConnectorMock = new Mock <IDatabaseConnector>();

            databaseConnectorMock
            .Setup(dc => dc.InitializeFromSettings())
            .Returns(databaseConnectorMock.Object);

            var sut = new ChooseDatabaseViewModel(_eventAggregator, _databaseManagerMock.Object, databaseConnectorMock.Object)
            {
                SelectedItem = "someDatabase"
            };

            sut.CommitActionCommand.Execute(null);

            databaseConnectorMock.Verify(dc => dc.ConnectToDatabase());
        }
        public void DetermineSelectedItem_TwoDatabasesInSettingsOneIsCurrent_SelectedDatabaseIsSetToCurrentDatabaseName()
        {
            const string dataBaseName  = "someDatabase";
            const string databaseInUse = "databaseInUse";

            _databaseManagerMock
            .Setup(dm => dm.GetAllPokerTellDatabases())
            .Returns(new List <string> {
                dataBaseName, databaseInUse
            });
            _databaseManagerMock
            .Setup(dm => dm.GetDatabaseInUse())
            .Returns(databaseInUse);

            var sut = new ChooseDatabaseViewModel(_eventAggregator, _databaseManagerMock.Object, _stub.Out <IDatabaseConnector>())
                      .DetermineSelectedItem();

            Assert.That(sut.SelectedItem, Is.EqualTo(databaseInUse));
        }
        public void CommitActionCommandExecute_DatabaseSelected_CallsDatabaseManagerChooseDatabaseWithSelectedItem()
        {
            const string dataBaseName = "someDatabase";

            var databaseConnectorStub = new Mock <IDatabaseConnector>();

            databaseConnectorStub
            .Setup(dc => dc.InitializeFromSettings())
            .Returns(databaseConnectorStub.Object);

            var sut = new ChooseDatabaseViewModel(_eventAggregator,
                                                  _databaseManagerMock.Object,
                                                  databaseConnectorStub.Object)
            {
                SelectedItem = dataBaseName
            };

            sut.CommitActionCommand.Execute(null);

            _databaseManagerMock.Verify(dm => dm.ChooseDatabase(dataBaseName));
        }
        public void CommitActionCommandExecute_DatabaseSelected_PublishesInfoMessage()
        {
            var databaseConnectorStub = new Mock <IDatabaseConnector>();

            databaseConnectorStub
            .Setup(dc => dc.InitializeFromSettings())
            .Returns(databaseConnectorStub.Object);

            bool infoWasPublished = false;

            _eventAggregator.GetEvent <UserMessageEvent>().Subscribe(
                arg => infoWasPublished = arg.MessageType == UserMessageTypes.Info);

            var sut = new ChooseDatabaseViewModel(_eventAggregator,
                                                  _databaseManagerMock.Object,
                                                  databaseConnectorStub.Object)
            {
                SelectedItem = "someDatabase"
            };

            sut.CommitActionCommand.Execute(null);

            Assert.That(infoWasPublished, Is.True);
        }