Esempio n. 1
0
 def test_parse_tradingview_with_details(self):
     """
     must build a trend object from html with details
     """
     html = """<div class='speedometerWrapper'><span class='speedometerTitle'>summary</span>
                 <span class='speedometerSignal'>myvalue</span>
                      <span class='counterNumber sellColor'>0</span>
                       <span class='counterNumber neutralColor'>1</span>
                       <span class='counterNumber buyColor'>2</span>
           </div><div class='speedometerWrapper'>
                 <span class='speedometerTitle'>moving averages</span>
                 <span class='speedometerSignal'>myvalue2</span>
                       <span class='counterNumber sellColor'>3</span>
                       <span class='counterNumber neutralColor'>4</span>
                       <span class='counterNumber buyColor'>10</span>
           </div>
     """.replace('\n', '')
     scrape = ScrapeTradingView()
     trend = scrape._parse_tradingview(html)
     self.assertEqual('myvalue', trend.summary)
     self.assertEqual(1, len(trend.details))
     detail = trend.details[0]
     self.assertEqual('moving averages', detail.trend_name)
     self.assertEqual('myvalue2', detail.trend_value)
     self.assertEqual(3, detail.trend_sell)
     self.assertEqual(4, detail.trend_neutral)
     self.assertEqual(10, detail.trend_buy)
Esempio n. 2
0
    def test_do_call_return_content(self, mock_get):
        """ must return response content """
        scrape = ScrapeTradingView()
        loop = asyncio.get_event_loop()
        data_res = loop.run_until_complete(scrape._scrape_tradingview())

        self.assertEqual('html', data_res)
        self.assertEqual(len(mock_get.call_args_list), 1)
Esempio n. 3
0
    def test_call_exception(self, mock_get):
        """ must return exception status != 200 """
        scrape = ScrapeTradingView()
        with self.assertRaises(ValueError) as context:
            loop = asyncio.get_event_loop()
            loop.run_until_complete(scrape._scrape_tradingview())

        self.assertTrue('status code != 200' in str(context.exception))
        self.assertEqual(len(mock_get.call_args_list), 1)
Esempio n. 4
0
    def test_scrape_general(self, mock_get):
        """ must call internal methods """

        with patch.object(ScrapeTradingView,
                          '_parse_tradingview') as mock_method:
            scrape = ScrapeTradingView()
            mock_method.return_value = TrendIndicator("summary", "site", "url")
            loop = asyncio.get_event_loop()
            trend = loop.run_until_complete(scrape.scrape())

            mock_method.assert_called_once_with('html')
            self.assertEqual(len(mock_get.call_args_list), 1)
            self.assertEqual("summary", trend.summary)
            self.assertEqual("site", trend.from_site)
            self.assertEqual("url", trend.from_url)
Esempio n. 5
0
 def test_parse_tradingview_raise_exception(self):
     """
     must raise a ValueError, details on trend values not found
     """
     html = """<div class='speedometerWrapper'><span class='speedometerTitle'>summary</span>
                 <span class='speedometerSignal'>myvalue</span>
                      <span class='counterNumber selColor'>0</span>
                       <span class='counterNumber netralColor'>1</span>
                       <span class='counterNumber buColor'>2</span>
           </div>
     """.replace('\n', '')
     scrape = ScrapeTradingView()
     with self.assertRaises(ValueError) as context:
         self.assertIsNone(scrape._parse_tradingview(html))
         self.assertTrue('no match found in' in str(context.exception))
Esempio n. 6
0
 def test_parse_tradingview_no_details(self):
     """
     must build a trend object from html
     """
     html = """<div class='speedometerWrapper'><span class='speedometerTitle'>summary</span>
                 <span class='speedometerSignal'>myvalue</span>
            
                       <span class='counterNumber sellColor'>0</span>
                       <span class='counterNumber neutralColor'>1</span>
                       <span class='counterNumber buyColor'>2</span>
                   
           </div>
     """.replace('\n', '')
     scrape = ScrapeTradingView()
     trend = scrape._parse_tradingview(html)
     self.assertEqual('myvalue', trend.summary)
     self.assertEqual([], trend.details)
