/**
* Copyright © 2015 Pablo Grela Palleiro (pablogp_9@hotmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.cuacfm.members.test.model.feeprogram;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import org.cuacfm.members.model.account.Account;
import org.cuacfm.members.model.account.Account.roles;
import org.cuacfm.members.model.accountservice.AccountService;
import org.cuacfm.members.model.exceptions.UniqueException;
import org.cuacfm.members.model.exceptions.UniqueListException;
import org.cuacfm.members.model.feeprogram.FeeProgram;
import org.cuacfm.members.model.feeprogramservice.FeeProgramService;
import org.cuacfm.members.model.payprogramservice.PayProgramService;
import org.cuacfm.members.model.program.Program;
import org.cuacfm.members.model.programservice.ProgramService;
import org.cuacfm.members.model.util.DateUtils;
import org.cuacfm.members.test.config.WebSecurityConfigurationAware;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
/** The Class FeeProgramServiceTest. */
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
public class FeeProgramServiceTest extends WebSecurityConfigurationAware {
/** The program service. */
@Inject
private ProgramService programService;
/** The fee program service. */
@Inject
private FeeProgramService feeProgramService;
/** The pay program service. */
@Inject
private PayProgramService payProgramService;
/** The account service. */
@Inject
private AccountService accountService;
/**
* Save and find by FeeProgram test.
*
* @throws UniqueException the unique exception
*/
@Test
public void saveFeeProgramTest() throws UniqueException {
// Save
Date date = DateUtils.format("2015-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram = new FeeProgram("name", Double.valueOf(25), date, date, "description");
feeProgramService.save(feeProgram);
// findById
FeeProgram feeProgramSearch = feeProgramService.findById(feeProgram.getId());
assertEquals(feeProgram, feeProgramSearch);
}
/**
* Save and find by FeeProgram test.
*
* @throws UniqueException the unique exception
*/
@Test
public void saveFeeProgramWithUsersTest() throws UniqueException, UniqueListException {
List<Account> accounts = new ArrayList<Account>();
Account account = new Account("user", "1", "55555555C", "London", "user", "user@udc.es", "666666666", "666666666", "demo", roles.ROLE_USER);
accountService.save(account);
accounts.add(account);
Program program = new Program("Pepe", "Very interesting", Float.valueOf(1), 9, accounts, account, programService.findProgramTypeById(1),
programService.findProgramThematicById(1), programService.findProgramCategoryById(1), programService.findProgramLanguageById(1), "",
"", "", "", "");
programService.save(program);
programService.up(program);
// Save
Date date = DateUtils.format("2015-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram = new FeeProgram("name", Double.valueOf(25), date, date, "description");
feeProgramService.save(feeProgram);
// findById
FeeProgram feeProgramSearch = feeProgramService.findById(feeProgram.getId());
assertEquals(feeProgram, feeProgramSearch);
assertEquals(payProgramService.getPayProgramListByFeeProgramId(feeProgram.getId()).size(), 1);
}
/**
* Save and find by FeeProgram test.
*
* @throws UniqueException the unique exception
*/
@Test(expected = UniqueException.class)
public void saveFeeProgramExceptionTest() throws UniqueException, UniqueListException {
// Save
Date date = DateUtils.format("2015-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram = new FeeProgram("name", Double.valueOf(25), date, date, "description");
feeProgramService.save(feeProgram);
feeProgramService.save(feeProgram);
}
/**
* Save and find by FeeProgram test.
*
* @throws UniqueException the unique exception
*/
@Test
public void saveUserFeeProgramTest() throws UniqueException, UniqueListException {
// Save
List<Account> accounts = new ArrayList<Account>();
Account account = new Account("user", "1", "55555555C", "London", "user", "user@udc.es", "666666666", "666666666", "demo", roles.ROLE_USER);
accountService.save(account);
accounts.add(account);
Program program = new Program("Pepe", "Very interesting", Float.valueOf(1), 9, accounts, account, programService.findProgramTypeById(1),
programService.findProgramThematicById(1), programService.findProgramCategoryById(1), programService.findProgramLanguageById(1), "",
"", "", "", "");
programService.save(program);
programService.update(program);
Date date = DateUtils.format("2015-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram = new FeeProgram("name", Double.valueOf(25), date, date, "description");
feeProgramService.save(feeProgram);
// findById
FeeProgram feeProgramSearch = feeProgramService.findById(feeProgram.getId());
assertEquals(feeProgram, feeProgramSearch);
}
/**
* Update.
*
* @throws UniqueException the unique exception
*/
@Test
public void UpdateFeeProgramTest() throws UniqueException {
// Save
Date date = DateUtils.format("2015-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram = new FeeProgram("name", Double.valueOf(25), date, date, "description");
feeProgramService.save(feeProgram);
// Update
feeProgram.setName("pay of 1016");
feeProgram.setDate(date);
feeProgram.setDateLimit(date);
feeProgram.setPrice(Double.valueOf(25));
feeProgram.setDescription("pay of 2016, tax for members");
feeProgramService.update(feeProgram);
// Assert
FeeProgram feeProgramSearch = feeProgramService.findById(feeProgram.getId());
assertEquals(feeProgram, feeProgramSearch);
assertEquals(feeProgram.getName(), feeProgramSearch.getName());
assertEquals(feeProgram.getDate(), feeProgramSearch.getDate());
assertEquals(feeProgram.getDateLimit(), feeProgramSearch.getDateLimit());
assertEquals(feeProgram.getPrice(), feeProgramSearch.getPrice());
assertEquals(feeProgram.getDescription(), feeProgramSearch.getDescription());
date = DateUtils.format("2016-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram2 = new FeeProgram("new name", Double.valueOf(25), date, date, "description");
feeProgramService.update(feeProgram2);
}
/**
* Update Inscription Exception.
*
* @throws UniqueException the unique exception
*/
@Test(expected = UniqueException.class)
public void UpdateFeeProgramExceptionTest() throws UniqueException {
// Save
Date date = DateUtils.format("2015-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram = new FeeProgram("name", Double.valueOf(25), date, date, "description");
feeProgramService.save(feeProgram);
Date date2 = DateUtils.format("2016-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram2 = new FeeProgram("name2", Double.valueOf(25), date2, date2, "description");
feeProgramService.save(feeProgram2);
// Update
FeeProgram feeProgram3 = new FeeProgram("name3", Double.valueOf(25), date, date, "description");
feeProgramService.update(feeProgram3);
}
/**
* findByName test.
*
* @throws UniqueException the unique exception
*/
@Test
public void findByNameTest() throws UniqueException {
// Save
Date date = DateUtils.format("2015-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram = new FeeProgram("name", Double.valueOf(25), date, date, "description");
feeProgramService.save(feeProgram);
// findByName
FeeProgram feeProgramSearch = feeProgramService.findByName(feeProgram.getName());
assertEquals(feeProgram, feeProgramSearch);
assertNull(feeProgramService.findByName("Do not exist"));
}
/**
* findByYear test.
*
* @throws UniqueException the unique exception
*/
@Test
public void findByDateTest() throws UniqueException {
// Save
Date date = DateUtils.format("2015-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram = new FeeProgram("name", Double.valueOf(25), date, date, "description");
feeProgramService.save(feeProgram);
// findByName
FeeProgram feeProgramSearch = feeProgramService.findByDate(feeProgram.getDate());
assertEquals(feeProgram, feeProgramSearch);
}
/**
* getFeeProgramList test.
*
* @return the fee program list test
* @throws UniqueException the unique exception
*/
@Test
public void getFeeProgramListTest() throws UniqueException {
// getFeeProgramList, no FeePrograms
List<FeeProgram> feeProgramList = feeProgramService.getFeeProgramList();
// Assert
assertTrue(feeProgramList.isEmpty());
// Save
Date date = DateUtils.format("2015-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram = new FeeProgram("name", Double.valueOf(25), date, date, "description");
feeProgramService.save(feeProgram);
Date date2 = DateUtils.format("2016-12", DateUtils.FORMAT_MONTH_YEAR);
FeeProgram feeProgram2 = new FeeProgram("name", Double.valueOf(25), date2, date2, "description");
feeProgramService.save(feeProgram2);
// getFeeProgramList
feeProgramList = feeProgramService.getFeeProgramList();
// Assert
assertEquals(feeProgramList.size(), 2);
}
}