From b38821ee75b85cfcf1803f88f2092b4c742db2ac Mon Sep 17 00:00:00 2001 From: Michael Foiani Date: Sat, 10 Apr 2021 03:26:13 -0400 Subject: Have a functional fetch and processing that uses the offical edgar api. Need to opitmize with parameters in the query and loading in more trades (max is 100 filings). This will help remove any need to get filings from the frontend, along with no issues with paying for an api. --- src/test/java/edu/brown/cs/student/FilingTest.java | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/test/java/edu/brown/cs/student/FilingTest.java (limited to 'src/test') diff --git a/src/test/java/edu/brown/cs/student/FilingTest.java b/src/test/java/edu/brown/cs/student/FilingTest.java new file mode 100644 index 0000000..a9b21d3 --- /dev/null +++ b/src/test/java/edu/brown/cs/student/FilingTest.java @@ -0,0 +1,82 @@ +package edu.brown.cs.student; + +import edu.brown.cs.student.term.parsing.LocalXmlParser; +import edu.brown.cs.student.term.parsing.Transaction; +import edu.brown.cs.student.term.parsing.TxtXmlParser; +import edu.brown.cs.student.term.parsing.UrlXmlParser; +import edu.brown.cs.student.term.parsing.XmlParser; +import edu.brown.cs.student.term.trade.Trade; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import javax.print.Doc; + +import static org.junit.Assert.*; + +public class FilingTest { + private XmlParser _xmlParser, _txtXmlParser; + + @Before + public void setUp() { + _xmlParser = new UrlXmlParser(); + _txtXmlParser = new TxtXmlParser(); + } + + @After + public void tearDown() { + _xmlParser = null; + _txtXmlParser = null; + } + + @Test + public void seeWorks(){ + setUp(); + + String url = "https://www.sec.gov/cgi-bin/browse-edgar?" + + "action=getcurrent" + + "&CIK=" + + "&type=4" + + "&company=" + + "&dateb=" + + "&owner=only" + + "&start=0" + + "&count=10" + + "&output=atom"; + + Document doc = _xmlParser.parse(url); + assertNotNull(doc); + NodeList entries = doc.getElementsByTagName("entry"); + assertNotEquals(entries.getLength(), 0); + assertEquals(entries.item(0).getNodeType(), Node.ELEMENT_NODE); + for (int i = 0; i < entries.getLength(); i++) { + Element entry = (Element) entries.item(i); + NodeList link = entry.getElementsByTagName("link"); + assertEquals(link.getLength(), 1); + String linkUrl = link.item(0).getAttributes().getNamedItem("href").getNodeValue(); + System.out.println(linkUrl); + + NodeList updated = entry.getElementsByTagName("updated"); + assertEquals(link.getLength(), 1); + System.out.println(updated.item(0).getTextContent()); + } + + tearDown(); + } + + @Test + public void xmlUrlFromFilingUrl(){ + setUp(); + + String url = "https://www.sec.gov/Archives/edgar/data/1597341/000141588921001958/0001415889-21-001958.txt"; + Document doc = _txtXmlParser.parse(url); + assertNotNull(doc); + tearDown(); + } + + +} -- cgit v1.2.3-70-g09d2 From 2b49d7ba79e8a26a0abe3e0e16ad72f103072ac1 Mon Sep 17 00:00:00 2001 From: Julia McCauley Date: Fri, 16 Apr 2021 18:35:34 -0400 Subject: added some todos --- src/main/java/edu/brown/cs/student/term/Main.java | 1 + src/main/java/edu/brown/cs/student/term/hub/SuspicionRanker.java | 6 ++++++ src/test/java/edu/brown/cs/student/HubRankTest.java | 2 ++ src/test/java/edu/brown/cs/student/SuspicionRankerTest.java | 3 +++ 4 files changed, 12 insertions(+) (limited to 'src/test') diff --git a/src/main/java/edu/brown/cs/student/term/Main.java b/src/main/java/edu/brown/cs/student/term/Main.java index 1c9b1f7..41fd61d 100644 --- a/src/main/java/edu/brown/cs/student/term/Main.java +++ b/src/main/java/edu/brown/cs/student/term/Main.java @@ -133,6 +133,7 @@ public final class Main { return "OK"; }); Spark.before((request, response) -> response.header("Access-Control-Allow-Origin", "*")); + //TODO: Add system testing for all of our end points Spark.post("/data", new SuspicionRankHandler()); Spark.post("/profit", new ProfitQueryHandler()); Spark.post("/trade-lookup", new TradeQueryHandler()); diff --git a/src/main/java/edu/brown/cs/student/term/hub/SuspicionRanker.java b/src/main/java/edu/brown/cs/student/term/hub/SuspicionRanker.java index 74628aa..fbe05f7 100644 --- a/src/main/java/edu/brown/cs/student/term/hub/SuspicionRanker.java +++ b/src/main/java/edu/brown/cs/student/term/hub/SuspicionRanker.java @@ -38,6 +38,12 @@ public class SuspicionRanker { } } + /** + * + * @param start + * @param end + * @return + */ public List getSuspicionScoreList(Instant start, Instant end) { PriorityQueue orderedSuspicion = new PriorityQueue<>(new SuspicionComparator()); List suspicionList = new ArrayList<>(); diff --git a/src/test/java/edu/brown/cs/student/HubRankTest.java b/src/test/java/edu/brown/cs/student/HubRankTest.java index 07fd282..cbef9ee 100644 --- a/src/test/java/edu/brown/cs/student/HubRankTest.java +++ b/src/test/java/edu/brown/cs/student/HubRankTest.java @@ -126,4 +126,6 @@ public class HubRankTest { tearDown(); } + + //TODO: Test special case where all the hub ranks should be the same } diff --git a/src/test/java/edu/brown/cs/student/SuspicionRankerTest.java b/src/test/java/edu/brown/cs/student/SuspicionRankerTest.java index 3f8ea3d..e004e46 100644 --- a/src/test/java/edu/brown/cs/student/SuspicionRankerTest.java +++ b/src/test/java/edu/brown/cs/student/SuspicionRankerTest.java @@ -82,6 +82,9 @@ public class SuspicionRankerTest { tearDown(); } + //TODO: Test special case for all the profit = 0 + //TODO: Test special case for all the profit is negative + } -- cgit v1.2.3-70-g09d2 From 1785b88bd4adab00aa641d7721a1314b4711ddf3 Mon Sep 17 00:00:00 2001 From: Julia McCauley Date: Sat, 17 Apr 2021 22:40:57 -0400 Subject: merged in new database loader, this push contains a large database of all the trades from 2021 --- data/testing/test_trades.sqlite3 | Bin 0 -> 36864 bytes .../edu/brown/cs/student/ProfitCalculationTest.java | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 data/testing/test_trades.sqlite3 (limited to 'src/test') diff --git a/data/testing/test_trades.sqlite3 b/data/testing/test_trades.sqlite3 new file mode 100644 index 0000000..db88fc6 Binary files /dev/null and b/data/testing/test_trades.sqlite3 differ diff --git a/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java b/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java index 974fff0..256afed 100644 --- a/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java +++ b/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java @@ -35,7 +35,7 @@ public class ProfitCalculationTest { @Before public void setUp() { try { - db = new DatabaseQuerier("data/trades.sqlite3"); + db = new DatabaseQuerier("data/testing/test_trades.sqlite3"); } catch (Exception e) { System.out.println("DBQuerier Test, couldn't connect to db???"); } @@ -55,7 +55,6 @@ public class ProfitCalculationTest { List trade = profitCalculation.getHoldingsList(); double gain = trade.get(0).getUnrealizedGain(); assertEquals(294800.0, gain, .01); - } -- cgit v1.2.3-70-g09d2