async def trend_indicator_from_tradingview():
    """
        scrape Bitcoin-USD technical indicators from https://www.tradingview.com/symbols/BTCUSD/technicals/
    :return: TrendIndicator object in json format
    """
    scrape = ScrapeTradingView()
    trend = await scrape.scrape()
    trend_json = trend.to_json()
    logger.debug(trend_json)
    return trend_json
Esempio n. 8
0
    def test_find_index_summary(self):
        """
            must return index of a trend with 'summury' name from list of TrendIndicators
            return ValueError otherwise
        """
        scrape = ScrapeTradingView()

        trends = []

        # test no data
        with self.assertRaises(ValueError) as context:
            self.assertIsNone(scrape._find_index_summary(trends))
            self.assertTrue('summary not found' in str(context.exception))

        # test no summary
        for i in range(1, 4):
            trends.append(TrendIndicatorDetail("summary" + str(i), "1"))
        with self.assertRaises(ValueError) as context:
            self.assertIsNone(scrape._find_index_summary(trends))
            self.assertTrue('summary not found' in str(context.exception))

        # test with summary
        trends.insert(2, TrendIndicatorDetail("summary", "0"))
        self.assertEqual(2, scrape._find_index_summary(trends))

        # test one element with summary
        trends2 = [trends[2]]
        del trends
        self.assertEqual(0, scrape._find_index_summary(trends2))

        # test multiple element, summary in first
        for i in range(1, 4):
            trends2.append(TrendIndicatorDetail("summary" + str(i), "1"))
        self.assertEqual(0, scrape._find_index_summary(trends2))
        # test multiple element, summary in end
        del trends2[0]
        trends2.append(TrendIndicatorDetail("summary", "0"))
        self.assertEqual(len(trends2) - 1, scrape._find_index_summary(trends2))
Esempio n. 9
0
 def test_check_trend_values(self):
     """
     raise ValueError if sum of trend values != 11 when trend_name 'oscillators' and != 17 when 'moving averages'
     """
     scrape = ScrapeTradingView()
     self.assertIsNone(scrape._check_trend_values("OscillatORS", 1, 2, 8))
     self.assertIsNone(
         scrape._check_trend_values("moVING AveRages", 1, 2, 14))
     with self.assertRaises(ValueError) as context:
         self.assertIsNone(
             scrape._check_trend_values("oscillators", 1, 2, 0))
         self.assertTrue('oscillators' in str(context.exception))
     with self.assertRaises(ValueError) as context:
         self.assertIsNone(
             scrape._check_trend_values("moving averages", 1, 2, 3))
         self.assertTrue('averages' in str(context.exception))
import asyncio

from example_reporting_web_services.scraping.chart.scrape_investtech import ScrapeInvesttech
from example_reporting_web_services.scraping.indicator.scrape_investing import ScrapeInvesting
from example_reporting_web_services.scraping.indicator.scrape_tradingview import ScrapeTradingView

if __name__ == '__main__':

    scrape = ScrapeTradingView()
    loop = asyncio.get_event_loop()
    trend = loop.run_until_complete(scrape.scrape())
    print("TradingView")
    print(trend.summary)
    for detail in trend.details:
        print(detail)

    scrape = ScrapeInvesting()
    trend = scrape.scrape()
    print("Investing")
    print(trend.summary)
    for detail in trend.details:
        print(detail)

    scrape_charts = ScrapeInvesttech()
    b_img_graph = scrape_charts.scrape_graph()
    b_img_rsi = scrape_charts.scrape_rsi()
Esempio n. 11
0
 def test_constructor_fill_fields(self):
     """ must fill all fields """
     scrape = ScrapeTradingView()
     self.assertIsNotNone(scrape)