public static void CreateHourTypes()
		{
			HourTypeRepository repository = new HourTypeRepository(ConfigSettings.HoursDatabaseConnectionName);
			var hourTypes = repository.Read();
			if (!CheckHourType(hourTypes, "BOOK"))
			{
				repository.Create(new HourTypeEntity
				                  {
					                  LookupCode = "BOOK",
														Description = "Geboekt",
														DeletedDate = DateTime.MinValue
				                  });
			}
			if (!CheckHourType(hourTypes, "BUDG"))
			{
				repository.Create(new HourTypeEntity
				{
					LookupCode = "BUDG",
					Description = "Gebudgeteerd",
					DeletedDate = DateTime.MinValue
				});
			}
			if (!CheckHourType(hourTypes, "PLAN"))
			{
				repository.Create(new HourTypeEntity
				{
					LookupCode = "PLAN",
					Description = "Gepland",
					DeletedDate = DateTime.MinValue
				});
			}
		}
		public void TearDownRelatedData()
		{
			RoomHoursRepository repository = new RoomHoursRepository(ConfigSettings.MySqlDatabaseConnectionName);
			repository.ClearCollection();

			CostCentreRepository costCentreRepository = new CostCentreRepository(ConfigSettings.MySqlDatabaseConnectionName);
			costCentreRepository.ClearCollection();

			HourTypeRepository hourTypeRepository = new HourTypeRepository(ConfigSettings.MySqlDatabaseConnectionName);
			hourTypeRepository.ClearCollection();
		}
		public void ShouldCreateHourType()
		{
			// Arrange
			HourTypeRepository repository = new HourTypeRepository(ConfigSettings.MySqlDatabaseConnectionName);
			HourTypeEntity entity = HoursData.GetHourTypeForInsert();
			repository.ClearCollection();
			// Act
			entity = repository.Create(entity);

			// Assert
			Assert.IsNotNull(entity);
			Assert.AreNotEqual(0, entity.Id);
		}
		public void ShouldCreateHourTypes()
		{
			// Arrange
			HourTypeRepository repository = new HourTypeRepository(ConfigSettings.MySqlDatabaseConnectionName);
			List<HourTypeEntity> entities = HoursData.GetHourTypesForInsert();
			repository.ClearCollection();

			// Act
			entities = repository.Create(entities);

			// Assert
			Assert.IsNotNull(entities);
			Assert.AreEqual(2, entities.Count);
		}
		public void ShouldThrowArgumentNullExceptionOnConstructor()
		{
			// Act
			try
			{
				HourTypeRepository repository = new HourTypeRepository(null);
				Assert.Fail("This should not happen");
			}
			catch (Exception ex)
			{
				// Arrange
				Assert.IsInstanceOf<ArgumentNullException>(ex);
			}
		}
		public void SetUpRelatedData()
		{
			RoomHoursRepository repository = new RoomHoursRepository(ConfigSettings.MySqlDatabaseConnectionName);
			repository.ClearCollection();

			CostCentreRepository costCentreRepository = new CostCentreRepository(ConfigSettings.MySqlDatabaseConnectionName);
			CostCentreEntity costCentreEntity = HoursData.GetCostCentreForInsert();
			costCentreRepository.ClearCollection();
			_costCentre = costCentreRepository.Create(costCentreEntity);

			HourTypeRepository hourTypeRepository = new HourTypeRepository(ConfigSettings.MySqlDatabaseConnectionName);
			HourTypeEntity hourTypeEntity = HoursData.GetHourTypeForInsert();
			hourTypeRepository.ClearCollection();
			_hourType = hourTypeRepository.Create(hourTypeEntity);
		}
		public void ShouldReadHourTypeWithId()
		{
			// Arrange
			HourTypeRepository repository = new HourTypeRepository(ConfigSettings.MySqlDatabaseConnectionName);
			HourTypeEntity entity = HoursData.GetHourTypeForInsert();
			repository.ClearCollection();

			// Act
			entity = repository.Create(entity);

			// Act
			var actual = repository.Read(entity.Id);

			// Assert
			Assert.AreEqual(entity.Description, actual.Description);
		}
		public void ShouldUpdateHourType()
		{
			// Arrange
			HourTypeRepository repository = new HourTypeRepository(ConfigSettings.MySqlDatabaseConnectionName);
			HourTypeEntity entity = HoursData.GetHourTypeForInsert();
			repository.ClearCollection();
			entity = repository.Create(entity);
			entity.Description = "Unplanned";

			// Act
			HourTypeEntity actual = repository.Update(entity);

			// Assert
			Assert.AreEqual(entity.Description, actual.Description);
		}
		public void ShouldNotInsertDuplicateHourType()
		{
			// Arrange
			HourTypeRepository repository = new HourTypeRepository(ConfigSettings.MySqlDatabaseConnectionName);
			HourTypeEntity entity = HoursData.GetHourTypeForInsert();
			repository.ClearCollection();
			entity = repository.Create(entity);
			try
			{
			// Act
			  entity = repository.Create(entity);
				Assert.Fail("This should not happen");
			}
			catch (Exception ex)
			{
				// Arrange
				Assert.IsInstanceOf<MySqlException>(ex);
			}
			// Assert
		}
		public void ShouldDeleteHourType()
		{
			// Arrange
			HourTypeRepository repository = new HourTypeRepository(ConfigSettings.MySqlDatabaseConnectionName);
			HourTypeEntity entity = HoursData.GetHourTypeForInsert();
			repository.ClearCollection();
			entity = repository.Create(entity);

			// Act
			HourTypeEntity actual = repository.Delete(entity);

			// Assert
			Assert.AreNotEqual(actual.DeletedDate, DateTime.MinValue);
		}