// Path: app/src/main/java/de/codecentric/dao/impl/JpaLinkDao.java
// @Repository("linkDao")
// @Transactional
// public class JpaLinkDao implements LinkDao {
// 
//     @PersistenceContext
//     private EntityManager em;
// 
//     public JpaLinkDao() {
//     }
// 
//     // test constructor
//     public JpaLinkDao(EntityManager em) {
//         this.em = em;
//     }
// 
//     @SuppressWarnings("unchecked")
//     public List<Link> getLinksBySessionId(Long sessionId) {
//         Query query = em.createNamedQuery("findLinksForSession");
//         return query.setParameter("sessionId", sessionId).getResultList();
//     }
// 
//     public void saveLink(Link link) {
//         em.merge(link);
//     }
// }
// 
// Path: app/src/main/java/de/codecentric/domain/Link.java
// @Entity(name = "link")
// @NamedQueries({ @NamedQuery(name = "findLinksForSession", query = "from link where sessionId=:sessionId order by date desc"), })
// public class Link {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     private long id;
// 
//     private Date date;
// 
//     @Lob
//     private String link;
//     private String comment;
//     private Long sessionId;
// 
//     public Link() {
//     }
// 
//     public Link(Date date, String comment, String link, Long sessionId) {
//         super();
//         this.date = date;
//         this.comment = comment;
//         this.link = link;
//         this.sessionId = sessionId;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public Date getDate() {
//         return date;
//     }
// 
//     public void setDate(Date date) {
//         this.date = date;
//     }
// 
//     public String getComment() {
//         return comment;
//     }
// 
//     public void setComment(String comment) {
//         this.comment = comment;
//     }
// 
//     public String getLink() {
//         return link;
//     }
// 
//     public void setLink(String link) {
//         this.link = link;
//     }
// 
//     public Long getSessionId() {
//         return sessionId;
//     }
// 
//     public void setSessionId(Long sessionId) {
//         this.sessionId = sessionId;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((comment == null) ? 0 : comment.hashCode());
//         result = prime * result + ((date == null) ? 0 : date.hashCode());
//         result = prime * result + (int) (id ^ (id >>> 32));
//         result = prime * result + ((link == null) ? 0 : link.hashCode());
//         result = prime * result + ((sessionId == null) ? 0 : sessionId.hashCode());
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null) {
//             return false;
//         }
//         if (getClass() != obj.getClass()) {
//             return false;
//         }
//         Link other = (Link) obj;
//         if (comment == null) {
//             if (other.comment != null) {
//                 return false;
//             }
//         } else if (!comment.equals(other.comment))
//             return false;
//         if (date == null) {
//             if (other.date != null) {
//                 return false;
//             }
//         } else if (!date.equals(other.date)) {
//             return false;
//         }
//         if (id != other.id) {
//             return false;
//         }
//         if (link == null) {
//             if (other.link != null) {
//                 return false;
//             }
//         } else if (!link.equals(other.link))
//             return false;
//         if (sessionId == null) {
//             if (other.sessionId != null) {
//                 return false;
//             }
//         } else if (!sessionId.equals(other.sessionId)) {
//             return false;
//         }
//         return true;
//     }
// }


import static org.mockito.Mockito.verify;
import java.util.Date;
import javax.persistence.EntityManager;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import de.codecentric.dao.impl.JpaLinkDao;
import de.codecentric.domain.Link;

package de.codecentric.domain;






public class JpaLinkDaoTest {

    @Mock
    private EntityManager emMock;
    private JpaLinkDao dao;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        dao = new JpaLinkDao(emMock);
    }

    @Test
    public void shouldSaveLink() {

// Path: app/src/main/java/de/codecentric/dao/impl/JpaLinkDao.java
// @Repository("linkDao")
// @Transactional
// public class JpaLinkDao implements LinkDao {
// 
//     @PersistenceContext
//     private EntityManager em;
// 
//     public JpaLinkDao() {
//     }
// 
//     // test constructor
//     public JpaLinkDao(EntityManager em) {
//         this.em = em;
//     }
// 
//     @SuppressWarnings("unchecked")
//     public List<Link> getLinksBySessionId(Long sessionId) {
//         Query query = em.createNamedQuery("findLinksForSession");
//         return query.setParameter("sessionId", sessionId).getResultList();
//     }
// 
//     public void saveLink(Link link) {
//         em.merge(link);
//     }
// }
// 
// Path: app/src/main/java/de/codecentric/domain/Link.java
// @Entity(name = "link")
// @NamedQueries({ @NamedQuery(name = "findLinksForSession", query = "from link where sessionId=:sessionId order by date desc"), })
// public class Link {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     private long id;
// 
//     private Date date;
// 
//     @Lob
//     private String link;
//     private String comment;
//     private Long sessionId;
// 
//     public Link() {
//     }
// 
//     public Link(Date date, String comment, String link, Long sessionId) {
//         super();
//         this.date = date;
//         this.comment = comment;
//         this.link = link;
//         this.sessionId = sessionId;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public Date getDate() {
//         return date;
//     }
// 
//     public void setDate(Date date) {
//         this.date = date;
//     }
// 
//     public String getComment() {
//         return comment;
//     }
// 
//     public void setComment(String comment) {
//         this.comment = comment;
//     }
// 
//     public String getLink() {
//         return link;
//     }
// 
//     public void setLink(String link) {
//         this.link = link;
//     }
// 
//     public Long getSessionId() {
//         return sessionId;
//     }
// 
//     public void setSessionId(Long sessionId) {
//         this.sessionId = sessionId;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((comment == null) ? 0 : comment.hashCode());
//         result = prime * result + ((date == null) ? 0 : date.hashCode());
//         result = prime * result + (int) (id ^ (id >>> 32));
//         result = prime * result + ((link == null) ? 0 : link.hashCode());
//         result = prime * result + ((sessionId == null) ? 0 : sessionId.hashCode());
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null) {
//             return false;
//         }
//         if (getClass() != obj.getClass()) {
//             return false;
//         }
//         Link other = (Link) obj;
//         if (comment == null) {
//             if (other.comment != null) {
//                 return false;
//             }
//         } else if (!comment.equals(other.comment))
//             return false;
//         if (date == null) {
//             if (other.date != null) {
//                 return false;
//             }
//         } else if (!date.equals(other.date)) {
//             return false;
//         }
//         if (id != other.id) {
//             return false;
//         }
//         if (link == null) {
//             if (other.link != null) {
//                 return false;
//             }
//         } else if (!link.equals(other.link))
//             return false;
//         if (sessionId == null) {
//             if (other.sessionId != null) {
//                 return false;
//             }
//         } else if (!sessionId.equals(other.sessionId)) {
//             return false;
//         }
//         return true;
//     }
// }


// Path: app/src/test/java/de/codecentric/domain/JpaLinkDaoTest.java
import static org.mockito.Mockito.verify;
import java.util.Date;
import javax.persistence.EntityManager;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import de.codecentric.dao.impl.JpaLinkDao;
import de.codecentric.domain.Link;

package de.codecentric.domain;






public class JpaLinkDaoTest {

    @Mock
    private EntityManager emMock;
    private JpaLinkDao dao;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        dao = new JpaLinkDao(emMock);
    }

    @Test
    public void shouldSaveLink() {

        Link link = new Link();
