aboutsummaryrefslogtreecommitdiff
path: root/ufund-api/src/test/java/com/ufund/api/ufundapi/persistence/UserFileDAOTest.java
blob: 93611885aec26568d3270342e16097dadece105f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package com.ufund.api.ufundapi.persistence;

import java.io.File;
import java.io.IOException;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.ufund.api.ufundapi.model.User;

@Tag("Persistence-tier")
public class UserFileDAOTest {
    UserFileDAO userFileDAO;
    User[] testUsers;
    ObjectMapper mockObjectMapper;

    @BeforeEach
    public void setupHeroFileDAO() throws IOException {
        mockObjectMapper = mock(ObjectMapper.class);
        testUsers = new User[3];
        testUsers[0] = User.create("bob", "pass");
		testUsers[1] = User.create("admin", "pass");
		testUsers[2] = User.create("jelly12", "pass");

        // When the object mapper is supposed to read from the file
        // the mock object mapper will return the hero array above
        when(mockObjectMapper
            .readValue(new File("doesnt_matter.txt"),User[].class))
                .thenReturn(testUsers);
        userFileDAO = new UserFileDAO("doesnt_matter.txt",mockObjectMapper);
    }

    @Test
    public void getUsersTest() {
        User[] users = userFileDAO.getUsers();

        assertEquals(users.length,testUsers.length);
		
        for (int i = 0; i < testUsers.length;++i) {
			boolean isInArray = false;
            for (User user : testUsers) {
                if (users[i].getUsername().equals(user.getUsername())) {
                    isInArray = true;
                    break;
                }
			}
			assertTrue(isInArray);
		}
    }

    @Test
    public void findUsersTest() {
		User realUser1 = userFileDAO.getUser("bob");
		User realUser2 = userFileDAO.getUser("admin");

		assertEquals(testUsers[0], realUser1);
		assertEquals(testUsers[1], realUser2);
    }

	@Test
    public void findUsersNullTest() {
		User fakeUser = userFileDAO.getUser("phil.n.thropist");

		assertNull(fakeUser);
    }

	@Test
	public void createUserTest() throws IOException {
		User newUser = User.create("keshey", "pass");
		userFileDAO.addUser(newUser);

		User actualUser = userFileDAO.getUser("keshey");
		assertNotNull(actualUser);

		assertEquals(actualUser.getUsername(), newUser.getUsername());
	}

	@Test
	public void deleteUserTest() throws IOException {
		User notDeletedUser = userFileDAO.getUser("jelly12");
		assertNotNull(notDeletedUser);

		boolean isDeleted = userFileDAO.deleteUser("jelly12");
		assertTrue(isDeleted);

		User deletedUser = userFileDAO.getUser("jelly12");
		assertNull(deletedUser);
	}

	@Test
	public void updateUserTest() throws IOException {
		User toBeUpdatedUser = userFileDAO.getUser("admin");
		assertNotNull(toBeUpdatedUser);

		User updatedUser = User.create("admin", "newPass");

		updatedUser = userFileDAO.updateUser(updatedUser);
		assertNotEquals(toBeUpdatedUser, updatedUser);
		assertEquals("admin", updatedUser.getUsername());
	}

}