package br.gov.servicos.orgao;
import br.gov.servicos.Main;
import br.gov.servicos.servico.ServicoRepository;
import br.gov.servicos.setup.SetupTestesIntegracao;
import br.gov.servicos.v3.schema.OrgaoXML;
import com.google.common.collect.Lists;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import static br.gov.servicos.fixtures.TestData.SERVICO;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Main.class)
public class OrgaoRepositoryIntegrationTest {
@Autowired
ServicoRepository servicos;
@Autowired
OrgaoRepository orgaos;
@Autowired
OrgaoRepositoryUtil orgaosRepositoryUtil;
@Autowired
SetupTestesIntegracao setupTestesIntegracao;
@Before
public void setup() throws IOException {
setupTestesIntegracao.setupBaseLimpa();
}
@Test
public void listaOrgaosEmOrdemAlfabetica() throws Exception {
servicos.save(SERVICO
.withId("servico-1")
.withOrgao(orgaos.save(new OrgaoXML()
.withId("orgao-1")
.withUrl("http://estruturaorganizacional.dados.gov.br/doc/unidade-organizacional/1")
.withNome("Órgão 1"))));
servicos.save(SERVICO
.withId("servico-3")
.withOrgao(orgaos.save(new OrgaoXML()
.withId("orgao-3")
.withUrl("http://estruturaorganizacional.dados.gov.br/doc/unidade-organizacional/3")
.withNome("Órgão 3"))));
servicos.save(SERVICO
.withId("servico-2")
.withOrgao(orgaos.save(new OrgaoXML()
.withId("orgao-2")
.withUrl("http://estruturaorganizacional.dados.gov.br/doc/unidade-organizacional/2")
.withNome("Órgão 2"))));
List<OrgaoXML> resultados = Lists.newArrayList(orgaosRepositoryUtil.findAll());
assertThat(resultados, is(not(empty())));
assertThat(resultados.size(), is(3));
Iterator<OrgaoXML> it = resultados.iterator();
assertThat(it.next().getId(), is("orgao-1"));
assertThat(it.next().getId(), is("orgao-2"));
assertThat(it.next().getId(), is("orgao-3"));
it = resultados.iterator();
assertThat(it.next().getUrl(), is("http://estruturaorganizacional.dados.gov.br/doc/unidade-organizacional/1"));
assertThat(it.next().getUrl(), is("http://estruturaorganizacional.dados.gov.br/doc/unidade-organizacional/2"));
assertThat(it.next().getUrl(), is("http://estruturaorganizacional.dados.gov.br/doc/unidade-organizacional/3"));
it = resultados.iterator();
assertThat(it.next().getNome(), is("Órgão 1"));
assertThat(it.next().getNome(), is("Órgão 2"));
assertThat(it.next().getNome(), is("Órgão 3"));
}
}