public void GetAll_ReturnsHobbits()
        {
            HobbitDataManager dataManager = new HobbitDataManager();
            dataManager.Insert(_testHobbit);

            List<Hobbit> hobbits = dataManager.GetAll().ToList();

            Assert.NotNull(hobbits);
            Assert.True(hobbits.Count > 0);
        }
        public void GetAll_ReturnsData()
        {
            string[]      hobbitNames = new string[] { FIRST_HOBBIT_NAME, SECOND_HOBBIT_NAME };
            IDbConnection database    = CreateHobbitDatabase(hobbitNames);

            HobbitDataManager manager = new HobbitDataManager(database);

            IEnumerable <Hobbit> hobbits = manager.GetAll();

            Assert.Equal(2, hobbits.Count());
        }
        public void Insert_ReturnsHobbit()
        {
            Hobbit testHobbit = new Hobbit("Insert hobbit", FAMILY_NAME, BIRTH_YEAR, DEATH_YEAR, ID);

            HobbitDataManager dataManager = new HobbitDataManager();

            Hobbit hobbit = dataManager.Insert(testHobbit);

            Assert.NotNull(hobbit);
            Assert.True(CompareHobbits(testHobbit, hobbit));
        }
        public void TryGet_ReturnsFalse_ForUnknownHobbit()
        {
            Hobbit testHobbit = new Hobbit("TryGet_ReturnsFalse hobbit", FAMILY_NAME, BIRTH_YEAR, DEATH_YEAR, ID);

            HobbitDataManager dataManager = new HobbitDataManager();

            long hobbitId;
            bool foundHobbit = dataManager.TryGet(testHobbit, out hobbitId);

            Assert.False(foundHobbit);
        }
        public void TryGet_ReturnsTrue_ForKnownHobbit()
        {
            Hobbit testHobbit = new Hobbit("TryGet_ReturnsTrue hobbit", FAMILY_NAME, BIRTH_YEAR, DEATH_YEAR, ID);

            HobbitDataManager dataManager = new HobbitDataManager();

            Hobbit insertedHobbit = dataManager.Insert(testHobbit);

            long hobbitId;
            bool foundHobbit = dataManager.TryGet(insertedHobbit, out hobbitId);

            Assert.True(foundHobbit);
            Assert.True(hobbitId != default(long));  // SQLite ids/rownums start at 1
        }
        public void Insert_ReturnsHobbit_WhenUsingDefaultValues(
            string name,
            string familyName,
            int birthYear,
            int deathYear,
            long id)
        {
            Hobbit testHobbit = new Hobbit("Insert " + name, familyName, birthYear, deathYear, id);

            HobbitDataManager dataManager = new HobbitDataManager();

            Hobbit hobbit = dataManager.Insert(testHobbit);

            Assert.NotNull(hobbit);
            Assert.True(CompareHobbits(testHobbit, hobbit));
        }
        public void Delete_ReturnsFalse_WhenZeroDatabaseRowsAffected()
        {
            Mock<IDbDataParameter> mockParameter = new Mock<IDbDataParameter>();
            Mock<IDataParameterCollection> mockParameterCollection = new Mock<IDataParameterCollection>();
            Mock<IDbCommand> mockCommand = new Mock<IDbCommand>();
            mockCommand.Setup(cmd => cmd.ExecuteNonQuery()).Returns(0);
            mockCommand.Setup(cmd => cmd.CreateParameter()).Returns(mockParameter.Object);
            mockCommand.Setup(cmd => cmd.Parameters).Returns(mockParameterCollection.Object);
            Mock<IDbConnection> mockConnection = new Mock<IDbConnection>();
            mockConnection.Setup(conn => conn.CreateCommand()).Returns(mockCommand.Object);

            HobbitDataManager dataManager = new HobbitDataManager(mockConnection.Object);

            bool deleted = dataManager.Delete(ID);

            Assert.False(deleted);
            mockCommand.Verify(cmd => cmd.ExecuteNonQuery(), Times.Once);
        }
        public void Update_ReturnsNull_WhenZeroDatabaseRowsAffected()
        {
            Mock<IDbDataParameter> mockParameter = new Mock<IDbDataParameter>();
            Mock<IDataParameterCollection> mockParameterCollection = new Mock<IDataParameterCollection>();
            Mock<IDbCommand> mockCommand = new Mock<IDbCommand>();
            mockCommand.Setup(cmd => cmd.ExecuteNonQuery()).Returns(0);
            mockCommand.Setup(cmd => cmd.CreateParameter()).Returns(mockParameter.Object);
            mockCommand.Setup(cmd => cmd.Parameters).Returns(mockParameterCollection.Object);
            Mock<IDbConnection> mockConnection = new Mock<IDbConnection>();
            mockConnection.Setup(conn => conn.CreateCommand()).Returns(mockCommand.Object);

            HobbitDataManager dataManager = new HobbitDataManager(mockConnection.Object);

            Hobbit hobbit = dataManager.Update(_testHobbit, ID);

            Assert.Null(hobbit);
            mockCommand.Verify(cmd => cmd.ExecuteNonQuery(), Times.Once);
        }
        public void Insert_ReturnsNull_WhenNameIsNull()
        {
            Hobbit testHobbit = new Hobbit(null, FAMILY_NAME, BIRTH_YEAR, DEATH_YEAR, ID);

            HobbitDataManager dataManager = new HobbitDataManager();

            Hobbit hobbit = dataManager.Insert(testHobbit);

            Assert.Null(hobbit);
        }
        public void Delete_ReturnsFalse_ForUnknownHobbit()
        {
            HobbitDataManager dataManager = new HobbitDataManager();

            Random prng = new Random();
            bool idExists = true;
            long someId = 0;
            while (idExists)
            {
                someId = Convert.ToInt64(prng.Next());
                Hobbit someHobbit;
                idExists = dataManager.TryGet(someId, out someHobbit);
            }

            bool deleted = dataManager.Delete(someId);

            Assert.False(deleted);
        }
        public void Delete_ReturnsTrue_ForKnownHobbit()
        {
            Hobbit testHobbit = new Hobbit("Deletable Hobbit", FAMILY_NAME, BIRTH_YEAR, DEATH_YEAR, ID);

            HobbitDataManager dataManager = new HobbitDataManager();

            Hobbit insertedHobbit = dataManager.Insert(testHobbit);
            bool deleted = dataManager.Delete(insertedHobbit.Id);
            Hobbit hobbit;
            bool foundHobbit = dataManager.TryGet(insertedHobbit.Id, out hobbit);

            Assert.True(deleted);
            Assert.False(foundHobbit);
        }
        public void Update_ReturnsHobbit_WhenUsingDefaultValues(
            string name,
            string familyName,
            int birthYear,
            int deathYear,
            long id)
        {
            Hobbit testHobbit = new Hobbit("Update " + name, familyName, birthYear, deathYear, id);

            HobbitDataManager dataManager = new HobbitDataManager();
            Hobbit insertedHobbit = dataManager.Insert(testHobbit);

            Hobbit updatedHobbit = new Hobbit(
                           "Updated and updated " + insertedHobbit.Name,
                           insertedHobbit.FamilyName,
                           insertedHobbit.BirthYear,
                           insertedHobbit.DeathYear,
                           insertedHobbit.Id);
            Hobbit hobbit = dataManager.Update(updatedHobbit, updatedHobbit.Id);

            Assert.NotNull(hobbit);
            Assert.True(CompareHobbits(updatedHobbit, hobbit));
        }
        public void Update_ReturnsUpdatedHobbit()
        {
            Hobbit testHobbit = new Hobbit("Insert hobbit", FAMILY_NAME, BIRTH_YEAR, DEATH_YEAR, ID);

            HobbitDataManager dataManager = new HobbitDataManager();
            Hobbit insertedHobbit = dataManager.Insert(testHobbit);

            Hobbit updatedHobbit = new Hobbit(
                "Inserted and updated" + insertedHobbit.Name,
                insertedHobbit.FamilyName,
                insertedHobbit.BirthYear,
                insertedHobbit.DeathYear,
                insertedHobbit.Id);
            Hobbit hobbit = dataManager.Update(updatedHobbit, updatedHobbit.Id);

            Assert.True(CompareHobbits(updatedHobbit, hobbit));
        }