Package lv.odylab.evemanage.service.eve

Source Code of lv.odylab.evemanage.service.eve.EveUpdateServiceImplTest

package lv.odylab.evemanage.service.eve;

import com.googlecode.objectify.Key;
import lv.odylab.evemanage.application.exception.ApiKeyShouldBeRemovedException;
import lv.odylab.evemanage.application.exception.EveApiException;
import lv.odylab.evemanage.domain.eve.ApiKey;
import lv.odylab.evemanage.domain.eve.ApiKeyCharacterInfo;
import lv.odylab.evemanage.domain.eve.ApiKeyDao;
import lv.odylab.evemanage.domain.eve.Character;
import lv.odylab.evemanage.domain.eve.CharacterDao;
import lv.odylab.evemanage.domain.user.User;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

import java.util.ArrayList;
import java.util.List;

import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public class EveUpdateServiceImplTest {
    @Mock
    private EveApiDataService eveApiDataService;
    @Mock
    private EveSynchronizationService eveSynchronizationService;
    @Mock
    private ApiKeyDao apiKeyDao;
    @Mock
    private CharacterDao characterDao;
    private EveUpdateService eveUpdateService;

    @Before
    public void setUp() {
        eveUpdateService = new EveUpdateServiceImpl(eveApiDataService, eveSynchronizationService, apiKeyDao, characterDao);
    }

    @Test
    public void testUpdateApiKeysForUser_NoKeys_NoCharacters() throws EveApiException, ApiKeyShouldBeRemovedException {
        Key<User> userKey = new Key<User>(User.class, 1);
        List<ApiKey> apiKeys = new ArrayList<ApiKey>();
        List<Character> characters = new ArrayList<Character>();

        when(apiKeyDao.getAll(userKey)).thenReturn(apiKeys);
        when(characterDao.getAll(userKey)).thenReturn(characters);
        eveUpdateService.updateApiKeysForUser(userKey);

        verify(eveApiDataService, never()).populateApiKeyData(any(ApiKey.class));
        verify(apiKeyDao, never()).putWithoutChecks(any(ApiKey.class));
        verify(eveApiDataService, never()).populateCharacterData(any(Character.class));
        verify(characterDao, never()).putWithoutChecks(any(Character.class));
    }

    @Test
    public void testUpdateApiKeysForUser_OneKey_TwoCharacters() throws EveApiException, ApiKeyShouldBeRemovedException {
        Key<User> userKey = new Key<User>(User.class, 1);
        List<ApiKey> apiKeys = new ArrayList<ApiKey>();
        ApiKey apiKey = new ApiKey();
        apiKeys.add(apiKey);
        List<Character> characters = new ArrayList<Character>();
        Character character1 = new Character();
        Character character2 = new Character();
        characters.add(character1);
        characters.add(character2);

        when(apiKeyDao.getAll(userKey)).thenReturn(apiKeys);
        when(characterDao.getAll(userKey)).thenReturn(characters);
        eveUpdateService.updateApiKeysForUser(userKey);

        verify(eveApiDataService, times(1)).populateApiKeyData(any(ApiKey.class));
        verify(apiKeyDao, times(1)).putWithoutChecks(any(ApiKey.class));
/*        verify(eveApiDataService, times(2)).populateCharacterData(any(Character.class));
        verify(characterDao, times(2)).putWithoutChecks(any(Character.class));*/
    }

    @Test
    public void testUpdateApiKeysForUser_OneKey_TwoCharacters_InvalidApiKey() throws EveApiException, ApiKeyShouldBeRemovedException {
        Key<User> userKey = new Key<User>(User.class, 1);
        List<ApiKey> apiKeys = new ArrayList<ApiKey>();
        ApiKey apiKey = new ApiKey();
        apiKeys.add(apiKey);
        apiKey.setCharacterInfos(new ArrayList<ApiKeyCharacterInfo>());
        apiKey.setValid(Boolean.TRUE);
        List<Character> characters = new ArrayList<Character>();
        Character character1 = new Character();
        character1.setCorporationID(1L);
        character1.setCorporationName("corporationName");
        List<String> corporationTitles = new ArrayList<String>();
        corporationTitles.add("title1");
        character1.setCorporationTitles(corporationTitles);
        character1.setCorporationTicker("corporationTicker");
        character1.setAllianceID(2L);
        character1.setAllianceName("allianceName");
        Character character2 = new Character();
        characters.add(character1);
        characters.add(character2);

        when(apiKeyDao.getAll(userKey)).thenReturn(apiKeys);
        when(characterDao.getAll(userKey)).thenReturn(characters);
        doThrow(new ApiKeyShouldBeRemovedException("api key not valid")).when(eveApiDataService).populateApiKeyData(any(ApiKey.class));
        doThrow(new EveApiException("api error")).when(eveApiDataService).populateCharacterData(any(Character.class));
        eveUpdateService.updateApiKeysForUser(userKey);

        verify(eveApiDataService, times(1)).populateApiKeyData(any(ApiKey.class));
/*        verify(apiKeyDao, times(1)).putWithoutChecks(any(ApiKey.class));
        verify(eveApiDataService, times(2)).populateCharacterData(any(Character.class));
        verify(characterDao, times(2)).putWithoutChecks(any(Character.class));
        assertNull(apiKey.getCharacterInfos());
        assertNotNull(apiKey.getLastCheckDate());
        assertNotNull(apiKey.getUpdatedDate());
        assertFalse(apiKey.isValid());
        assertNull(character1.getCorporationID());
        assertNull(character1.getCorporationName());
        assertNull(character1.getCorporationTitles());
        assertNull(character1.getCorporationTicker());
        assertNull(character1.getAllianceID());
        assertNull(character1.getAllianceName());
        assertNotNull(character1.getUpdatedDate());*/
    }
}
TOP

Related Classes of lv.odylab.evemanage.service.eve.EveUpdateServiceImplTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.