package sklep.www;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import java.io.IOException;

import org.junit.Before;
import org.junit.Test;
import org.xml.sax.SAXException;

import sklep.logika.SingletonSklep;
import sklep.logika.Sklep;

import com.meterware.httpunit.GetMethodWebRequest;
import com.meterware.httpunit.HTMLElement;
import com.meterware.httpunit.WebForm;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
import com.meterware.servletunit.ServletRunner;
import com.meterware.servletunit.ServletUnitClient;

public class TestWitrynaServlet_Mock {
	private static final String ODKURZACZ = "Odkurzacz";

	private static final String OPIS = "Opis odkurzacza";
	private static final String POTWIERDZENIE = "Potwierdzenie odkurzacza";
	private ServletRunner sr;
	private ServletUnitClient sc;
	private WebRequest req;
	private WebResponse resp;
	private Sklep m_sklep;
	
	@Before
	public void setUp() throws IOException, SAXException {
		m_sklep = mock(Sklep.class);
		when(m_sklep.zakup(ODKURZACZ, 3)).thenReturn(POTWIERDZENIE);
		when(m_sklep.opisTowaru(ODKURZACZ)).thenReturn(OPIS);
		
		SingletonSklep.setSklep(m_sklep);
		
		sr = new ServletRunner();
		sr.registerServlet("/StaryKompletnyProjekt/Witryna", "sklep.www.Witryna");
		sc = sr.newClient();
		req = new GetMethodWebRequest("http://localhost:8080/StaryKompletnyProjekt/Witryna");
		resp = sc.getResponse(req);
	}
	
	@Test
	public void testOpis() throws IOException, SAXException {
		WebForm formularz = resp.getFormWithID("sklep");
		formularz.setParameter("operacja", "opis");
		formularz.setParameter("nazwa", ODKURZACZ);
		WebResponse resp2 = formularz.submit();
		HTMLElement element = resp2.getElementWithID("komunikat");
		String tekst = element.getText();
		assertEquals(OPIS , tekst);
	}

	@Test
	public void testZakup() throws IOException, SAXException {
		WebForm formularz = resp.getFormWithID("sklep");
		formularz.setParameter("operacja", "zakup");
		formularz.setParameter("nazwa", ODKURZACZ);
		formularz.setParameter("liczba", "3");
		WebResponse resp2 = formularz.submit();
		HTMLElement element = resp2.getElementWithID("komunikat");
		String tekst = element.getText();
		assertEquals(POTWIERDZENIE , tekst);
	}

}


