package cc.nfscan.server.controller.fe;
import cc.nfscan.server.controller.response.ResultResponse;
import cc.nfscan.server.domain.TaxReceipt;
import com.google.gson.Gson;
import org.hamcrest.MatcherAssert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import java.text.SimpleDateFormat;
import java.util.Date;
import static cc.nfscan.server.utils.Constants.DATE_FORMAT;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* Controller test for handling regular tax receipts requests
*
* @author Paulo Miguel Almeida <a href="http://github.com/PauloMigAlmeida">@PauloMigAlmeida</a>
*/
public class TaxReceiptMobileControllerTest extends BaseDatabaseControllerTest {
@Before
public void init() {
super.init();
}
@After
public void clean() {
super.clean();
}
@Test
public void testManualDonate() throws Exception {
ResultResponse resultResponse;
// valid
resultResponse = manualDonate(new TaxReceipt("47.508.411/0285-90", new Date(), "123456", 0.01));
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.TRUE));
// total can't be <= 0.00
resultResponse = manualDonate(new TaxReceipt("47.508.411/0285-90", new Date(), "123456", 0.00));
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.FALSE));
// total can't be <= 0.00
resultResponse = manualDonate(new TaxReceipt("47.508.411/0285-91", new Date(), "123456", -0.00));
MatcherAssert.assertThat(resultResponse.isSuccess(), equalTo(Boolean.FALSE));
}
private ResultResponse manualDonate(TaxReceipt taxReceipt) throws Exception {
MockHttpServletRequestBuilder builder = post("/fe/taxreceipts/manual/donate.action");
builder.contentType(MediaType.APPLICATION_FORM_URLENCODED);
builder.param("cnpj", taxReceipt.getCnpj());
builder.param("date", new SimpleDateFormat(DATE_FORMAT).format(taxReceipt.getDate()));
builder.param("coo", taxReceipt.getCoo());
builder.param("total", String.valueOf(taxReceipt.getTotal()));
Gson gson = new Gson();
return gson.fromJson(
mockMvc.perform(builder).andExpect(status().isOk()).andReturn().getResponse().getContentAsString(),
ResultResponse.class
);
}
}