package crmdna.inventory; import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalServiceTestHelper; import com.googlecode.objectify.ObjectifyFilter; import crmdna.client.Client; import crmdna.common.api.APIException; import crmdna.common.api.APIResponse.Status; import crmdna.group.Group; import crmdna.group.Group.GroupProp; import crmdna.user.User; import crmdna.user.User.ClientLevelPrivilege; import crmdna.user.UserCore; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class MealCountTest { private final LocalServiceTestHelper datastoreHelper = new LocalServiceTestHelper( new LocalDatastoreServiceTestConfig().setApplyAllHighRepJobPolicy()); private final String client = "isha"; private final String validUser = "valid@login.com"; private final String userWithPermission = "withpermission@login.com"; GroupProp mahamudra; @Before public void setUp() { datastoreHelper.setUp(); ObjectifyFilter.complete(); Client.create(client); GroupProp mahamudra = Group .create(client, "Singapore", User.SUPER_USER); assertEquals(1, mahamudra.groupId); User.create(client, validUser, mahamudra.groupId, User.SUPER_USER); assertEquals(1, UserCore.safeGet(client, validUser).toProp(client).userId); User.create(client, userWithPermission, mahamudra.groupId, User.SUPER_USER); assertEquals( 2, UserCore.safeGet(client, userWithPermission).toProp(client).userId); User.addClientLevelPrivilege(client, userWithPermission, ClientLevelPrivilege.UPDATE_MEAL_COUNT, User.SUPER_USER); } @After public void tearDown() { ObjectifyFilter.complete(); datastoreHelper.tearDown(); } @Test public void setCountTest() { MealCount.setCount(client, 20140908, 100, null, null, userWithPermission); List<MealCountEntity> entities = MealCount .query(client, 20140908, null); assertEquals(1, entities.size()); assertEquals(20140908, entities.get(0).yyyymmdd); assertEquals(100, entities.get(0).breakfastCount); assertEquals(0, entities.get(0).lunchCount); assertEquals(0, entities.get(0).dinnerCount); // need permission to set count try { MealCount.setCount(client, 20140908, 100, null, null, validUser); assertTrue(false); } catch (APIException ex) { assertEquals(Status.ERROR_INSUFFICIENT_PERMISSION, ex.statusCode); } // date should be in valid format // need permission to set count try { MealCount.setCount(client, 2014090890, 100, null, null, userWithPermission); assertTrue(false); } catch (APIException ex) { assertEquals(Status.ERROR_RESOURCE_INCORRECT, ex.statusCode); } // set lunch and dinner count MealCount .setCount(client, 20140908, null, 200, 300, userWithPermission); entities = MealCount.query(client, 20140908, null); assertEquals(1, entities.size()); assertEquals(20140908, entities.get(0).yyyymmdd); assertEquals(100, entities.get(0).breakfastCount); assertEquals(200, entities.get(0).lunchCount); assertEquals(300, entities.get(0).dinnerCount); } @Test public void queryTest() { MealCount.setCount(client, 20140908, 100, 200, 300, userWithPermission); MealCount.setCount(client, 20140909, 101, 201, 301, userWithPermission); List<MealCountEntity> entities = MealCount .query(client, 20140908, null); assertEquals(2, entities.size()); assertEquals(20140909, entities.get(0).yyyymmdd); assertEquals(101, entities.get(0).breakfastCount); assertEquals(201, entities.get(0).lunchCount); assertEquals(301, entities.get(0).dinnerCount); assertEquals(100, entities.get(1).breakfastCount); assertEquals(200, entities.get(1).lunchCount); assertEquals(300, entities.get(1).dinnerCount); entities = MealCount.query(client, 20140908, 20140908); assertEquals(1, entities.size()); assertEquals(20140908, entities.get(0).yyyymmdd); entities = MealCount.query(client, null, 20140909); assertEquals(2, entities.size()); entities = MealCount.query(client, 20140801, null); assertEquals(2, entities.size()); entities = MealCount.query(client, 20140801, 20140831); assertEquals(0, entities.size()); // start should be valid try { MealCount.query(client, 201408019, null); assertTrue(false); } catch (APIException ex) { assertEquals(Status.ERROR_RESOURCE_INCORRECT, ex.statusCode); } // end should be valid try { MealCount.query(client, 20140809, 201409093); assertTrue(false); } catch (APIException ex) { assertEquals(Status.ERROR_RESOURCE_INCORRECT, ex.statusCode); } // end should be >= start try { MealCount.query(client, 20140809, 20140801); assertTrue(false); } catch (APIException ex) { assertEquals(Status.ERROR_RESOURCE_INCORRECT, ex.statusCode); } } }