// Path: src/main/java/com/ksa/myanmarlottery/model/ScheduleItem.java
// @Entity
// @NamedQueries({
//     @NamedQuery(
//         name = "scheduleItem.findAll",
//         query = "from ScheduleItem s"
//     )}
// )
// public class ScheduleItem implements Serializable {
//     
//     @Id
//     private String recipientID;
//     
//     // 500 or 200
//     private int lotteryType;
//     
//     // query by range or specific query
//     private int queryType;
//     
//     @ElementCollection
//     @CollectionTable(name="param_table", joinColumns=@JoinColumn(name="recipient_id"))
//     @Column(name="params")
//     @OrderColumn(name="param_index")
//     private List<String> param = new ArrayList<>();
//     
//     private String originParam;
//     
//     @Temporal(TemporalType.TIMESTAMP)
//     private Date creationDate = new Date();
// 
//     public ScheduleItem() {}
// 
//     public ScheduleItem(String recipientID, int lotteryType, int queryType, String originParam) {
//         this.recipientID = recipientID;
//         this.lotteryType = lotteryType;
//         this.queryType = queryType;
//         this.originParam = originParam;
//     }
// 
//     public String getOriginParam() {
//         return originParam;
//     }
// 
//     public void setOriginParam(String originParam) {
//         this.originParam = originParam;
//     }
//     
//     public String getRecipientID() {
//         return recipientID;
//     }
// 
//     public void setRecipientID(String recipientID) {
//         this.recipientID = recipientID;
//     }
// 
//     public int getLotteryType() {
//         return lotteryType;
//     }
// 
//     public void setLotteryType(int lotteryType) {
//         this.lotteryType = lotteryType;
//     }
// 
//     public int getQueryType() {
//         return queryType;
//     }
// 
//     public void setQueryType(int queryType) {
//         this.queryType = queryType;
//     }
// 
//     public List<String> getParam() {
//         return param;
//     }
// 
//     public void setParam(List<String> param) {
//         this.param = param;
//     }
// 
//     public Date getCreationDate() {
//         return creationDate;
//     }
// 
//     public void setCreationDate(Date creationDate) {
//         this.creationDate = creationDate;
//     }
// 
// }
// 
// Path: src/main/java/com/ksa/myanmarlottery/repository/ResultRepository.java
// public interface ResultRepository {
//     Result insert(Result result);
//     void deleteByType(int type);    
// 
//     /**
//      * 
//      * @param minIndex
//      * @param maxIndex
//      * @param points
//      * @param type
//      * @return 
//      */
//     public List<Prize> findPrizeByCode(int minIndex, int maxIndex, List<Integer> points, int type);
// 
//     /**
//      * 
//      * @param codeIndex
//      * @param startPoint
//      * @param endPoint
//      * @param startFivePt
//      * @param endFivePt
//      * @param startFourPt
//      * @param endFourPt
//      * @param startThreePt
//      * @param endThreePt
//      * @param startTwoPt
//      * @param endTwoPt
//      * @param type
//      * @return 
//      */
//     public List<Prize> findPrizeByPoints(int codeIndex, int startPoint, int endPoint,
//                                         int startFivePt, int endFivePt, int startFourPt, 
//                                         int endFourPt, int startThreePt, int endThreePt,
//                                         int startTwoPt, int endTwoPt, int type);
//         
//     public Result findResultByType(int type);
//     /**
//      * find prize on latest result by codeNo and type
//      * @param codePoints
//      * @param type
//      * @return 
//      */
//     public List<Prize> findPrizeByResultType(Map<String,List<Integer>> codePoints, int type);
// 
//     /**
//      * find only latest result information WITHOUT prize list.
//      * @param type
//      * @return 
//      */
//     public Result findLatestResultSummary(int type);
// }
// 
// Path: src/main/java/com/ksa/myanmarlottery/repository/ScheduleRepository.java
// public interface ScheduleRepository {
//     List<ScheduleItem> findAll();
//     ScheduleItem insertOrUpdateItem(ScheduleItem item);
//     ScheduleItem findItemByID(String senderID);
//     void deleteItem(String id);
// }


import com.ksa.myanmarlottery.model.ScheduleItem;
import com.ksa.myanmarlottery.repository.ResultRepository;
import com.ksa.myanmarlottery.repository.ScheduleRepository;
import java.util.List;
import org.junit.Assert;
import static org.junit.Assert.*;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.test.context.junit4.SpringRunner;
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ksa.myanmarlottery.repo;


/**
 *
 * @author Kyawswa
 */
