package org.activityinfo.server.command; /* * #%L * ActivityInfo Server * %% * Copyright (C) 2009 - 2013 UNICEF * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ import junit.framework.Assert; import org.activityinfo.legacy.shared.command.*; import org.activityinfo.legacy.shared.command.result.CreateResult; import org.activityinfo.legacy.shared.exception.CommandException; import org.activityinfo.legacy.shared.model.SchemaDTO; import org.activityinfo.legacy.shared.model.TargetDTO; import org.activityinfo.legacy.shared.model.UserDatabaseDTO; import org.activityinfo.fixtures.InjectionSupport; import org.activityinfo.server.database.OnDataSet; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @RunWith(InjectionSupport.class) @OnDataSet("/dbunit/schema1.db.xml") public class TargetTest extends CommandTestCase { private static final int DATABASE_OWNER = 1; private static UserDatabaseDTO db; @Before public void setUser() { setUser(DATABASE_OWNER); /* * Initial data load */ SchemaDTO schema = execute(new GetSchema()); db = schema.getDatabaseById(1); } @Test public void testTarget() throws CommandException { /* * Create a new Target */ TargetDTO target = createTarget(); CreateResult cresult = execute(new AddTarget(db.getId(), target)); int newId = cresult.getNewId(); /* * Load Targets to verify the changes have stuck */ List<TargetDTO> targets = execute(new GetTargets(db.getId())).getData(); TargetDTO dto = getTargetById(targets, newId); Assert.assertNotNull(dto); Assert.assertEquals("name", "Target0071", dto.getName()); } @Test public void updateTargetNameTest() throws Throwable { Map<String, Object> changes1 = new HashMap<String, Object>(); changes1.put("name", "newNameOfTarget"); execute(new BatchCommand(new UpdateEntity("Target", 1, changes1))); List<TargetDTO> targets = execute(new GetTargets(db.getId())).getData(); TargetDTO dto = getTargetById(targets, 1); Assert.assertEquals("newNameOfTarget", dto.getName()); } @Test public void deleteTargetTest() { TargetDTO target = createTarget(); CreateResult cresult = execute(new AddTarget(db.getId(), target)); int newId = cresult.getNewId(); /* * Load Targets to verify the changes have stuck */ List<TargetDTO> targets = execute(new GetTargets(db.getId())).getData(); TargetDTO dto = getTargetById(targets, newId); Assert.assertEquals("name", "Target0071", dto.getName()); /* * Delete new target now */ execute(new Delete(dto)); /* * Verify if target is deleted. */ targets = execute(new GetTargets()).getData(); TargetDTO deleted = getTargetById(targets, newId); Assert.assertNull(deleted); } private TargetDTO createTarget() { Date date1 = new Date(); Date date2 = new Date(); /* * Create a new Target */ TargetDTO target = new TargetDTO(); target.setName("Target0071"); target.setDate1(date1); target.setDate2(date2); return target; } private TargetDTO getTargetById(List<TargetDTO> targets, int id) { for (TargetDTO dto : targets) { if (id == dto.getId()) { return dto; } } return null; } }