Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/main/java/edu/tamu/app/model/AbstractIdea.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ public abstract class AbstractIdea extends ValidatingBaseEntity {

public AbstractIdea() {
super();
this.modelValidator = new IdeaValidator();
}

public AbstractIdea(String title, String description) {
Expand Down
15 changes: 12 additions & 3 deletions src/main/java/edu/tamu/app/model/FeatureProposal.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static org.hibernate.annotations.FetchMode.SELECT;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

import javax.persistence.CascadeType;
Expand All @@ -20,6 +21,8 @@
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;

import edu.tamu.app.model.validation.FeatureProposalValidator;

@Entity
@JsonIgnoreProperties(value = { "voters" }, allowGetters = true)
public class FeatureProposal extends AbstractIdea {
Expand All @@ -41,6 +44,7 @@ public class FeatureProposal extends AbstractIdea {

public FeatureProposal() {
super();
this.modelValidator = new FeatureProposalValidator();
setup();
}

Expand Down Expand Up @@ -79,15 +83,20 @@ public void setIdeas(List<Idea> ideas) {
this.ideas.forEach(idea -> {
removeVoter(idea.getAuthor());
});
this.ideas = ideas;
HashSet<Idea> ideaSet = new HashSet<Idea>();
ideaSet.addAll(ideas);
this.ideas.clear();
this.ideas.addAll(ideaSet);
this.ideas.forEach(idea -> {
addVoter(idea.getAuthor());
});
}

public void addIdea(Idea idea) {
this.ideas.add(idea);
addVoter(idea.getAuthor());
if (!this.ideas.contains(idea)) {
this.ideas.add(idea);
addVoter(idea.getAuthor());
}
}

public void removeIdea(Idea idea) {
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/edu/tamu/app/model/Idea.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import javax.persistence.Entity;

import edu.tamu.app.model.request.ServiceRequest;
import edu.tamu.app.model.validation.IdeaValidator;

@Entity
public class Idea extends AbstractIdea {
Expand All @@ -13,6 +14,7 @@ public class Idea extends AbstractIdea {

public Idea() {
super();
this.modelValidator = new IdeaValidator();
this.elevated = false;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package edu.tamu.app.model.validation;

import edu.tamu.weaver.validation.model.InputValidationType;
import edu.tamu.weaver.validation.validators.BaseModelValidator;
import edu.tamu.weaver.validation.validators.InputValidator;

public class FeatureProposalValidator extends BaseModelValidator {

public FeatureProposalValidator() {
String titleProperty = "title";
this.addInputValidator(new InputValidator(InputValidationType.required, "Feature Proposals require a title", titleProperty, true));

String serviceProperty = "service";
this.addInputValidator(new InputValidator(InputValidationType.required, "Feature Proposals require a Service", serviceProperty, true));
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
package edu.tamu.app.model.validation;

import edu.tamu.weaver.validation.model.InputValidationType;
import edu.tamu.weaver.validation.validators.BaseModelValidator;
import edu.tamu.weaver.validation.validators.InputValidator;

public class IdeaValidator extends BaseModelValidator {

public IdeaValidator() {

String titleProperty = "title";
this.addInputValidator(new InputValidator(InputValidationType.required, "Ideas require a title", titleProperty, true));

String serviceProperty = "service";
this.addInputValidator(new InputValidator(InputValidationType.required, "Ideas require a Service", serviceProperty, true));
}

}
4 changes: 3 additions & 1 deletion src/test/java/edu/tamu/app/model/FeatureProposalTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -146,14 +146,16 @@ public void testElevateIdea() throws UserNotFoundException {
assertEquals("The number of FeatureProposals did not increase by one", initialCount + 1, featureProposalRepo.count());
}

@Test(expected = InvalidDataAccessApiUsageException.class)
@Test
public void testDuplicateIdea() throws UserNotFoundException {
long initialCount = featureProposalRepo.count();
Idea testIdea = ideaRepo.create(new Idea(TEST_ALTERNATIVE_FEATURE_PROPOSAL_TITLE, TEST_ALTERNATIVE_FEATURE_PROPOSAL_DESCRIPTION, testUser, service1), TEST_CREDENTIALS);
FeatureProposal featureProposal = featureProposalRepo.create(testIdea);
assertEquals("The number of FeatureProposals did not increase by one", initialCount + 1, featureProposalRepo.count());
long ideaCount = featureProposal.getIdeas().size();
featureProposal.addIdea(testIdea);
featureProposalRepo.save(featureProposal);
assertEquals("The number of Ideas on the FeatureProposal did not increase", ideaCount, featureProposal.getIdeas().size());
}

@Test(expected = DataIntegrityViolationException.class)
Expand Down