diff --git a/src/main/java/edu/ntnu/idi/idatt/model/portfolio/Portfolio.java b/src/main/java/edu/ntnu/idi/idatt/model/portfolio/Portfolio.java index 9ba3bdc..77c738a 100644 --- a/src/main/java/edu/ntnu/idi/idatt/model/portfolio/Portfolio.java +++ b/src/main/java/edu/ntnu/idi/idatt/model/portfolio/Portfolio.java @@ -142,6 +142,10 @@ public BigDecimal getChangeFromStock() { BigDecimal costTotal = getShares().stream().map(s -> s.getTotalPurchasePrice()) .reduce(BigDecimal.ZERO, BigDecimal::add); + if (costTotal.compareTo(BigDecimal.ZERO) <= 0) { + return BigDecimal.ZERO; + } + return profitTotal.divide(costTotal, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); } diff --git a/src/test/java/edu/ntnu/idi/idatt/model/portfolio/PortfolioTest.java b/src/test/java/edu/ntnu/idi/idatt/model/portfolio/PortfolioTest.java index 857cf1d..872b55e 100644 --- a/src/test/java/edu/ntnu/idi/idatt/model/portfolio/PortfolioTest.java +++ b/src/test/java/edu/ntnu/idi/idatt/model/portfolio/PortfolioTest.java @@ -44,6 +44,11 @@ void addShare_shouldAddToPortfolio() { } + void addDefaultShare() { // Since test over works, we will use this to initialize + // the rest of the tests under. + portfolio.addShare(share); + } + @Test void getShares() { @@ -54,11 +59,6 @@ void getShares() { portfolio.getShares()); } - void addDefaultShare() { // Since test over works, we will use this to initialize - // the rest of the tests under. - portfolio.addShare(share); - } - @Test void getSharesBySymbol_shouldReturnShares() { addDefaultShare(); @@ -217,11 +217,18 @@ void getChangeFromStock_shouldReturnTotalFromPortfolioChange() { BigDecimal expected = profit .divide(totalCost, 2, RoundingMode.HALF_UP) - .multiply(BigDecimal.valueOf(100)); + .multiply(new BigDecimal("100")); assertEquals( expected, portfolio.getChangeFromStock()); } + @Test + void getChangeFromStock_emptyPortfolio() { + + assertEquals(BigDecimal.ZERO, portfolio.getChangeFromStock()); + + } + }