Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

package gov.va.vamf.scheduling.varutility.resources;

import gov.va.vamf.scheduling.varutility.clientapi.MobileHealthClientTestVersion;
import gov.va.vamf.scheduling.varutility.domain.CoreSetting;
import gov.va.vamf.scheduling.varutility.domain.CoreSettings;
import gov.va.vamf.scheduling.varutility.domain.DirectBookingEligibilityCriteria;
import gov.va.vamf.scheduling.varutility.testutility.IntegrationTestConfiguration;
import gov.va.vamf.scheduling.varutility.testutility.TestHelper;
import org.junit.*;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import java.net.URI;

public class VarUtilityResourceTest {

private static MobileHealthClientTestVersion client;
private static Client jerseyClient;
private static String TEST_SITE_CODE = "test-site-code";

@BeforeClass
public static void startup() {
client = TestHelper.createProviderClient();
jerseyClient = client.getJerseyClient();
}

@AfterClass
public static void destroy() {
if (client != null) {
client.getJerseyClient().close();
client = null;
}
}

@Before
public void testPost() {
DirectBookingEligibilityCriteria postPayload = createCriteriaPayload(TEST_SITE_CODE);

DirectBookingEligibilityCriteria newCriteria = jerseyClient.target(getResourceUri(TEST_SITE_CODE, ""))
.request().accept(MediaType.APPLICATION_JSON).post(Entity.entity(postPayload, MediaType.APPLICATION_JSON), DirectBookingEligibilityCriteria.class);

Assert.assertTrue(newCriteria != null);
Assert.assertEquals(TEST_SITE_CODE, newCriteria.getId());
}

private DirectBookingEligibilityCriteria createCriteriaPayload(String siteCode) {
DirectBookingEligibilityCriteria criteria = new DirectBookingEligibilityCriteria();

CoreSettings cs = new CoreSettings();
cs.add(new CoreSetting("323", "PRIMARY CARE", "", null, null, true, 1, 1));
cs.add(new CoreSetting("203", "AUDIOLOGY", "", null, null, true, 2, 2));
cs.add(new CoreSetting("408", "OPTOMETRY", "", null, null, true, 2, 2));
cs.add(new CoreSetting("502", "OUTPATIENT MENTAL HEALTH", "", null, null, true, 3, 3));

criteria.setId(siteCode);
criteria.setCoreSettings(cs);

return criteria;
}

@Test
public void testFetch() {
DirectBookingEligibilityCriteria criteria = jerseyClient.target(getResourceUri(TEST_SITE_CODE, ""))
.request().accept(MediaType.APPLICATION_JSON).get(DirectBookingEligibilityCriteria.class);

Assert.assertTrue(criteria != null);
Assert.assertEquals(TEST_SITE_CODE, criteria.getId());
}

@Test
public void testUpdate() {
DirectBookingEligibilityCriteria criteria = jerseyClient.target(getResourceUri(TEST_SITE_CODE, ""))
.request().accept(MediaType.APPLICATION_JSON).get(DirectBookingEligibilityCriteria.class);

Assert.assertTrue(criteria != null);
Assert.assertEquals(TEST_SITE_CODE, criteria.getId());

criteria = jerseyClient.target(getResourceUri(TEST_SITE_CODE, TEST_SITE_CODE))
.request().accept(MediaType.APPLICATION_JSON).put(Entity.entity(criteria, MediaType.APPLICATION_JSON), DirectBookingEligibilityCriteria.class);

Assert.assertTrue(criteria != null);
Assert.assertEquals(TEST_SITE_CODE, criteria.getId());
}

private static URI getResourceUri(String siteCode, String id) {
String uriFormat = String.format("%s/direct-booking-eligibility-criteria/site/%s" + (id.length() != 0 ? "/id/%s" : "%s"),
IntegrationTestConfiguration.getServerBaseUri(), siteCode, id);

return UriBuilder.fromUri(uriFormat).build();
}
}