package sklep;

import org.assertj.core.api.Assertions;

import org.assertj.core.api.AbstractAssert;

public class AsercjeKatalogu extends AbstractAssert<AsercjeKatalogu, Katalog> {

	public AsercjeKatalogu(Katalog actual) {
		super(actual, AsercjeKatalogu.class);
	}
	
	public static AsercjeKatalogu assertThat(Katalog katalog) {
		return new AsercjeKatalogu(katalog);
	}
	
	public AsercjeKatalogu niepusty() {
		if(actual.nazwyTowarow().isEmpty()) {
			throw new AssertionError("Katalog jest pusty");
		}
		
		return this;
	}
	
	public AsercjeKatalogu niepusty2() {
		Assertions.assertThat(actual.nazwyTowarow())
			.isNotEmpty();
		
		return this;
	}

	public AsercjeKatalogu zawieraTowar(String nazwa) {
		Assertions.assertThat(actual.jestTowar(nazwa))
			.withFailMessage("Katalog nie zawiera towaru <%s>", nazwa)
			.isTrue();
		return this;
	}

	public AsercjeKatalogu nieZawieraTowaru(String nazwa) {
		Assertions.assertThat(actual.jestTowar(nazwa))
			.withFailMessage("Katalog zawiera towar <%s> choć nie powinien", nazwa)
			.isFalse();
		return this;
	}
}
