from api.scrapers.item import scrape_item_by_id
from api import app

from flask.json import loads

import unittest

app.config['TESTING'] = True


class ScrapeItem(unittest.TestCase):

    def test_scrape_item_by_id(self):
        item = scrape_item_by_id('d19447e548d')
        self.assertEqual('d19447e548d', item.lodestone_id)
        self.assertEqual('Thyrus Zenith', item.name)
        self.assertEqual('Two-handed Conjurer\'s Arm', item.type)
        self.assertEqual(90, item.ilvl)

    def test_item_json(self):
        with app.test_client() as client:
            response = client.get('/scrape/item/cada9ec7074')
            self.assertEqual(response.status_code, 200)

            json = loads(response.data)
            self.assertEqual(json, {
                "id": "cada9ec7074",
                "ilvl": 110,
                "name": "Arachne Robe",
                "type": "Body"
            })

    def test_invalid_lodestone_id(self):
        with app.test_client() as client:
            response = client.post('/scrape/item/23fh032hf0oi1so3a012r1')
            self.assertEqual(response.status_code, 405)

from api.scrapers.item import scrape_item_by_id
from api import app, db

from flask.json import loads

import unittest

app.config['TESTING'] = True
db.create_all()


class ScrapeItem(unittest.TestCase):

    def test_scrape_item_by_id(self):
        item = scrape_item_by_id('d19447e548d')
        self.assertEqual('d19447e548d', item.lodestone_id)
        self.assertEqual('Thyrus Zenith', item.name)
        self.assertEqual('Two-handed Conjurer\'s Arm', item.type)
        self.assertEqual(90, item.ilvl)

    def test_item_json(self):
        with app.test_client() as client:
            response = client.get('/scrape/item/cada9ec7074')
            self.assertEqual(response.status_code, 200)

            json = loads(response.data)
            self.assertEqual(json, {
                "id": "cada9ec7074",
                "ilvl": 110,
                "name": "Arachne Robe",
                "type": "Body"
            })

    def test_invalid_lodestone_id(self):
        with app.test_client() as client:
            response = client.post('/scrape/item/23fh032hf0oi1so3a012r1')
            self.assertEqual(response.status_code, 405)

Create tables in database before running tests
Create tables in database before running tests

  from api.scrapers.item import scrape_item_by_id
- from api import app
+ from api import app, db
  
  from flask.json import loads
  
  import unittest
  
  app.config['TESTING'] = True
+ db.create_all()
  
  
  class ScrapeItem(unittest.TestCase):
  
      def test_scrape_item_by_id(self):
          item = scrape_item_by_id('d19447e548d')
          self.assertEqual('d19447e548d', item.lodestone_id)
          self.assertEqual('Thyrus Zenith', item.name)
          self.assertEqual('Two-handed Conjurer\'s Arm', item.type)
          self.assertEqual(90, item.ilvl)
  
      def test_item_json(self):
          with app.test_client() as client:
              response = client.get('/scrape/item/cada9ec7074')
              self.assertEqual(response.status_code, 200)
  
              json = loads(response.data)
              self.assertEqual(json, {
                  "id": "cada9ec7074",
                  "ilvl": 110,
                  "name": "Arachne Robe",
                  "type": "Body"
              })
  
      def test_invalid_lodestone_id(self):
          with app.test_client() as client:
              response = client.post('/scrape/item/23fh032hf0oi1so3a012r1')
              self.assertEqual(response.status_code, 405)
  
Create tables in database before running tests
## Code Before:
from api.scrapers.item import scrape_item_by_id
from api import app

from flask.json import loads

import unittest

app.config['TESTING'] = True


class ScrapeItem(unittest.TestCase):

    def test_scrape_item_by_id(self):
        item = scrape_item_by_id('d19447e548d')
        self.assertEqual('d19447e548d', item.lodestone_id)
        self.assertEqual('Thyrus Zenith', item.name)
        self.assertEqual('Two-handed Conjurer\'s Arm', item.type)
        self.assertEqual(90, item.ilvl)

    def test_item_json(self):
        with app.test_client() as client:
            response = client.get('/scrape/item/cada9ec7074')
            self.assertEqual(response.status_code, 200)

            json = loads(response.data)
            self.assertEqual(json, {
                "id": "cada9ec7074",
                "ilvl": 110,
                "name": "Arachne Robe",
                "type": "Body"
            })

    def test_invalid_lodestone_id(self):
        with app.test_client() as client:
            response = client.post('/scrape/item/23fh032hf0oi1so3a012r1')
            self.assertEqual(response.status_code, 405)

## Instruction:
Create tables in database before running tests
## Code After:
from api.scrapers.item import scrape_item_by_id
from api import app, db

from flask.json import loads

import unittest

app.config['TESTING'] = True
db.create_all()


class ScrapeItem(unittest.TestCase):

    def test_scrape_item_by_id(self):
        item = scrape_item_by_id('d19447e548d')
        self.assertEqual('d19447e548d', item.lodestone_id)
        self.assertEqual('Thyrus Zenith', item.name)
        self.assertEqual('Two-handed Conjurer\'s Arm', item.type)
        self.assertEqual(90, item.ilvl)

    def test_item_json(self):
        with app.test_client() as client:
            response = client.get('/scrape/item/cada9ec7074')
            self.assertEqual(response.status_code, 200)

            json = loads(response.data)
            self.assertEqual(json, {
                "id": "cada9ec7074",
                "ilvl": 110,
                "name": "Arachne Robe",
                "type": "Body"
            })

    def test_invalid_lodestone_id(self):
        with app.test_client() as client:
            response = client.post('/scrape/item/23fh032hf0oi1so3a012r1')
            self.assertEqual(response.status_code, 405)