@Ignore
@RunWith(SpringRunner.class)
@DataJpaTest
@ComponentScan({"com.ksa.myanmarlottery"})
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class ScheduleRepositoryTest {
    
    @Autowired
    private ScheduleRepository repository;
    
    @Test
    public void testInsert() {
        ScheduleItem item = new ScheduleItem("01", 1, 1, "200 u 123456");
        item.getParam().add("u");
        item.getParam().add("123456");
        
        ScheduleItem result = repository.insertOrUpdateItem(item);
        
        assertNotNull(result);
        assertEquals(result.getRecipientID(), "01");
        assertEquals(result.getOriginParam(), "200 u 123456");
        assertEquals(result.getParam().get(0), "u");
        assertEquals(result.getParam().get(1), "123456");
    }
    
    @Test
    public void testFindById() {
// Path: src/main/java/com/ksa/myanmarlottery/model/ScheduleItem.java
// @Entity
// @NamedQueries({
//     @NamedQuery(
//         name = "scheduleItem.findAll",
//         query = "from ScheduleItem s"
//     )}
// )
// public class ScheduleItem implements Serializable {
//     
//     @Id
//     private String recipientID;
//     
//     // 500 or 200
//     private int lotteryType;
//     
//     // query by range or specific query
//     private int queryType;
//     
//     @ElementCollection
//     @CollectionTable(name="param_table", joinColumns=@JoinColumn(name="recipient_id"))
//     @Column(name="params")
//     @OrderColumn(name="param_index")
//     private List<String> param = new ArrayList<>();
//     
//     private String originParam;
//     
//     @Temporal(TemporalType.TIMESTAMP)
//     private Date creationDate = new Date();
// 
//     public ScheduleItem() {}
// 
//     public ScheduleItem(String recipientID, int lotteryType, int queryType, String originParam) {
//         this.recipientID = recipientID;
//         this.lotteryType = lotteryType;
//         this.queryType = queryType;
//         this.originParam = originParam;
//     }
// 
//     public String getOriginParam() {
//         return originParam;
//     }
// 
//     public void setOriginParam(String originParam) {
//         this.originParam = originParam;
//     }
//     
//     public String getRecipientID() {
//         return recipientID;
//     }
// 
//     public void setRecipientID(String recipientID) {
//         this.recipientID = recipientID;
//     }
// 
//     public int getLotteryType() {
//         return lotteryType;
//     }
// 
//     public void setLotteryType(int lotteryType) {
//         this.lotteryType = lotteryType;
//     }
// 
//     public int getQueryType() {
//         return queryType;
//     }
// 
//     public void setQueryType(int queryType) {
//         this.queryType = queryType;
//     }
// 
//     public List<String> getParam() {
//         return param;
//     }
// 
//     public void setParam(List<String> param) {
//         this.param = param;
//     }
// 
//     public Date getCreationDate() {
//         return creationDate;
//     }
// 
//     public void setCreationDate(Date creationDate) {
//         this.creationDate = creationDate;
//     }
// 
// }
// 
// Path: src/main/java/com/ksa/myanmarlottery/repository/ResultRepository.java
// public interface ResultRepository {
//     Result insert(Result result);
//     void deleteByType(int type);    
// 
//     /**
//      * 
//      * @param minIndex
//      * @param maxIndex
//      * @param points
//      * @param type
//      * @return 
//      */
//     public List<Prize> findPrizeByCode(int minIndex, int maxIndex, List<Integer> points, int type);
// 
//     /**
//      * 
//      * @param codeIndex
//      * @param startPoint
//      * @param endPoint
//      * @param startFivePt
//      * @param endFivePt
//      * @param startFourPt
//      * @param endFourPt
//      * @param startThreePt
//      * @param endThreePt
//      * @param startTwoPt
//      * @param endTwoPt
//      * @param type
//      * @return 
//      */
//     public List<Prize> findPrizeByPoints(int codeIndex, int startPoint, int endPoint,
//                                         int startFivePt, int endFivePt, int startFourPt, 
//                                         int endFourPt, int startThreePt, int endThreePt,
//                                         int startTwoPt, int endTwoPt, int type);
//         
//     public Result findResultByType(int type);
//     /**
//      * find prize on latest result by codeNo and type
//      * @param codePoints
//      * @param type
//      * @return 
//      */
//     public List<Prize> findPrizeByResultType(Map<String,List<Integer>> codePoints, int type);
// 
//     /**
//      * find only latest result information WITHOUT prize list.
//      * @param type
//      * @return 
//      */
//     public Result findLatestResultSummary(int type);
// }
// 
// Path: src/main/java/com/ksa/myanmarlottery/repository/ScheduleRepository.java
// public interface ScheduleRepository {
//     List<ScheduleItem> findAll();
//     ScheduleItem insertOrUpdateItem(ScheduleItem item);
//     ScheduleItem findItemByID(String senderID);
//     void deleteItem(String id);
// }


// Path: src/test/java/com/ksa/myanmarlottery/repo/ScheduleRepositoryTest.java
import com.ksa.myanmarlottery.model.ScheduleItem;
import com.ksa.myanmarlottery.repository.ResultRepository;
import com.ksa.myanmarlottery.repository.ScheduleRepository;
import java.util.List;
import org.junit.Assert;
import static org.junit.Assert.*;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.test.context.junit4.SpringRunner;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ksa.myanmarlottery.repo;


/**
 *
 * @author Kyawswa
 */
@Ignore
@RunWith(SpringRunner.class)
@DataJpaTest
@ComponentScan({"com.ksa.myanmarlottery"})
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class ScheduleRepositoryTest {
    
    @Autowired
    private ScheduleRepository repository;
    
    @Test
    public void testInsert() {
        ScheduleItem item = new ScheduleItem("01", 1, 1, "200 u 123456");
        item.getParam().add("u");
        item.getParam().add("123456");
        
        ScheduleItem result = repository.insertOrUpdateItem(item);
        
        assertNotNull(result);
        assertEquals(result.getRecipientID(), "01");
        assertEquals(result.getOriginParam(), "200 u 123456");
        assertEquals(result.getParam().get(0), "u");
        assertEquals(result.getParam().get(1), "123456");
    }
    
    @Test
    public void testFindById() {
        ScheduleItem item = new ScheduleItem("01", 1, 1, "200 u 123456");