def call_getfinnhub(self, other_args: List[str]):
        """Process get command"""
        parser = argparse.ArgumentParser(
            add_help=False,
            formatter_class=argparse.ArgumentDefaultsHelpFormatter,
            prog="getfinnhub",
            description=
            """Get similar companies from finnhubto compare with.""",
        )
        try:
            ns_parser = parse_known_args_and_warn(parser, other_args)
            if not ns_parser:
                return

            self.similar, self.user = finnhub_model.get_similar_companies(
                self.ticker)

            if self.ticker.upper() in self.similar:
                self.similar.remove(self.ticker.upper())

            if len(self.similar) > 10:
                random.shuffle(self.similar)
                self.similar = sorted(self.similar[:10])
                print(
                    "The limit of stocks to compare with are 10. Hence, 10 random similar stocks will be displayed.\n",
                )

            if self.similar:
                print(
                    f"[{self.user}] Similar Companies: {', '.join(self.similar)}",
                    "\n")

        except Exception as e:
            print(e, "\n")
def test_get_similar_companies_invalid_status(mocker, recorder):
    mock_response = requests.Response()
    mock_response.status_code = 400
    mocker.patch(target="requests.get",
                 new=mocker.Mock(return_value=mock_response))
    result_tuple = finnhub_model.get_similar_companies(ticker="TSLA")

    recorder.capture(result_tuple)
Exemple #3
0
def test_get_similar_companies_invalid_status(mocker, recorder):

    attrs = {
        "status_code": 400,
        "json.return_value": {
            "error": "mock error message"
        },
    }

    mock_response = mocker.Mock(**attrs)

    mocker.patch(target="requests.get",
                 new=mocker.Mock(return_value=mock_response))
    result_tuple = finnhub_model.get_similar_companies(ticker="TSLA")

    recorder.capture(result_tuple)
    def call_getfinnhub(self, other_args: List[str]):
        """Process get command"""
        parser = argparse.ArgumentParser(
            add_help=False,
            formatter_class=argparse.ArgumentDefaultsHelpFormatter,
            prog="getfinnhub",
            description="""Get similar companies from finnhub to compare with.""",
        )
        parser.add_argument(
            "-l",
            "--limit",
            default=10,
            dest="limit",
            type=check_positive,
            help="Limit of stocks to retrieve.",
        )
        if other_args and "-" not in other_args[0][0]:
            other_args.insert(0, "-l")
        ns_parser = parse_known_args_and_warn(parser, other_args)
        if ns_parser:
            if self.ticker:
                self.similar, self.user = finnhub_model.get_similar_companies(
                    self.ticker
                )

                if self.ticker.upper() in self.similar:
                    self.similar.remove(self.ticker.upper())

                if len(self.similar) > ns_parser.limit:
                    random.shuffle(self.similar)
                    self.similar = sorted(self.similar[: ns_parser.limit])
                    console.print(
                        f"The limit of stocks to compare are {ns_parser.limit}. The subsample will occur randomly.\n",
                    )

                self.similar = [self.ticker] + self.similar

                if self.similar:
                    console.print(
                        f"[{self.user}] Similar Companies: {', '.join(self.similar)}",
                        "\n",
                    )

            else:
                console.print(
                    "You need to 'set' a ticker to get similar companies from first!"
                )
def test_get_similar_companies(recorder):
    result_tuple = finnhub_model.get_similar_companies(ticker="TSLA")

    recorder.capture(result_tuple)