Skip to content

Commit

Permalink
failing test for adding Holding to Decision without casebody
Browse files Browse the repository at this point in the history
  • Loading branch information
mscarey committed Jul 29, 2021
1 parent 2228d63 commit ce18376
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 14 deletions.
4 changes: 2 additions & 2 deletions authorityspoke/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
from nettlesome.predicates import Predicate
from nettlesome.quantities import Comparison

from .decisions import Decision
from .decisions import Decision, DecisionReading
from .facts import Fact
from .holdings import Holding
from .opinions import Opinion
from .opinions import Opinion, OpinionReading
from .rules import Rule
from .io.downloads import CAPClient
from .io.dump import to_dict, to_json
Expand Down
1 change: 1 addition & 0 deletions authorityspoke/io/loaders.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,3 +225,4 @@ def load_decision(
decision_dict = json.load(f)

return decision_dict

12 changes: 11 additions & 1 deletion tests/io/test_download.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from justopinion.decisions import CAPDecision

from authorityspoke.io.downloads import CAPClient, CaseAccessProjectAPIError
from authorityspoke import LegisClient
from authorityspoke import LegisClient, DecisionReading
from authorityspoke.io.loaders import load_decision
from authorityspoke.io import writers
from tests.test_notebooks import CAP_API_KEY
Expand Down Expand Up @@ -58,6 +58,16 @@ def test_download_case_by_cite(self):
case = self.client.read_cite("49 F.3d 807")
assert case.decision_date.isoformat() == "1995-03-09"

@pytest.mark.default_cassette("TestDownload.test_download_case_by_cite.yaml")
@pytest.mark.vcr
def test_decision_without_opinion_posits_holding(self, make_holding):
"""Test that a blank opinion is created when the decision doesn't have an opinion."""
decision = self.client.read_cite("49 F.3d 807")
reading = DecisionReading(decision=decision)
reading.posit(make_holding["h2"])
assert len(reading.holdings) == 1
assert reading.casebody.status != "ok"

@pytest.mark.default_cassette("TestDownload.test_full_case_download.yaml")
@pytest.mark.vcr
def test_download_save_and_make_opinion(self, tmp_path):
Expand Down
5 changes: 3 additions & 2 deletions tests/io/test_holding.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,10 +237,11 @@ def test_pass_holdings_to_decision_reading_constructor(
oracle_holdings = read_holdings_from_file(
"holding_oracle.yaml", client=mock_client
)
oracle_reading = DecisionReading(decision=oracle, holdings=oracle_holdings)
oracle_reading = DecisionReading(decision=oracle)
oracle_reading.posit(oracle_holdings)
assert (
oracle_reading.opinion_readings[0].holdings[0].enactments[0].node
== "/us/const/article/I/8/8"
== "/us/usc/t17/s102/a"
)


Expand Down
32 changes: 23 additions & 9 deletions tests/io/test_opinion.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,33 @@
from authorityspoke.holdings import HoldingGroup
import os
from typing import Dict, List

from dotenv import load_dotenv

import pytest

from authorityspoke import Opinion
from authorityspoke.holdings import HoldingGroup
from authorityspoke.io import loaders, readers, schemas_json as schemas
from authorityspoke.io.downloads import CAPClient
from authorityspoke.decisions import DecisionReading
from authorityspoke.opinions import OpinionReading


load_dotenv()

CAP_API_KEY = os.getenv("CAP_API_KEY") or "wrong key"


class TestLoadDecision:
case_client = CAPClient(api_token="Token " + CAP_API_KEY)

def test_load_decision(self):
brad_dict = loaders.load_decision("brad_h.json")
brad = readers.read_decision(brad_dict)
dissent = brad.opinions[1]
assert dissent.type == "concurring-in-part-and-dissenting-in-part"


class TestLoadOpinion:
def test_load_opinion_in_CAP_format(self):
watt_dict = loaders.load_decision("watt_h.json")
Expand Down Expand Up @@ -48,11 +70,3 @@ def test_selectors_not_duplicated(self, make_opinion_with_holding, raw_holding):
for selector in holdings[0].anchors
)
assert len(holdings[0].anchors) == 2


class TestLoadDecision:
def test_load_decision(self):
brad_dict = loaders.load_decision("brad_h.json")
brad = readers.read_decision(brad_dict)
dissent = brad.opinions[1]
assert dissent.type == "concurring-in-part-and-dissenting-in-part"
10 changes: 10 additions & 0 deletions tests/test_decisions.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
from copy import deepcopy
from datetime import date
import datetime
import os

import pytest

from authorityspoke.decisions import Decision, DecisionReading, Opinion
from authorityspoke.io.loaders import read_anchored_holdings_from_file


class TestDecision:
Expand Down Expand Up @@ -40,6 +42,14 @@ def test_decision_reading_has_opinion_readings(self, make_decision):
hamley = "hamley, circuit judge"
assert reading.opinion_readings[0].opinion.author.lower() == hamley

def test_decision_posits_anchored_holdins(self, fake_usc_client, make_decision):
lotus_analysis = read_anchored_holdings_from_file(
"holding_lotus.yaml", client=fake_usc_client
)
lotus_reading = DecisionReading(decision=make_decision["lotus"])
lotus_reading.posit(lotus_analysis)
assert len(lotus_reading.majority.holdings) == len(lotus_analysis.holdings)


class TestImplication:
def test_implication_of_decision_with_one_of_same_holdings(
Expand Down

0 comments on commit ce18376

Please sign in to comment.