public void FindByUsername_ThrowError_InputIsNull(string username)
    {
        ExtendDatabase db = new ExtendDatabase(new Person(1, "Ivcho_55"), new Person(2, "Ivcho_1255"));

        Assert.That(() => db.FindByUsername(username),
                    Throws.ArgumentNullException);
    }
    public void FindByUsername_ThrowExeption_UserNotFound(string username)
    {
        ExtendDatabase db = new ExtendDatabase(new Person(1, "IvoIvo"), new Person(2, "Kondio"), new Person(3, "KrasoTapaka"));

        Assert.That(() => db.FindByUsername(username),
                    Throws.InvalidOperationException
                    .With
                    .Message
                    .EqualTo($"User with Username {username} don't exists!"));
    }
        public void FindByUserName_Casesensitive_ThrowException(long firstId, string firstUsername, long secondId, string secondUsername, string searchedUserName)
        {
            // Arrange
            var firstPerson  = new Person(firstId, firstUsername);
            var secondPerson = new Person(secondId, secondUsername);

            // Act
            ExtendDatabase db = new ExtendDatabase(new List <Person>()
            {
                firstPerson, secondPerson
            });

            // Assert
            Assert.Throws <InvalidOperationException>(() => db.FindByUsername(searchedUserName), $"Find by UserName isn't case sensitive!");
        }
        public void FindByUserName_NullIDInDB_ThrowException(long firstId, string firstUsername, long secondId, string secondUsername)
        {
            // Arrange
            var firstPerson  = new Person(firstId, firstUsername);
            var secondPerson = new Person(secondId, secondUsername);

            // Act
            ExtendDatabase db = new ExtendDatabase(new List <Person>()
            {
                firstPerson, secondPerson
            });

            // Assert
            Assert.Throws <ArgumentNullException>(() => db.FindByUsername(null), $"Searched null in database");
        }
        public void FindByUserName_PersonNotInDB_ThrowException(long firstId, string firstUsername, long secondId, string secondUsername, long thirdId, string thirdUsername)
        {
            // Arrange
            var firstPerson  = new Person(firstId, firstUsername);
            var secondPerson = new Person(secondId, secondUsername);
            var thirdPerson  = new Person(thirdId, thirdUsername);

            // Act
            ExtendDatabase db = new ExtendDatabase(new List <Person>()
            {
                firstPerson, secondPerson
            });

            // Assert
            Assert.Throws <InvalidOperationException>(() => db.FindByUsername(thirdUsername), $"Searched person doesn't exist in database");
        }
        public void FindByUserName(long firstId, string firstUsername, long secondId, string secondUsername, long thirdId, string thirdUsername)
        {
            // Arrange
            var firstPerson  = new Person(firstId, firstUsername);
            var secondPerson = new Person(secondId, secondUsername);
            var thirdPerson  = new Person(thirdId, thirdUsername);

            // Act
            ExtendDatabase db = new ExtendDatabase(new List <Person>()
            {
                firstPerson, secondPerson, thirdPerson
            });

            // Assert
            Assert.AreEqual(thirdPerson, db.FindByUsername(thirdUsername), "Find by userName do not work !");
        }
    public void FindByUsername(string username)
    {
        ExtendDatabase db = new ExtendDatabase(new Person(1, "Ivcho_55"), new Person(2, "Ivcho_1255"), new Person(3, "Ivcho_55325"));

        Assert.That(db.FindByUsername(username).Username, Is.EquivalentTo(username));
    }