package com.example.service;

import com.example.domain.Ticket;
import com.example.service.mapper.Mapper;
import com.example.service.remote.RemoteTicketService;
import com.example.service.remote.TicketDto;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Before;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import static org.mockito.Mockito.*;
import org.mockito.MockitoAnnotations;

public class DefaultTicketServiceTest {

    @Mock
    private RemoteTicketService mockRemoteTicketService;
    @Mock
    private Mapper mapper;
    @InjectMocks
    private TicketService ticketService = new DefaultTicketService();

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testFindTicketsHasResults() {
        when(mockRemoteTicketService.ticketSearch(anyString())).thenReturn(Arrays.asList(new TicketDto()));
        when(mapper.map(anyListOf(TicketDto.class))).thenReturn(Arrays.asList(new Ticket()));

        List<Ticket> tickets = ticketService.findTickets("test");
        assertFalse(tickets.isEmpty());
    }

    @Test
    public void testFindTicketsExceptionThrown() {
        when(mockRemoteTicketService.ticketSearch(anyString())).thenThrow(Exception.class);
        List<Ticket> tickets = ticketService.findTickets("test");
        assertTrue(tickets.isEmpty());
    }
}