Skip to content

Commit

Permalink
Refactor Announcements and AnnouncementsService (#526)
Browse files Browse the repository at this point in the history
  • Loading branch information
JorWo authored Jan 27, 2024
1 parent ec64dd4 commit 91e0792
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 95 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -669,11 +669,11 @@ public ResponseEntity getAsyncJobResult(@RequestHeader(CURRENT_USER_KEY) String
/**
* Get the list of active announcements to display.
*/
@GetMapping(value = "/announcements/active")
public ResponseEntity activeAnnouncements() {
@GetMapping(value = "/announcements")
public ResponseEntity getAnnouncements() {
logger.info("Entered REST activeAnnouncements...");
return ResponseEntity
.ok()
.body(announcementsService.activeAnnouncements());
.body(announcementsService.getAnnouncements());
}
}
17 changes: 2 additions & 15 deletions src/main/java/edu/hawaii/its/api/service/AnnouncementsService.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,12 @@
package edu.hawaii.its.api.service;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import edu.hawaii.its.api.type.Announcement;
import edu.hawaii.its.api.type.Announcements;
import edu.hawaii.its.api.util.JsonUtil;
import edu.hawaii.its.api.wrapper.AttributesResult;
import edu.hawaii.its.api.wrapper.FindAttributesResults;

@Service
Expand All @@ -28,17 +22,10 @@ public class AnnouncementsService {
@Autowired
private GrouperApiService grouperApiService;

public Announcements setAnnouncements(AttributesResult attributesResult) {
List<Announcement> announcementsList = new ArrayList<>();
announcementsList = JsonUtil.asList(attributesResult.getDescription(), Announcement.class);
return new Announcements(announcementsList);
}

public List<String> activeAnnouncements() {
public Announcements getAnnouncements() {
FindAttributesResults findAttributesResults = grouperApiService.findAttributesResults(
ANNOUNCEMENTS_ATTR_DEF,
ANNOUNCEMENTS_ATTR_NAME);
Announcements activeAnnouncements = setAnnouncements(findAttributesResults.getResult());
return activeAnnouncements.validMessages(activeAnnouncements.getAnnouncements());
return new Announcements(findAttributesResults);
}
}
46 changes: 25 additions & 21 deletions src/main/java/edu/hawaii/its/api/type/Announcements.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,47 @@
import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;
@Service
import edu.hawaii.its.api.util.JsonUtil;
import edu.hawaii.its.api.wrapper.AttributesResult;
import edu.hawaii.its.api.wrapper.FindAttributesResults;

public class Announcements {
private String resultCode;
private List<Announcement> announcements = new ArrayList<>();
private List<Announcement> announcements;

public Announcements(FindAttributesResults findAttributesResults) {
setResultCode(findAttributesResults.getResultCode());
setAnnouncements(findAttributesResults.getResult());
}

public Announcements(List<Announcement> announcements) {
if (announcements != null) {
for (Announcement a : announcements) {
this.announcements.add(a);
}
setResultCode("SUCCESS");
}
setResultCode("SUCCESS");
setAnnouncements(announcements);
}

public Announcements() {
setResultCode("FAILURE");
setAnnouncements(new ArrayList<>());
}

private void setResultCode(String resultCode) {
this.resultCode = resultCode;
public String getResultCode() {
return resultCode;
}

public List<Announcement> getAnnouncements() {
return announcements;
}
public String getResultCode() {
return resultCode;

private void setResultCode(String resultCode) {
this.resultCode = resultCode;
}

public List<String> validMessages(List<Announcement> allGroupingsAnnouncements) {
List<String> validMessages = new ArrayList<>();
for (Announcement groupingsAnnouncement : allGroupingsAnnouncements) {
if (groupingsAnnouncement.getState() == Announcement.State.Active) {
validMessages.add(groupingsAnnouncement.getMessage());
}
}
return validMessages;
private void setAnnouncements(AttributesResult attributesResult) {
this.announcements = JsonUtil.asList(attributesResult.getDescription(), Announcement.class);
}

private void setAnnouncements(List<Announcement> announcements) {
this.announcements = announcements;
}

}
2 changes: 0 additions & 2 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,9 @@ groupings.api.for_memberships=${groupings.api.attributes}:for-memberships
groupings.api.last_modified=${groupings.api.for_groups}:last-modified
groupings.api.yyyymmddThhmm=${groupings.api.last_modified}:yyyymmddThhmm
groupings.api.uhgrouping=${groupings.api.for_groups}:uh-grouping

groupings.api.uhgroupings=${groupings.api.for_applications}:uhgroupings
groupings.api.announcements=${groupings.api.uhgroupings}:announcements
groupings.api.propertystring=${groupings.api.uhgroupings}:propertyString

groupings.api.destinations=${groupings.api.uhgrouping}:destinations
groupings.api.listserv=${groupings.api.destinations}:listserv
groupings.api.releasedgrouping=${groupings.api.destinations}:uhReleasedGrouping
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

import java.util.List;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -14,40 +12,22 @@

import edu.hawaii.its.api.configuration.SpringBootWebApplication;
import edu.hawaii.its.api.type.Announcements;
import edu.hawaii.its.api.wrapper.FindAttributesResults;

@ActiveProfiles("integrationTest")
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest(classes = { SpringBootWebApplication.class })
public class TestAnnouncementsService {
@Value("${groupings.api.announcements}")
private String ANNOUNCEMENTS_ATTR_NAME;
@Value("${groupings.api.propertystring}")
private String ANNOUNCEMENTS_ATTR_DEF;
@Value("${groupings.api.success}")
private String SUCCESS;
@Autowired
private AnnouncementsService announcementsService;
@Autowired
private GrouperApiService grouperApiService;

@Test
public void setAnnouncements() {
FindAttributesResults findAttributesResults = grouperApiService.findAttributesResults(
ANNOUNCEMENTS_ATTR_DEF,
ANNOUNCEMENTS_ATTR_NAME);
assertNotNull(findAttributesResults.getResults());
Announcements results = announcementsService.setAnnouncements(findAttributesResults.getResult());
assertNotNull(results);
assertNotNull(results.getAnnouncements());
assertEquals(SUCCESS, results.getResultCode());
public void getAnnouncementsTest() {
Announcements announcements = announcementsService.getAnnouncements();
assertNotNull(announcements);
assertNotNull(announcements.getAnnouncements());
assertEquals(SUCCESS, announcements.getResultCode());
}

@Test
public void activeAnnouncements() {
List<String> results = announcementsService.activeAnnouncements();
// Only when Grouper has this case specific data (will need to keep updating).
assertNotNull(results);
assertEquals("Test is now running on VMs featuring Java 17 (hello Spring Boot3)", results.get(0));
}
}
4 changes: 2 additions & 2 deletions src/test/java/edu/hawaii/its/api/type/AnnouncementTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class AnnouncementTest {
private LocalDateTime currentDateTime = LocalDateTime.now();

@BeforeEach
void setUp() {
public void setup() {
// Expired - start and end date is before the current local date time.
LocalDateTime start1 = LocalDateTime.parse("2023-06-07T00:00");
LocalDateTime end1 = LocalDateTime.parse("2023-06-15T00:00");
Expand All @@ -31,7 +31,7 @@ void setUp() {
}

@Test
void accessors() {
public void accessors() {
assertNotNull(expiredAnnouncement);
assertNotNull(activeAnnouncement);
assertNotNull(futureAnnouncement);
Expand Down
38 changes: 11 additions & 27 deletions src/test/java/edu/hawaii/its/api/type/AnnouncementsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class AnnouncementsTest {
private Announcements emptyAnnouncements;
private Announcements announcements;
private List<Announcement> announcementsList;
private Announcements emptyAnnouncements;
private List<Announcement> announcementList;
private LocalDateTime currentDateTime = LocalDateTime.now();

@BeforeEach
void setUp() {
public void setup() {
emptyAnnouncements = new Announcements();
announcementsList = new ArrayList<>();

LocalDateTime start1 = LocalDateTime.parse("2023-06-07T00:00");
LocalDateTime end1 = LocalDateTime.parse("2023-06-15T00:00");
Expand All @@ -27,40 +27,24 @@ void setUp() {
LocalDateTime start3 = currentDateTime.plusDays(5);
LocalDateTime end3 = currentDateTime.plusDays(10);

announcementsList.add(new Announcement("old message", start1, end1));
announcementsList.add(new Announcement("Test will be down for migration to new VMs featuring Java 17 (required for Spring Boot 3)", start2, end2));
announcementsList.add(new Announcement("Test is now running on VMs featuring Java 17 (hello Spring Boot3)", start3, end3));
announcements = new Announcements(announcementsList);
announcementList = new ArrayList<>();
announcementList.add(new Announcement("old message", start1, end1));
announcementList.add(new Announcement("Test will be down for migration to new VMs featuring Java 17 (required for Spring Boot 3)", start2, end2));
announcementList.add(new Announcement("Test is now running on VMs featuring Java 17 (hello Spring Boot3)", start3, end3));
announcements = new Announcements(announcementList);
}

@Test
void accessors() {
public void accessors() {
// Constructed with no parameters, an empty and invalid Announcements object.
assertNotNull(emptyAnnouncements);
assertEquals(new ArrayList<>(), emptyAnnouncements.getAnnouncements());
assertEquals("FAILURE", emptyAnnouncements.getResultCode());

// Constructed with parameters, a valid Announcements object.
assertNotNull(announcements);
assertEquals(announcementsList, announcements.getAnnouncements());
assertEquals(announcementList, announcements.getAnnouncements());
assertEquals("SUCCESS", announcements.getResultCode());
}

@Test
void validMessages() {
// Returns a List<String> object when constructed empty.
assertNotNull(announcements.validMessages(announcementsList));

// Returns one valid message.
List<String> expectedMessages = new ArrayList<>();
expectedMessages.add("Test will be down for migration to new VMs featuring Java 17 (required for Spring Boot 3)");
assertEquals(expectedMessages, announcements.validMessages(announcementsList));

// Returns all valid messages.
LocalDateTime start4 = currentDateTime.plusDays(-2);
LocalDateTime end4 = currentDateTime.plusDays(5);
announcementsList.add(new Announcement("second valid message", start4, end4));
expectedMessages.add("second valid message");
assertEquals(expectedMessages, announcements.validMessages(announcementsList));
}
}

0 comments on commit 91e0792

Please sign in to comment.