+ * CoomandLineRunner: Spring Boot automatically runs the run method once and only once
+ * after the application context has been loaded.
+ */
+@Transactional
+@ConditionalOnProperty(
+ prefix = "command.line.runner",
+ value = "enabled",
+ havingValue = "true",
+ matchIfMissing = true
+)
+@Component
+public class SeedData
+ implements CommandLineRunner
+{
+ /**
+ * Connects the Role Service to this process
+ */
+ @Autowired
+ RoleService roleService;
+
+ /**
+ * Connects the user service to this process
+ */
+ @Autowired
+ UserService userService;
+
+ /**
+ * Generates test, seed data for our application
+ * First a set of known data is seeded into our database.
+ * Second a random set of data using Java Faker is seeded into our database.
+ * Note this process does not remove data from the database. So if data exists in the database
+ * prior to running this process, that data remains in the database.
+ *
+ * @param args The parameter is required by the parent interface but is not used in this process.
+ */
+ @Transactional
+ @Override
+ public void run(String[] args) throws
+ Exception
+ {
+ userService.deleteAll();
+ roleService.deleteAll();
+ Role r1 = new Role("admin");
+ Role r2 = new Role("user");
+ Role r3 = new Role("data");
+
+ r1 = roleService.save(r1);
+ r2 = roleService.save(r2);
+ r3 = roleService.save(r3);
+
+ // admin, data, user
+ User u1 = new User("admin",
+ "password",
+ "admin@lambdaschool.local");
+ u1.getRoles()
+ .add(new UserRoles(u1,
+ r1));
+ u1.getRoles()
+ .add(new UserRoles(u1,
+ r2));
+ u1.getRoles()
+ .add(new UserRoles(u1,
+ r3));
+ u1.getUseremails()
+ .add(new Useremail(u1,
+ "admin@email.local"));
+ u1.getUseremails()
+ .add(new Useremail(u1,
+ "admin@mymail.local"));
+
+ userService.save(u1);
+
+ // data, user
+ User u2 = new User("cinnamon",
+ "1234567",
+ "cinnamon@lambdaschool.local");
+ u2.getRoles()
+ .add(new UserRoles(u2,
+ r2));
+ u2.getRoles()
+ .add(new UserRoles(u2,
+ r3));
+ u2.getUseremails()
+ .add(new Useremail(u2,
+ "cinnamon@mymail.local"));
+ u2.getUseremails()
+ .add(new Useremail(u2,
+ "hops@mymail.local"));
+ u2.getUseremails()
+ .add(new Useremail(u2,
+ "bunny@email.local"));
+ userService.save(u2);
+
+ // user
+ User u3 = new User("barnbarn",
+ "ILuvM4th!",
+ "barnbarn@lambdaschool.local");
+ u3.getRoles()
+ .add(new UserRoles(u3,
+ r2));
+ u3.getUseremails()
+ .add(new Useremail(u3,
+ "barnbarn@email.local"));
+ userService.save(u3);
+
+ User u4 = new User("puttat",
+ "password",
+ "puttat@school.lambda");
+ u4.getRoles()
+ .add(new UserRoles(u4,
+ r2));
+ userService.save(u4);
+
+ User u5 = new User("misskitty",
+ "password",
+ "misskitty@school.lambda");
+ u5.getRoles()
+ .add(new UserRoles(u5,
+ r2));
+ userService.save(u5);
+
+ if (false)
+ {
+ // using JavaFaker create a bunch of regular users
+ // https://www.baeldung.com/java-faker
+ // https://www.baeldung.com/regular-expressions-java
+
+ FakeValuesService fakeValuesService = new FakeValuesService(new Locale("en-US"),
+ new RandomService());
+ Faker nameFaker = new Faker(new Locale("en-US"));
+
+ for (int i = 0; i < 25; i++)
+ {
+ new User();
+ User fakeUser;
+
+ fakeUser = new User(nameFaker.name()
+ .username(),
+ "password",
+ nameFaker.internet()
+ .emailAddress());
+ fakeUser.getRoles()
+ .add(new UserRoles(fakeUser,
+ r2));
+ fakeUser.getUseremails()
+ .add(new Useremail(fakeUser,
+ fakeValuesService.bothify("????##@gmail.com")));
+ userService.save(fakeUser);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/usermodel-initial/src/test/java/com/lambdaschool/usermodel/controllers/UserControllerUnitTestNoDB.java b/usermodel-initial/src/test/java/com/lambdaschool/usermodel/controllers/UserControllerUnitTestNoDB.java
new file mode 100644
index 0000000..e8b0663
--- /dev/null
+++ b/usermodel-initial/src/test/java/com/lambdaschool/usermodel/controllers/UserControllerUnitTestNoDB.java
@@ -0,0 +1,60 @@
+package com.lambdaschool.usermodel.controllers;
+
+import com.lambdaschool.usermodel.UserModelApplicationTesting;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import static org.junit.Assert.*;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = UserModelApplicationTesting.class, properties = {"command.line.runner.enabled=false"})
+public class UserControllerUnitTestNoDB {
+
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public void listAllUsers() {
+ }
+
+ @Test
+ public void getUserById() {
+ }
+
+ @Test
+ public void getUserByName() {
+ }
+
+ @Test
+ public void getUserLikeName() {
+ }
+
+ @Test
+ public void addNewUser() {
+ }
+
+ @Test
+ public void updateFullUser() {
+ }
+
+ @Test
+ public void updateUser() {
+ }
+
+ @Test
+ public void deleteUserById() {
+ }
+
+ @Test
+ public void getCurrentUserInfo() {
+ }
+}
\ No newline at end of file
diff --git a/usermodel-initial/src/test/java/com/lambdaschool/usermodel/services/UserServiceImplUnitTestNoDB.java b/usermodel-initial/src/test/java/com/lambdaschool/usermodel/services/UserServiceImplUnitTestNoDB.java
new file mode 100644
index 0000000..3621d95
--- /dev/null
+++ b/usermodel-initial/src/test/java/com/lambdaschool/usermodel/services/UserServiceImplUnitTestNoDB.java
@@ -0,0 +1,186 @@
+package com.lambdaschool.usermodel.services;
+
+import com.github.javafaker.Faker;
+import com.github.javafaker.service.FakeValuesService;
+import com.github.javafaker.service.RandomService;
+import com.lambdaschool.usermodel.UserModelApplicationTesting;
+import com.lambdaschool.usermodel.models.Role;
+import com.lambdaschool.usermodel.models.User;
+import com.lambdaschool.usermodel.models.UserRoles;
+import com.lambdaschool.usermodel.models.Useremail;
+import com.lambdaschool.usermodel.repository.UserRepository;
+import com.lambdaschool.usermodel.repository.UseremailRepository;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Optional;
+
+import static org.junit.Assert.*;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = UserModelApplicationTesting.class, properties = {"command.line.runner.enabled=false"})
+public class UserServiceImplUnitTestNoDB {
+
+ @Autowired
+ UserService userService;
+
+ @MockBean
+ private UserRepository userrepos;
+
+ @MockBean
+ private RoleService roleService;
+
+ @MockBean
+ private HelperFunctions helperFunctions;
+
+ //list of users to modify
+ private List