package waluty.model;

import static org.assertj.core.api.Assertions.*;

import java.math.BigDecimal;
import java.time.LocalDate;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class TabelaTest {
	private static final String PRZYKLADOWY_NUMER = "123/A/NBP/2022";
	private static final LocalDate PRZYKLADOWA_DATA = LocalDate.of(2022, 9, 30);

	private Tabela tabela;

	@BeforeEach
	void setUp() {
		tabela = new Tabela(PRZYKLADOWY_NUMER, PRZYKLADOWA_DATA);
	}

	@Test
	void testTabela() {
		assertThat(tabela.getNumer()).isEqualTo(PRZYKLADOWY_NUMER);
		assertThat(tabela.getData()).isEqualTo(PRZYKLADOWA_DATA);
		assertThat(tabela.getWaluty()).isEmpty();
	}

	@Test
	void testToString() {
		assertThat(tabela).asString().isEqualTo("Tabela nr 123/A/NBP/2022 z dnia 2022-09-30, 0 walut");
	}
	
	@Test
	void testDodajWalute() {
		Waluta dolar = new Waluta("USD", "dolar", new BigDecimal("5.0000"));
		Waluta euro = new Waluta("EUR", "euro", new BigDecimal("3.0000"));
		
		tabela.dodajWalute(dolar);
		tabela.dodajWalute(euro);
		
		assertThat(tabela.getWaluty())
				.hasSize(2)
				.containsExactlyInAnyOrder(dolar, euro);
	}
	
	@Test
	void testWyszukaj() {
		Waluta dolar = new Waluta("USD", "dolar", new BigDecimal("5.0000"));
		Waluta euro = new Waluta("EUR", "euro", new BigDecimal("3.0000"));
		
		tabela.dodajWalute(dolar);
		tabela.dodajWalute(euro);
		
		Waluta znaleziona = tabela.wyszukaj("EUR");
		assertThat(znaleziona).isEqualTo(euro);
	}

}
