예제 #1
0
 def test_symbol_deleted_when_last_position_removed(self):
     """Test that the remove_item method of Portfolio removes unused sybmols."""
     portfolio = Portfolio(100)
     start_date = date(2000, 1, 1)
     p1 = OpenPosition("FOO", start_date, 100, 100)
     portfolio.add_position(p1)
     portfolio.remove_position(p1)
     assert_false(p1.symbol in portfolio.symbols)
예제 #2
0
class TestPortfolio(object):
    """Tests the Portfolio class."""

    @test(groups=["initializers"])
    def test_modify_item(self):
        """Test modifying an OpenPosition within a Portfolio."""
        self.portfolio = Portfolio(100)
        self.start_date = date(2000, 1, 1)
        self.p1 = OpenPosition("FOO", self.start_date, 100, 100)
        self.p2 = OpenPosition("FOO", self.start_date + timedelta(1), 200, 150)
        self.p3 = OpenPosition("FOO", self.start_date + timedelta(2), 300, 200)
        self.portfolio.add_position(self.p1)
        self.portfolio.add_position(self.p2)
        self.portfolio.add_position(self.p3)
        positions = self.portfolio.get_positions("FOO")
        assert_equal(positions, [self.p1, self.p2, self.p3])
        positions[0].cost_basis = 50
        positions[0].remaining_shares = 200
        assert_equal(self.p1, positions[0])
        positions = self.portfolio.get_positions("FOO")
        assert_equal(positions, [self.p1, self.p2, self.p3])
        self.portfolio.add_position(OpenPosition("BAR", self.start_date, 100, 100))
        positions = self.portfolio.get_positions("FOO")
        assert_equal(positions, [self.p1, self.p2, self.p3])

    @test(depends_on_groups=["initializers"])
    def test_remove_item(self):
        """Test the remove_item method of Portfolio."""
        self.portfolio.remove_position(self.p2)
        assert_equal(self.portfolio.get_positions("FOO"), [self.p1, self.p3])
        p4 = OpenPosition("FOO", self.start_date + timedelta(2), 300, 200)
        self.portfolio.add_position(p4)
        self.portfolio.remove_position(self.p3)
        assert_equal(self.portfolio.get_positions("FOO"), [self.p1, p4])
        assert_not_equal(self.portfolio.get_positions("FOO"), [self.p1, self.p3])

    @test
    def test_symbol_deleted_when_last_position_removed(self):
        """Test that the remove_item method of Portfolio removes unused sybmols."""
        portfolio = Portfolio(100)
        start_date = date(2000, 1, 1)
        p1 = OpenPosition("FOO", start_date, 100, 100)
        portfolio.add_position(p1)
        portfolio.remove_position(p1)
        assert_false(p1.symbol in portfolio.symbols)