diff --git a/build.gradle b/build.gradle
index 4d5ec10ce206a9e321ac4a1a03ca1e6fb482d13a..dda89b4be92280ac152cae8ecbfc65f8c2cf91cb 100644
--- a/build.gradle
+++ b/build.gradle
@@ -22,6 +22,7 @@ repositories {
 }
 
 dependencies {
+	implementation 'org.springframework:spring-dao:2.0.8'
 	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
 	implementation 'org.springframework.boot:spring-boot-starter-web'
 	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
@@ -34,7 +35,13 @@ dependencies {
 	annotationProcessor 'org.projectlombok:lombok'
 	testImplementation 'org.springframework.boot:spring-boot-starter-test'
 	implementation 'org.springframework.boot:spring-boot-starter-validation'
-	implementation 'org.springframework:spring-dao:2.0.8'
+	// https://mvnrepository.com/artifact/org.springframework/spring-dao
+// https://mvnrepository.com/artifact/org.springframework/spring-dao
+	implementation group: 'org.springframework', name: 'spring-tx', version: '6.1.1'
+//	implementation 'org.springframework.dao.DataAccessException'
+//Thanks for using https://jar-download.com
+
+
 }
 
 tasks.named('bootBuildImage') {
diff --git a/src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java
index a5e79d4442d540f5dba67ee7f2b6217984044ebb..54693251bce45bfc4670ae09e4c0b1db1e935bd8 100644
--- a/src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java
+++ b/src/main/java/Team5/SmartTowns/Data/locationRepositoryJDBC.java
@@ -5,6 +5,8 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.stereotype.Repository;
 
+import javax.print.DocFlavor;
+import javax.sql.DataSource;
 import java.util.List;
 
 @Repository
@@ -26,6 +28,14 @@ public class locationRepositoryJDBC implements locationRepository {
                 rs.getInt("locationTrailID")
         );
     }
+    public String getCountOfEmployees() {
+        return jdbc.queryForObject("SELECT COUNT(*) FROM locations",String.class);
+    }
+
+    public List<Location> getAllLocation2(JdbcTemplate aJdbc){
+        String sql= "SELECT * FROM locations";
+        return aJdbc.query(sql, locationMapper);
+    }
     public List<Location> getAllLocation(){
         String sql= "SELECT * FROM locations";
         return jdbc.query(sql, locationMapper);
@@ -39,4 +49,10 @@ public class locationRepositoryJDBC implements locationRepository {
     }
 
 
+    public void setDataSource(DataSource dataSource) {
+        jdbc = new JdbcTemplate(dataSource);
+    }
+
+    public locationRepositoryJDBC() {
+    }
 }
diff --git a/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java b/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java
index 7a78647007b76e90228fadf65fed82d48ca8bdb9..4ef77b7d494ea868009d380e30921610d5a8e96a 100644
--- a/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java
+++ b/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java
@@ -1,24 +1,20 @@
 package Team5.SmartTowns;
 
-import Team5.SmartTowns.Data.Location;
-import Team5.SmartTowns.Data.Town;
-import Team5.SmartTowns.Data.TownRepository;
+import Team5.SmartTowns.Data.locationRepository;
 import Team5.SmartTowns.Data.locationRepositoryJDBC;
-import Team5.SmartTowns.Towns.TownController;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.data.jdbc.DataJdbcTest;
 import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowMapper;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
 import org.springframework.test.context.jdbc.Sql;
-import org.springframework.test.util.ReflectionTestUtils;
+import org.testng.Assert;
 
-import java.util.List;
+import javax.sql.DataSource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertSame;
@@ -26,8 +22,44 @@ import static org.mockito.Mockito.mock;
 
 @SpringBootTest
 @JdbcTest
+
 @Sql({"schema.sql", "data.sql"})
 class SmartTownsApplicationTests {
+@Autowired
+	private JdbcTemplate ajdbc;
+
+	@Test
+//	test2
+	public void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount1() {
+		DataSource dataSource = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2)
+				.addScript("classpath:jdbc/schema.sql")
+				.addScript("classpath:jdbc/test-data.sql")
+				.build();
+
+		locationRepositoryJDBC employeeDAO = new locationRepositoryJDBC();
+		employeeDAO.setDataSource(dataSource);
+
+		assertEquals(4, employeeDAO.getCountOfEmployees());}
+
+	@Test
+//	test 1
+	void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount() {
+		locationRepositoryJDBC employeeDAO = new locationRepositoryJDBC();
+		employeeDAO.setJdbcTemplate(ajdbc);
+		assertEquals(4, employeeDAO.getAllLocation().size());
+
+//		assertEquals(4, employeeDAO.getCountOfEmployees());
+	}
+//	@Test
+//	void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount() {
+//		EmployeeDAO employeeDAO = new EmployeeDAO();
+//		employeeDAO.setJdbcTemplate(jdbcTemplate);
+//
+//		assertEquals(4, employeeDAO.getCountOfEmployees());
+//	}
+
+
+
 
 //
 //	private static TownController townController;
@@ -36,37 +68,37 @@ class SmartTownsApplicationTests {
 //	private static Team5.SmartTowns.Data.Location location;
 //	@Mock
 //	private static JdbcTemplate jdbc;
-
-	@Autowired
-	private Team5.SmartTowns.Data.locationRepository locationRepo;
-	JdbcTemplate jdbc = Mockito.mock(JdbcTemplate.class);
+//
 //	@Autowired
-//	private static Team5.SmartTowns.Data.TownRepository townRepository;
+//	private Team5.SmartTowns.Data.locationRepository locationRepo;
+//	JdbcTemplate jdbc = Mockito.mock(JdbcTemplate.class);
+////	@Autowired
+////	private static Team5.SmartTowns.Data.TownRepository townRepository;
+////
+////
+////	private static Team5.SmartTowns.Data.Location town;
+////	private static RowMapper<Location> locationMapper;
 //
 //
-//	private static Team5.SmartTowns.Data.Location town;
-//	private static RowMapper<Location> locationMapper;
-
-
-	@BeforeAll
-	public void before() {
-//		MockitoAnnotations.initMocks(this);
-//		location = new Location();
-		locationRepo = mock(new locationRepositoryJDBC(jdbc));
-//		townController = new TownController();
-	}
 //	@BeforeAll
-//	public static void before(){}
-//		location = new Location();
-//}
-
-	@Test
-	void contextLoads() {
-	}
-
-	@Test
-	public void whenFilteringTownsByLocationsReturnOneTown() {
-		List<Location> allLocations = ( locationRepo.getAllLocation());
+//	public void before() {
+////		MockitoAnnotations.initMocks(this);
+////		location = new Location();
+//		locationRepo = mock(new locationRepositoryJDBC(jdbc));
+////		townController = new TownController();
+//	}
+////	@BeforeAll
+////	public static void before(){}
+////		location = new Location();
+////}
+//
+//	@Test
+//	void contextLoads() {
+//	}
+//
+//	@Test
+//	public void whenFilteringTownsByLocationsReturnOneTown() {
+//		List<Location> allLocations = ( locationRepo.getAllLocation());
 //		List<Town> allTowns = townRepository.getAllTowns();
 //		int allLocationNumber=allLocations.size();
 //		int allLocationNumberAfterFilter=0;
diff --git a/src/test/java/Team5/SmartTowns/Test3.java b/src/test/java/Team5/SmartTowns/Test3.java
new file mode 100644
index 0000000000000000000000000000000000000000..279caf31eb5e4c43358d28618505db32dfb19c51
--- /dev/null
+++ b/src/test/java/Team5/SmartTowns/Test3.java
@@ -0,0 +1,26 @@
+package Team5.SmartTowns;
+
+import Team5.SmartTowns.Data.locationRepositoryJDBC;
+import org.junit.jupiter.api.Test;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
+
+import javax.sql.DataSource;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class Test3 {
+
+    @Test
+//	test2
+    public void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount1() {
+        DataSource dataSource = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2)
+                .addScript("classpath:jdbc/schema.sql")
+                .addScript("classpath:jdbc/test-data.sql")
+                .build();
+
+        locationRepositoryJDBC employeeDAO = new locationRepositoryJDBC();
+        employeeDAO.setDataSource(dataSource);
+
+        assertEquals(4, employeeDAO.getCountOfEmployees());}
+}
diff --git a/src/test/java/Team5/SmartTowns/Test4.java b/src/test/java/Team5/SmartTowns/Test4.java
new file mode 100644
index 0000000000000000000000000000000000000000..0af9a3a7489d7c495d0901dc5a63af96e0d75462
--- /dev/null
+++ b/src/test/java/Team5/SmartTowns/Test4.java
@@ -0,0 +1,25 @@
+package Team5.SmartTowns;
+
+import Team5.SmartTowns.Data.locationRepositoryJDBC;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.test.util.ReflectionTestUtils;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class Test4 {
+    @Mock
+    JdbcTemplate jdbcTemplate;
+    @Test
+
+    public void whenMockJdbcTemplate_thenReturnCorrectEmployeeCount() {
+        locationRepositoryJDBC employeeDAO = new locationRepositoryJDBC();
+        ReflectionTestUtils.setField(employeeDAO, "jdbcTemplate", jdbcTemplate);
+        Mockito.when(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM locations", Integer.class))
+                .thenReturn(4);
+
+        assertEquals(4, employeeDAO.getCountOfEmployees());
+    }
+}
diff --git a/src/test/java/Team5/SmartTowns/Test5.java b/src/test/java/Team5/SmartTowns/Test5.java
new file mode 100644
index 0000000000000000000000000000000000000000..4c19c97d57c4e2004f6a51e850463d4dd1526203
--- /dev/null
+++ b/src/test/java/Team5/SmartTowns/Test5.java
@@ -0,0 +1,34 @@
+package Team5.SmartTowns;
+
+import Team5.SmartTowns.Data.locationRepositoryJDBC;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.test.context.jdbc.Sql;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@SpringBootTest
+@JdbcTest
+
+@Sql({"schema.sql", "data.sql"})
+public class Test5 {
+
+    @Autowired
+    private JdbcTemplate ajdbc;
+
+
+    @Test
+//	test 1
+    void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount() {
+        locationRepositoryJDBC employeeDAO = new locationRepositoryJDBC(ajdbc);
+//        employeeDAO.setJdbcTemplate(ajdbc);
+        assertEquals(4, employeeDAO.getAllLocation().size());
+
+    }
+
+
+
+}