Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Add unit test for request service
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Oct 19, 2015
1 parent aec1468 commit 677a714
Show file tree
Hide file tree
Showing 12 changed files with 265 additions and 50 deletions.
1 change: 1 addition & 0 deletions docs/release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
* [1224912] (https://bugzilla.redhat.com/show_bug.cgi?id=1224912) - Filter "Last modified by translators other than <user>"
* [1213630](https://bugzilla.redhat.com/show_bug.cgi?id=1213630) - Webhook header needs to include cryptographic signature in header for identification
* [1214502](https://bugzilla.redhat.com/show_bug.cgi?id=1214502) - RFE: Grant project creation permission to certain sets of users
* [ZNTA-555](https://zanata.atlassian.net/browse/ZNTA-555) - Internal "user request management" and tracking

-----------------------

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@
public class LanguagePage extends BasePage {

private By contactCoordinatorsButton =
By.linkText("Contact Coordinators");
By.id("contact-coordinator");
private By saveButton = By.id("save-button");
private By moreActions = By.className("dropdown__toggle");
private By moreActions = By.id("more-action");
private By enableByDefault = By.id("enable-by-default");
private By membersTab = By.id("members_tab");
private By settingsTab = By.id("settings_tab");
Expand Down
5 changes: 5 additions & 0 deletions zanata-model/src/main/java/org/zanata/model/Request.java
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,11 @@ public static class EntityListener {
@PrePersist
private void prePersist(Request request) {
request.validFrom = new Date();
//make sure validFrom is not after validTo(set from service)
if (request.validTo != null
&& (request.validFrom.after(request.validTo))) {
request.validFrom = request.validTo;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ public List<LanguageRequest> getRequests() {
}
if (identity != null &&
identity.hasPermission(locale, "manage-language-team")) {
return requestServiceImpl.getOutstandingLanguageRequests(
return requestServiceImpl.getPendingLanguageRequests(
locale.getLocaleId());
}
return Lists.newArrayList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ public void requestAsReviewer() {
public void requestAsCoordinator() {
processRequest(false, false, true);
}

private void processRequest(boolean isRequestAsTranslator,
boolean isRequestAsReviewer,
boolean isRequestAsCoordinator) {
Expand Down Expand Up @@ -206,7 +206,8 @@ private void sendRequestEmail(boolean isRequestAsCoordinator,
}

public boolean isUserAlreadyRequest() {
return requestServiceImpl.isRequestExist(authenticatedAccount, getLocale());
return requestServiceImpl.isLanguageRequestExist(authenticatedAccount,
getLocale());
}

public void cancelRequest() {
Expand All @@ -219,7 +220,7 @@ public void cancelRequest() {
+ authenticatedAccount.getUsername() + "}";
requestServiceImpl.updateLanguageRequest(languageRequest.getId(),
authenticatedAccount, RequestState.CANCELLED, comment);

facesMessages.addGlobal(msgs.format("jsf.language.request.cancelled",
authenticatedAccount.getUsername()));
}
Expand Down
17 changes: 8 additions & 9 deletions zanata-war/src/main/java/org/zanata/dao/LanguageRequestDAO.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
package org.zanata.dao;

import com.google.common.collect.Lists;
import org.hibernate.Query;
import org.hibernate.Session;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.zanata.common.LocaleId;
import org.zanata.model.HAccount;
import org.zanata.model.HLocale;
import org.zanata.model.LanguageRequest;
import org.zanata.model.LocaleRole;
import org.zanata.model.type.RequestState;

import javax.annotation.Nullable;
import java.util.List;
import java.util.Set;

/**
* @author Alex Eng <a href="aeng@redhat.com">aeng@redhat.com</a>
Expand All @@ -29,7 +24,11 @@ public LanguageRequestDAO() {
super(LanguageRequest.class);
}

public LanguageRequest findRequesterOutstandingRequests(HAccount requester,
public LanguageRequestDAO(Session session) {
super(LanguageRequest.class, session);
}

public LanguageRequest findRequesterPendingRequests(HAccount requester,
LocaleId localeId) {
String query =
"from LanguageRequest req where req.locale.localeId = :localeId and req.request.requester.id = :requesterId and req.request.validTo is null";
Expand All @@ -41,14 +40,14 @@ public LanguageRequest findRequesterOutstandingRequests(HAccount requester,
return (LanguageRequest) q.uniqueResult();
}

public List<LanguageRequest> findOutstandingRequests(
public List<LanguageRequest> findPendingRequests(
List<LocaleId> localeIds) {
String query =
"from LanguageRequest req where req.request.validTo is null and req.locale.localeId in (:localeIds)";
Query q = getSession().createQuery(query)
.setParameterList("localeIds", localeIds)
.setCacheable(true).setComment(
"requestDAO.findOutstandingRequests");
"requestDAO.findPendingRequests");
return q.list();
}
}
29 changes: 29 additions & 0 deletions zanata-war/src/main/java/org/zanata/dao/RequestDAO.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
package org.zanata.dao;

import org.hibernate.Query;
import org.hibernate.Session;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.zanata.model.LanguageRequest;
import org.zanata.model.Request;

import java.util.List;

/**
* @author Alex Eng <a href="aeng@redhat.com">aeng@redhat.com</a>
*/
Expand All @@ -18,7 +23,31 @@ public RequestDAO() {
super(Request.class);
}

public RequestDAO(Session session) {
super(Request.class, session);
}

public Request getById(Long requestId) {
return findById(requestId);
}

public List<Request> getByEntityId(String entityId) {
String query =
"from Request req where req.entityId= :entityId order by req.validFrom";
Query q = getSession().createQuery(query)
.setParameter("entityId", entityId)
.setCacheable(true).setComment(
"requestDAO.getByEntityId");
return q.list();
}

public Request getPendingRequestByEntityId(String entityId) {
String query =
"from Request req where req.entityId= :entityId and req.validTo is null";
Query q = getSession().createQuery(query)
.setParameter("entityId", entityId)
.setCacheable(true).setComment(
"requestDAO.getPendingRequestByEntityId");
return (Request) q.uniqueResult();
}
}
18 changes: 15 additions & 3 deletions zanata-war/src/main/java/org/zanata/service/RequestService.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ LanguageRequest createLanguageRequest(HAccount requester,
* @param requester
* @param locale
*/
boolean isRequestExist(HAccount requester, HLocale locale);
boolean isLanguageRequestExist(HAccount requester, HLocale locale);

/**
* Update join language request
Expand All @@ -78,7 +78,7 @@ void updateLanguageRequest(Long requestId, HAccount actor,

/**
* Get pending language request for user
*
*
* @param localeId
*/
LanguageRequest getPendingLanguageRequests(HAccount account,
Expand All @@ -88,6 +88,18 @@ LanguageRequest getPendingLanguageRequests(HAccount account,
*
* @param Get outstanding language requests on languages
*/
List<LanguageRequest> getOutstandingLanguageRequests(
List<LanguageRequest> getPendingLanguageRequests(
LocaleId... localeIds);

/**
* Return pending request by entityId
* @param entityId
*/
Request getPendingRequestByEntityId(String entityId);

/**
* Return request including history by entityId
* @param entityId
*/
List<Request> getRequestByEntityId(String entityId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
import org.zanata.util.Event;

import javax.persistence.EntityNotFoundException;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
Expand Down Expand Up @@ -72,7 +71,7 @@ public LanguageRequest createLanguageRequest(HAccount requester,
//of the same requester, account and locale

LanguageRequest languageRequest =
languageRequestDAO.findRequesterOutstandingRequests(requester,
languageRequestDAO.findRequesterPendingRequests(requester,
locale.getLocaleId());

if (languageRequest != null) {
Expand All @@ -92,10 +91,10 @@ public LanguageRequest createLanguageRequest(HAccount requester,
}

@Override
public boolean isRequestExist(HAccount requester, HLocale locale) {
public boolean isLanguageRequestExist(HAccount requester, HLocale locale) {
LanguageRequest languageRequest =
languageRequestDAO.findRequesterOutstandingRequests(requester,
locale.getLocaleId());
languageRequestDAO.findRequesterPendingRequests(requester,
locale.getLocaleId());
return languageRequest != null;
}

Expand Down Expand Up @@ -142,15 +141,25 @@ public LanguageRequest getLanguageRequest(Long id) {
@Override
public LanguageRequest getPendingLanguageRequests(HAccount account,
LocaleId localeId) {
return languageRequestDAO.findRequesterOutstandingRequests(
account, localeId);
return languageRequestDAO.findRequesterPendingRequests(
account, localeId);
}

@Override
public List<LanguageRequest> getOutstandingLanguageRequests(
public List<LanguageRequest> getPendingLanguageRequests(
LocaleId... localeIds) {
return languageRequestDAO
.findOutstandingRequests(Lists.newArrayList(localeIds));
.findPendingRequests(Lists.newArrayList(localeIds));
}

@Override
public Request getPendingRequestByEntityId(String entityId) {
return requestDAO.getPendingRequestByEntityId(entityId);
}

@Override
public List<Request> getRequestByEntityId(String entityId) {
return requestDAO.getByEntityId(entityId);
}

/**
Expand Down
46 changes: 25 additions & 21 deletions zanata-war/src/main/webapp/language/language.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -189,29 +189,30 @@
</span>
</a>
</li>

<li class="tab__end">
<h:form styleClass="l--push-bottom-0 dropdown dropdown--tab dropdown--small dropdown--right dropdown--inline js-dropdown"
id="language-more-actions">
<a class="dropdown__toggle js-dropdown__toggle"
title="#{msgs['jsf.tooltip.MoreActions']}" href="#">
<i class="i i--ellipsis"></i>
</a>
<ul class="dropdown__content js-dropdown__content"
role="content" aria-labelledby="dropdownContent">
<li>
<a href="#" class="i__item--right"
data-toggle="modal" onclick="return false;"
data-target="#contactCoordinatorDialog">
#{msgs['jsf.contactLanguageTeamCoordinator']}
<i class="i i--plus i__item__icon"></i>
</a>
</li>
</ul>
</h:form>
</li>
</ui:fragment>

<li class="tab__end">
<h:form styleClass="l--push-bottom-0 dropdown dropdown--tab dropdown--small dropdown--right dropdown--inline js-dropdown"
id="language-more-actions">
<a class="dropdown__toggle js-dropdown__toggle" id="more-action"
title="#{msgs['jsf.tooltip.MoreActions']}" href="#">
<i class="i i--ellipsis"></i>
</a>
<ul class="dropdown__content js-dropdown__content"
role="content" aria-labelledby="dropdownContent">
<li>
<a href="#" class="i__item--right" id="contact-coordinator"
data-toggle="modal" onclick="return false;"
data-target="#contactCoordinatorDialog">
#{msgs['jsf.contactLanguageTeamCoordinator']}
<i class="i i--plus i__item__icon"></i>
</a>
</li>
</ul>
</h:form>
</li>


<ui:fragment rendered="#{identity.hasRole('admin')}">
<li class="tab__end">
<a id="settings_tab" href="#{languageURL}/settings"
Expand Down Expand Up @@ -246,5 +247,8 @@
</div>
</div>
</div>
<ui:fragment rendered="#{identity.loggedIn}">
<ui:include src="/WEB-INF/layout/language/contact_coordinator_modal.xhtml"/>
</ui:fragment>
</ui:define>
</ui:composition>
Original file line number Diff line number Diff line change
Expand Up @@ -292,8 +292,6 @@ public void requestToJoinLanguage() throws Exception {
assertThat(html).contains(msgs.format(
"jsf.email.joinrequest.UserRequestingToJoin",
fromName, fromLoginName, localeId, localeNativeName));
assertThat(html).contains(
htmlMessage);
assertThat(html).contains(
serverPath + "/language/view/" + localeId);
}
Expand Down

0 comments on commit 677a714

Please sign in to comment.