From 46c1a0f4aebf6c2698cc80c7f705ea99dda73900 Mon Sep 17 00:00:00 2001 From: Marius Merkevicius Date: Mon, 17 Oct 2016 08:10:06 +0300 Subject: [PATCH] Formatting --- .../java/net/rcarz/utils/WorklogUtils.java | 47 ++--- .../rcarz/jiraclient/IssueWorklogTest.java | 187 +++++++++--------- .../utils/WorklogUtilsFormatDurationTest.java | 109 +++++----- 3 files changed, 175 insertions(+), 168 deletions(-) diff --git a/src/main/java/net/rcarz/utils/WorklogUtils.java b/src/main/java/net/rcarz/utils/WorklogUtils.java index cf0d44e..d50d29a 100644 --- a/src/main/java/net/rcarz/utils/WorklogUtils.java +++ b/src/main/java/net/rcarz/utils/WorklogUtils.java @@ -11,29 +11,30 @@ import org.joda.time.PeriodType; */ public class WorklogUtils { - /** - * Formats duration time into pretty string format - * Does not output seconds - * @param durationInSeconds provided duration to format - * @return formatted duration - */ - public static String formatDurationFromSeconds(long durationInSeconds) { - if (durationInSeconds < 60) - return "0m"; - StringBuilder builder = new StringBuilder(); - PeriodType type = PeriodType.forFields(new DurationFieldType[]{ - DurationFieldType.hours(), - DurationFieldType.minutes() - }); + /** + * Formats duration time into pretty string format + * Does not output seconds + * + * @param durationInSeconds provided duration to format + * @return formatted duration + */ + public static String formatDurationFromSeconds(long durationInSeconds) { + if (durationInSeconds < 60) + return "0m"; + StringBuilder builder = new StringBuilder(); + PeriodType type = PeriodType.forFields(new DurationFieldType[]{ + DurationFieldType.hours(), + DurationFieldType.minutes() + }); - Period period = new Period(1000 * durationInSeconds, type); - if (period.getHours() != 0) - builder.append(period.getHours()).append("h").append(" "); - if (period.getMinutes() != 0) - builder.append(period.getMinutes()).append("m").append(" "); - if ((builder.length() > 0) && builder.charAt(builder.length()-1) == " ".charAt(0)) - builder.deleteCharAt(builder.length()-1); - return builder.toString(); - } + Period period = new Period(1000 * durationInSeconds, type); + if (period.getHours() != 0) + builder.append(period.getHours()).append("h").append(" "); + if (period.getMinutes() != 0) + builder.append(period.getMinutes()).append("m").append(" "); + if ((builder.length() > 0) && builder.charAt(builder.length() - 1) == " ".charAt(0)) + builder.deleteCharAt(builder.length() - 1); + return builder.toString(); + } } diff --git a/src/test/java/net/rcarz/jiraclient/IssueWorklogTest.java b/src/test/java/net/rcarz/jiraclient/IssueWorklogTest.java index 03e1bd0..49bb1f1 100644 --- a/src/test/java/net/rcarz/jiraclient/IssueWorklogTest.java +++ b/src/test/java/net/rcarz/jiraclient/IssueWorklogTest.java @@ -7,124 +7,121 @@ import org.joda.time.DateTime; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.*; +import static org.junit.Assert.assertNotNull; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyLong; import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.doCallRealMethod; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.*; /** * Created by mariusmerkevicius on 1/30/16. */ public class IssueWorklogTest { - @Test - public void testParsing_inputValid_shouldCreateJsonObject() throws Exception { - // Arrange - // Act - JSONObject worklogObject = (JSONObject) JSONSerializer.toJSON(RESPONSE_WORKLOG_BODY); + @Test + public void testParsing_inputValid_shouldCreateJsonObject() throws Exception { + // Arrange + // Act + JSONObject worklogObject = (JSONObject) JSONSerializer.toJSON(RESPONSE_WORKLOG_BODY); - // Assert - assertNotNull(worklogObject); - } - - @Test - public void testParsing_inputValidJson_shouldCreateWorklog() throws Exception { - // Arrange - // Act - WorkLog workLog = new WorkLog(mock(RestClient.class), (JSONObject) JSONSerializer.toJSON(RESPONSE_WORKLOG_BODY)); - - // Assert - assertThat(workLog).isNotNull(); - assertThat(workLog.getAuthor()).isNotNull(); - assertThat(workLog.getSelf()).isEqualTo("https://jira.test.lt/rest/api/2/issue/32374/worklog/80720"); - assertThat(workLog.getId()).isEqualTo("80720"); - assertThat(workLog.getComment()).isEqualTo("Test"); - assertThat(workLog.getCreatedDate().getTime()).isEqualTo(1454104800000L); - assertThat(workLog.getUpdatedDate().getTime()).isEqualTo(1454104800000L); - assertThat(workLog.getStarted().getTime()).isEqualTo(1453879853201L); - assertThat(workLog.getTimeSpent()).isEqualTo("5m"); - assertThat(workLog.getTimeSpentSeconds()).isEqualTo(300); - } - - @Test - public void testAdding_inputValid_shouldInvokeAdding() throws Exception { - // Arrange - Issue issue = mock(Issue.class); - issue.restclient = mock(RestClient.class); - doCallRealMethod().when(issue).addWorkLog(anyString(), any(DateTime.class), anyLong()); - - // Act - issue.addWorkLog("test", DateTime.now(), 60); - - // Assert - verify(issue.restclient).post(anyString(), any(JSON.class)); - } - - @Test - public void testAdding_inputNullComment_shouldNotAdd() throws Exception { - // Arrange - Issue issue = mock(Issue.class); - issue.restclient = mock(RestClient.class); - doCallRealMethod().when(issue).addWorkLog(anyString(), any(DateTime.class), anyLong()); - - // Act - try { - issue.addWorkLog(null, DateTime.now(), 120); - } catch (JiraException e) { - assertThat(e).hasMessageContaining("Failed add worklog to issue"); + // Assert + assertNotNull(worklogObject); } - // Assert - verify(issue.restclient, never()).post(anyString(), any(JSON.class)); - } + @Test + public void testParsing_inputValidJson_shouldCreateWorklog() throws Exception { + // Arrange + // Act + WorkLog workLog = new WorkLog(mock(RestClient.class), (JSONObject) JSONSerializer.toJSON(RESPONSE_WORKLOG_BODY)); - @Test - public void testAdding_inputNullDateTime_shouldNotAdd() throws Exception { - // Arrange - Issue issue = mock(Issue.class); - issue.restclient = mock(RestClient.class); - doCallRealMethod().when(issue).addWorkLog(anyString(), any(DateTime.class), anyLong()); - - // Act - try { - issue.addWorkLog("asdf", null, 120); - } catch (JiraException e) { - assertThat(e).hasMessageContaining("Failed add worklog to issue"); + // Assert + assertThat(workLog).isNotNull(); + assertThat(workLog.getAuthor()).isNotNull(); + assertThat(workLog.getSelf()).isEqualTo("https://jira.test.lt/rest/api/2/issue/32374/worklog/80720"); + assertThat(workLog.getId()).isEqualTo("80720"); + assertThat(workLog.getComment()).isEqualTo("Test"); + assertThat(workLog.getCreatedDate().getTime()).isEqualTo(1454104800000L); + assertThat(workLog.getUpdatedDate().getTime()).isEqualTo(1454104800000L); + assertThat(workLog.getStarted().getTime()).isEqualTo(1453879853201L); + assertThat(workLog.getTimeSpent()).isEqualTo("5m"); + assertThat(workLog.getTimeSpentSeconds()).isEqualTo(300); } - // Assert - verify(issue.restclient, never()).post(anyString(), any(JSON.class)); - } + @Test + public void testAdding_inputValid_shouldInvokeAdding() throws Exception { + // Arrange + Issue issue = mock(Issue.class); + issue.restclient = mock(RestClient.class); + doCallRealMethod().when(issue).addWorkLog(anyString(), any(DateTime.class), anyLong()); - @Test - public void testAdding_inputDurationTooLow_shouldNotAdd() throws Exception { - // Arrange - Issue issue = mock(Issue.class); - issue.restclient = mock(RestClient.class); - doCallRealMethod().when(issue).addWorkLog(anyString(), any(DateTime.class), anyLong()); + // Act + issue.addWorkLog("test", DateTime.now(), 60); - // Act - try { - issue.addWorkLog("asdf", DateTime.now(), 30); - } catch (JiraException e) { - assertThat(e).hasMessageContaining("Failed add worklog to issue"); + // Assert + verify(issue.restclient).post(anyString(), any(JSON.class)); } - // Assert - verify(issue.restclient, never()).post(anyString(), any(JSON.class)); - } + @Test + public void testAdding_inputNullComment_shouldNotAdd() throws Exception { + // Arrange + Issue issue = mock(Issue.class); + issue.restclient = mock(RestClient.class); + doCallRealMethod().when(issue).addWorkLog(anyString(), any(DateTime.class), anyLong()); + + // Act + try { + issue.addWorkLog(null, DateTime.now(), 120); + } catch (JiraException e) { + assertThat(e).hasMessageContaining("Failed add worklog to issue"); + } + + // Assert + verify(issue.restclient, never()).post(anyString(), any(JSON.class)); + } + + @Test + public void testAdding_inputNullDateTime_shouldNotAdd() throws Exception { + // Arrange + Issue issue = mock(Issue.class); + issue.restclient = mock(RestClient.class); + doCallRealMethod().when(issue).addWorkLog(anyString(), any(DateTime.class), anyLong()); + + // Act + try { + issue.addWorkLog("asdf", null, 120); + } catch (JiraException e) { + assertThat(e).hasMessageContaining("Failed add worklog to issue"); + } + + // Assert + verify(issue.restclient, never()).post(anyString(), any(JSON.class)); + } + + @Test + public void testAdding_inputDurationTooLow_shouldNotAdd() throws Exception { + // Arrange + Issue issue = mock(Issue.class); + issue.restclient = mock(RestClient.class); + doCallRealMethod().when(issue).addWorkLog(anyString(), any(DateTime.class), anyLong()); + + // Act + try { + issue.addWorkLog("asdf", DateTime.now(), 30); + } catch (JiraException e) { + assertThat(e).hasMessageContaining("Failed add worklog to issue"); + } + + // Assert + verify(issue.restclient, never()).post(anyString(), any(JSON.class)); + } - //region Constants + //region Constants - // Mock response from jira - public static final String RESPONSE_WORKLOG_BODY = "{\"self\":\"https://jira.test.lt/rest/api/2/issue/32374/worklog/80720\",\"author\":{\"self\":\"https://jira.test.lt/rest/api/2/user?username=test%40test.lt\",\"name\":\"test@test.lt\",\"key\":\"test@test.lt\",\"emailAddress\":\"test@test.lt\",\"avatarUrls\":{\"48x48\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=48\",\"24x24\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=24\",\"16x16\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=16\",\"32x32\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=32\"},\"displayName\":\"Marius Merkevicius\",\"active\":true,\"timeZone\":\"Europe/Vilnius\"},\"updateAuthor\":{\"self\":\"https://jira.test.lt/rest/api/2/user?username=test%40test.lt\",\"name\":\"test@test.lt\",\"key\":\"test@test.lt\",\"emailAddress\":\"test@test.lt\",\"avatarUrls\":{\"48x48\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=48\",\"24x24\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=24\",\"16x16\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=16\",\"32x32\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=32\"},\"displayName\":\"Marius Merkevicius\",\"active\":true,\"timeZone\":\"Europe/Vilnius\"},\"comment\":\"Test\",\"created\":\"2016-01-30T20:46:16.583+0200\",\"updated\":\"2016-01-30T20:46:16.583+0200\",\"started\":\"2016-01-27T09:30:53.201+0200\",\"timeSpent\":\"5m\",\"timeSpentSeconds\":300,\"id\":\"80720\"}"; + // Mock response from jira - //endregion + public static final String RESPONSE_WORKLOG_BODY = "{\"self\":\"https://jira.test.lt/rest/api/2/issue/32374/worklog/80720\",\"author\":{\"self\":\"https://jira.test.lt/rest/api/2/user?username=test%40test.lt\",\"name\":\"test@test.lt\",\"key\":\"test@test.lt\",\"emailAddress\":\"test@test.lt\",\"avatarUrls\":{\"48x48\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=48\",\"24x24\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=24\",\"16x16\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=16\",\"32x32\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=32\"},\"displayName\":\"Marius Merkevicius\",\"active\":true,\"timeZone\":\"Europe/Vilnius\"},\"updateAuthor\":{\"self\":\"https://jira.test.lt/rest/api/2/user?username=test%40test.lt\",\"name\":\"test@test.lt\",\"key\":\"test@test.lt\",\"emailAddress\":\"test@test.lt\",\"avatarUrls\":{\"48x48\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=48\",\"24x24\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=24\",\"16x16\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=16\",\"32x32\":\"https://secure.gravatar.com/avatar/e4dacfe8f27cb89341bf990e556a4be0?d=mm&s=32\"},\"displayName\":\"Marius Merkevicius\",\"active\":true,\"timeZone\":\"Europe/Vilnius\"},\"comment\":\"Test\",\"created\":\"2016-01-30T20:46:16.583+0200\",\"updated\":\"2016-01-30T20:46:16.583+0200\",\"started\":\"2016-01-27T09:30:53.201+0200\",\"timeSpent\":\"5m\",\"timeSpentSeconds\":300,\"id\":\"80720\"}"; + //endregion } \ No newline at end of file diff --git a/src/test/java/net/rcarz/utils/WorklogUtilsFormatDurationTest.java b/src/test/java/net/rcarz/utils/WorklogUtilsFormatDurationTest.java index d7ca723..3447457 100644 --- a/src/test/java/net/rcarz/utils/WorklogUtilsFormatDurationTest.java +++ b/src/test/java/net/rcarz/utils/WorklogUtilsFormatDurationTest.java @@ -8,64 +8,73 @@ import static org.junit.Assert.assertEquals; * Created by mariusmerkevicius on 1/30/16. */ public class WorklogUtilsFormatDurationTest { - @Test - public void testEmpty() throws Exception { - assertEquals("0m", WorklogUtils.formatDurationFromSeconds(0)); - } - @Test - public void testNegative() throws Exception { - assertEquals("0m", WorklogUtils.formatDurationFromSeconds(-200)); - } + @Test + public void testEmpty() throws Exception { + assertEquals("0m", WorklogUtils.formatDurationFromSeconds(0)); + } - @Test public void testLowSecond() throws Exception { - assertEquals("0m", WorklogUtils.formatDurationFromSeconds(1)); - } + @Test + public void testNegative() throws Exception { + assertEquals("0m", WorklogUtils.formatDurationFromSeconds(-200)); + } - @Test public void testSeconds() throws Exception { - assertEquals("0m", WorklogUtils.formatDurationFromSeconds(59)); - } + @Test + public void testLowSecond() throws Exception { + assertEquals("0m", WorklogUtils.formatDurationFromSeconds(1)); + } - @Test public void testMinutes() throws Exception { - assertEquals("1m", WorklogUtils.formatDurationFromSeconds(60)); - } + @Test + public void testSeconds() throws Exception { + assertEquals("0m", WorklogUtils.formatDurationFromSeconds(59)); + } - @Test public void testMinutesAndSeconds() throws Exception { - assertEquals("1m", WorklogUtils.formatDurationFromSeconds( - 60 // 1 minute - + 2) // 2 seconds - ); - } + @Test + public void testMinutes() throws Exception { + assertEquals("1m", WorklogUtils.formatDurationFromSeconds(60)); + } - @Test public void testMinutesAndSeconds2() throws Exception { - assertEquals("2m", WorklogUtils.formatDurationFromSeconds( - 60 // 1 minute - + 72) // 72 seconds - ); - } + @Test + public void testMinutesAndSeconds() throws Exception { + assertEquals("1m", WorklogUtils.formatDurationFromSeconds( + 60 // 1 minute + + 2) // 2 seconds + ); + } - @Test public void testHours() throws Exception { - assertEquals("1h 10m", WorklogUtils.formatDurationFromSeconds( - (60 * 60) // 1 hour - + (10 * 60) // 10 minutes - + 3) // 3 seconds - ); - } + @Test + public void testMinutesAndSeconds2() throws Exception { + assertEquals("2m", WorklogUtils.formatDurationFromSeconds( + 60 // 1 minute + + 72) // 72 seconds + ); + } - @Test public void testDays() throws Exception { - assertEquals("50h 20m", WorklogUtils.formatDurationFromSeconds( - (60 * 60 * 50) // 50 hours - + (60 * 20) // 20 minutes - + (3) // s seconds - )); - } + @Test + public void testHours() throws Exception { + assertEquals("1h 10m", WorklogUtils.formatDurationFromSeconds( + (60 * 60) // 1 hour + + (10 * 60) // 10 minutes + + 3) // 3 seconds + ); + } - @Test public void testDays2() throws Exception { - assertEquals("50h 22m", WorklogUtils.formatDurationFromSeconds( - (60 * 60 * 50) // 50 hours - + (60 * 20) // 20 minutes - + (125) // 125 seconds - )); - } + @Test + public void testDays() throws Exception { + assertEquals("50h 20m", WorklogUtils.formatDurationFromSeconds( + (60 * 60 * 50) // 50 hours + + (60 * 20) // 20 minutes + + (3) // s seconds + )); + } + + @Test + public void testDays2() throws Exception { + assertEquals("50h 22m", WorklogUtils.formatDurationFromSeconds( + (60 * 60 * 50) // 50 hours + + (60 * 20) // 20 minutes + + (125) // 125 seconds + )); + } } \ No newline at end of file