Skip to content

Commit fee2d0e

Browse files
authored
Merge pull request #51 from TAMULib/sprint4-staging-refinement
Sprint4 staging refinement
2 parents b11507b + e1b9c55 commit fee2d0e

6 files changed

Lines changed: 40 additions & 6 deletions

File tree

src/main/java/edu/tamu/app/model/AbstractIdea.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ public abstract class AbstractIdea extends ValidatingBaseEntity {
3838

3939
public AbstractIdea() {
4040
super();
41-
this.modelValidator = new IdeaValidator();
4241
}
4342

4443
public AbstractIdea(String title, String description) {

src/main/java/edu/tamu/app/model/FeatureProposal.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.hibernate.annotations.FetchMode.SELECT;
55

66
import java.util.ArrayList;
7+
import java.util.HashSet;
78
import java.util.List;
89

910
import javax.persistence.CascadeType;
@@ -20,6 +21,8 @@
2021
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2122
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
2223

24+
import edu.tamu.app.model.validation.FeatureProposalValidator;
25+
2326
@Entity
2427
@JsonIgnoreProperties(value = { "voters" }, allowGetters = true)
2528
public class FeatureProposal extends AbstractIdea {
@@ -41,6 +44,7 @@ public class FeatureProposal extends AbstractIdea {
4144

4245
public FeatureProposal() {
4346
super();
47+
this.modelValidator = new FeatureProposalValidator();
4448
setup();
4549
}
4650

@@ -79,15 +83,20 @@ public void setIdeas(List<Idea> ideas) {
7983
this.ideas.forEach(idea -> {
8084
removeVoter(idea.getAuthor());
8185
});
82-
this.ideas = ideas;
86+
HashSet<Idea> ideaSet = new HashSet<Idea>();
87+
ideaSet.addAll(ideas);
88+
this.ideas.clear();
89+
this.ideas.addAll(ideaSet);
8390
this.ideas.forEach(idea -> {
8491
addVoter(idea.getAuthor());
8592
});
8693
}
8794

8895
public void addIdea(Idea idea) {
89-
this.ideas.add(idea);
90-
addVoter(idea.getAuthor());
96+
if (!this.ideas.contains(idea)) {
97+
this.ideas.add(idea);
98+
addVoter(idea.getAuthor());
99+
}
91100
}
92101

93102
public void removeIdea(Idea idea) {

src/main/java/edu/tamu/app/model/Idea.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import javax.persistence.Entity;
55

66
import edu.tamu.app.model.request.ServiceRequest;
7+
import edu.tamu.app.model.validation.IdeaValidator;
78

89
@Entity
910
public class Idea extends AbstractIdea {
@@ -13,6 +14,7 @@ public class Idea extends AbstractIdea {
1314

1415
public Idea() {
1516
super();
17+
this.modelValidator = new IdeaValidator();
1618
this.elevated = false;
1719
}
1820

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package edu.tamu.app.model.validation;
2+
3+
import edu.tamu.weaver.validation.model.InputValidationType;
4+
import edu.tamu.weaver.validation.validators.BaseModelValidator;
5+
import edu.tamu.weaver.validation.validators.InputValidator;
6+
7+
public class FeatureProposalValidator extends BaseModelValidator {
8+
9+
public FeatureProposalValidator() {
10+
String titleProperty = "title";
11+
this.addInputValidator(new InputValidator(InputValidationType.required, "Feature Proposals require a title", titleProperty, true));
12+
13+
String serviceProperty = "service";
14+
this.addInputValidator(new InputValidator(InputValidationType.required, "Feature Proposals require a Service", serviceProperty, true));
15+
}
16+
}
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
package edu.tamu.app.model.validation;
22

3+
import edu.tamu.weaver.validation.model.InputValidationType;
34
import edu.tamu.weaver.validation.validators.BaseModelValidator;
5+
import edu.tamu.weaver.validation.validators.InputValidator;
46

57
public class IdeaValidator extends BaseModelValidator {
68

79
public IdeaValidator() {
8-
10+
String titleProperty = "title";
11+
this.addInputValidator(new InputValidator(InputValidationType.required, "Ideas require a title", titleProperty, true));
12+
13+
String serviceProperty = "service";
14+
this.addInputValidator(new InputValidator(InputValidationType.required, "Ideas require a Service", serviceProperty, true));
915
}
1016

1117
}

src/test/java/edu/tamu/app/model/FeatureProposalTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,16 @@ public void testElevateIdea() throws UserNotFoundException {
146146
assertEquals("The number of FeatureProposals did not increase by one", initialCount + 1, featureProposalRepo.count());
147147
}
148148

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

159161
@Test(expected = DataIntegrityViolationException.class)

0 commit comments

Comments
 (0)