/** * Copyright (C) 2011 ArtiVisi Intermedia <info@artivisi.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 com.artivisi.biller.simulator.service.impl; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.io.File; import java.math.BigDecimal; import java.sql.Connection; import java.util.Date; import java.util.List; import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.sql.DataSource; import org.dbunit.database.DatabaseConfig; import org.dbunit.database.DatabaseConnection; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.dbunit.ext.mysql.MySqlDataTypeFactory; import org.dbunit.operation.DatabaseOperation; import org.hibernate.annotations.GenericGenerator; import org.joda.time.DateTime; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.artivisi.biller.simulator.dto.GeneratorTagihanPascabayar; import com.artivisi.biller.simulator.entity.Bank; import com.artivisi.biller.simulator.entity.Mitra; import com.artivisi.biller.simulator.entity.Pelanggan; import com.artivisi.biller.simulator.entity.PembayaranPascabayar; import com.artivisi.biller.simulator.entity.TagihanNontaglis; import com.artivisi.biller.simulator.entity.TagihanNontaglisDetail; import com.artivisi.biller.simulator.entity.TagihanPascabayar; import com.artivisi.biller.simulator.service.BillerSimulatorService; import com.artivisi.biller.simulator.service.PlnSimulatorService; public class PpobSimulatorServiceImplTest { private static BillerSimulatorService billerService; private static PlnSimulatorService plnService; private static DataSource dataSource; @BeforeClass public static void init(){ AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("classpath*:com/artivisi/**/applicationContext.xml"); ctx.registerShutdownHook(); billerService = ctx.getBean(BillerSimulatorService.class); plnService = ctx.getBean(PlnSimulatorService.class); dataSource = ctx.getBean(DataSource.class); } @Before public void resetDatabase() throws Exception { Connection conn = dataSource.getConnection(); String sqlDropTableInquiryDetail = "drop table if exists inquiry_postpaid_response_detail"; conn.createStatement().executeUpdate(sqlDropTableInquiryDetail); String sqlDropTableInquiry = "drop table if exists inquiry_postpaid_response"; conn.createStatement().executeUpdate(sqlDropTableInquiry); DatabaseConnection dbUnitConn = new DatabaseConnection(conn); dbUnitConn.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new MySqlDataTypeFactory()); DatabaseOperation.CLEAN_INSERT.execute(dbUnitConn, new FlatXmlDataSetBuilder().build(new File("src/test/resources/pelanggan.xml"))); } @Test public void testSaveBank(){ Bank b = new Bank(); b.setKode("BANKIRB"); b.setNama("Bank IRB"); billerService.save(b); assertNotNull(b.getId()); } @Test public void testDeleteBank(){ Bank b = billerService.findBankById("abc"); assertNotNull(b); billerService.delete(b); assertNull(billerService.findBankById("abc")); } @Test public void testFindAllBank(){ assertTrue(billerService.findAllBank().size() == 1); } @Test public void testBankByKode(){ assertNotNull(billerService.findBankByKode("BANKABC")); assertNull(billerService.findBankByKode("BANKBCA")); } @Test public void testSaveMitra(){ Mitra b = new Mitra(); b.setKode("JMI1234"); b.setNama("JMI"); billerService.save(b); assertNotNull(b.getId()); } @Test public void testDeleteMitra(){ Mitra b = billerService.findMitraById("abc"); assertNotNull(b); billerService.delete(b); assertNull(billerService.findMitraById("abc")); } @Test public void testFindAllMitra(){ assertTrue(billerService.findAllMitra().size() == 1); } @Test public void testMitraByKode(){ assertNotNull(billerService.findMitraByKode("ARTIVIS")); assertNull(billerService.findMitraByKode("JMI1234")); } @Test public void testSavePelanggan() { Pelanggan p = createPelanggan(); plnService.save(p); assertNotNull(p.getId()); } @Test public void testDeletePelanggan() { Pelanggan p = plnService.findPelangganById("abc"); assertNotNull(p); plnService.delete(p); Pelanggan p2 = plnService.findPelangganById("abc"); assertNull(p2); } @Test public void testFindAllPelanggan() { List<Pelanggan> all = plnService.findAllPelanggan(); assertTrue(all.size() == 3); } @Test public void testFindPelangganByIdpel() { assertNull(plnService.findPelangganByIdpel(null)); assertNull(plnService.findPelangganByIdpel("")); assertNull(plnService.findPelangganByIdpel("210987654321")); assertNotNull(plnService.findPelangganByIdpel("123456789012")); } @Test public void testFindPelangganByMeterNumber() { assertNull(plnService.findPelangganByMeterNumber(null)); assertNull(plnService.findPelangganByMeterNumber("")); assertNull(plnService.findPelangganByMeterNumber("10987654321")); assertNotNull(plnService.findPelangganByMeterNumber("12345678901")); } @Test public void testSaveTagihanPascabayar(){ Pelanggan p = plnService.findPelangganById("def"); TagihanPascabayar t = createTagihanPascabayar(p); plnService.save(t); assertNotNull(t.getId()); } @Test public void testDeleteTagihanPascabayar() { Pelanggan p = plnService.findPelangganById("abc"); List<TagihanPascabayar> hasil = plnService.findTagihan(p); TagihanPascabayar t = hasil.get(0); plnService.delete(t); assertTrue(plnService.findTagihan(p).size() == 1); } @Test public void testFindTagihanByPelanggan(){ Pelanggan p = plnService.findPelangganById("abc"); List<TagihanPascabayar> hasil = plnService.findTagihan(p); assertTrue(hasil.size() == 2); } @Test public void testGenerate(){ plnService.generatePascabayar(new GeneratorTagihanPascabayar()); } @Test public void testSavePembayaran(){ TagihanPascabayar t = plnService.findTagihan(plnService.findPelangganById("abc")).get(1); PembayaranPascabayar p = createPembayaranPascabayar(t); plnService.save(p); assertNotNull(p.getId()); } @Test public void testDeletePembayaran(){ List<PembayaranPascabayar> hasil =plnService.findPembayaranPascabayar(new DateTime(2011,01,01,0,0,0,0).toDate(), "ARTIVISI"); assertNotNull(hasil); assertTrue(hasil.size() == 1); PembayaranPascabayar p = hasil.get(0); plnService.delete(p); assertTrue(plnService.findPembayaranPascabayar(new DateTime(2011,01,01,0,0,0,0).toDate(), "ARTIVISI").size() == 0); } @Test public void testSaveTagihanNontaglis(){ Pelanggan p = plnService.findPelangganById("def"); TagihanNontaglis t = createTagihanNontaglis(p); plnService.save(t); assertNotNull(t.getId()); } @Test public void testDeleteTagihanNontaglis(){ TagihanNontaglis t = new TagihanNontaglis(); assertNotNull(t); plnService.delete(t); assertNull(plnService.findTagihanNontaglis("abcdef")); } @Test public void testFindTagihanNontaglis(){ assertNull(plnService.findTagihanNontaglis(null)); assertNull(plnService.findTagihanNontaglis("")); assertNotNull(plnService.findTagihanNontaglis("956788")); } @Test public void testSaveTagihannontaglisDetail(){ TagihanNontaglisDetail t = new TagihanNontaglisDetail(); t.setTotalRepeat(new Integer(2)); t.setCustomDetailUnit(new Integer(0)); t.setCustomDetailCode(new Integer(0)); t.setCustomDetailValueAmount(new Integer(0)); plnService.save(t); assertNotNull(t.getId()); } @Test public void testFindAllTagihanNontaglisDetail(){ assertTrue(plnService.findAllTagihanNontaglisDetail().size()==1); } private PembayaranPascabayar createPembayaranPascabayar(TagihanPascabayar t){ PembayaranPascabayar p = new PembayaranPascabayar(); p.setTagihanPascabayar(t); p.setBank("BANKABC"); p.setLoket("L-002"); p.setMerchantCategory("6012"); p.setOperator("endy"); p.setSwitcher("ARTIVISI"); return p; } private TagihanPascabayar createTagihanPascabayar(Pelanggan p) { TagihanPascabayar t = new TagihanPascabayar(); t.setPelanggan(p); t.setBillPeriod(new Date()); t.setDueDate(new Date()); t.setMeterReadDate(new Date()); t.setBill(new BigDecimal(99000)); t.setVat(new BigDecimal(9900)); t.setDenda(new BigDecimal(990)); t.setInsentif(new BigDecimal(90000)); t.setPreviousMeterRead1("123"); t.setPreviousMeterRead2("123"); t.setPreviousMeterRead3("123"); t.setCurrentMeterRead1("456"); t.setCurrentMeterRead2("456"); t.setCurrentMeterRead3("456"); return t; } private Pelanggan createPelanggan() { Pelanggan p = new Pelanggan(); p.setIdpel("123456789010"); p.setMeterNumber("12345678900"); p.setNama("Pelanggan Dum'my"); p.setPowerConsumingCategory("1200"); p.setSubscriberSegmentation("R1"); p.setServiceUnit("51"); p.setServiceUnitPhone("1234567890"); return p; } private TagihanNontaglis createTagihanNontaglis(Pelanggan p){ TagihanNontaglis t = new TagihanNontaglis(); t.setSwitcherId("xyz"); t.setSubscriberName("Fanani M. Ihsan"); t.setRegistrationNumber("987654567") ; t.setAreaCode(new Integer(876545)) ; t.setTransactionCode(new Integer(9567876)) ; t.setTransactionName("transaction"); t.setRegistrationDate(new Date()); t.setExpirationDate(new Date()); t.setSubscriberId(new BigDecimal(74565656)) ; t.setPlnRefNumber("k09876567jjjfjh"); t.setCaReceiptRefNumber("abcdefghij"); t.setServiceUnit("fkakkkfas"); t.setServiceUnitAdress("xyz"); t.setServiceUnitPhone("021"); t.setTotalTransactionAmountMinorUnit(new BigDecimal(0)); t.setTotalTransactionAmount(new BigDecimal("90000")); t.setPlnBillMinorUnit(new BigDecimal("100000")); t.setRptag(new BigDecimal(80000)); t.setAdminChargeUnit(new BigDecimal(1)); t.setAdminCharge(new BigDecimal(1600)); t.setMutationNumber(new Integer(0)); t.setSubscriberSegmentation(new Integer(0)); t.setPowerConsumingCategory(new Integer(950)); return t; } }