class RequestTests(TestBase):
    """Define and setup testing class"""

    def setUp(self):
        """ Set up request object before each test"""
        self.request = Service()
        create_requests()

    def tearDown(self):
        """ Clear up objects after every test"""
        del self.request

    def test_isuccessful_created(self):
        """Test if request can create sucessfully with correct fields"""
        res = Service("maintenance", "request descriptions", "location", "1")
        req = res.add()
        request_d = dict(
            id=1
            )
        self.assertEqual(req['id'], request_d['id'])

    def test_fetch_by_userid(self):
        """Test if filter by userid works"""
        res1 = Service("maintenance", "request descriptions", "location", "1")
        req = res1.add()
        res2 = Service("maintenance", "request descriptions", "location", "1")
        req = res2.add()
        res = self.request.fetch_by_userid("1")
        request_description = len(res)
        self.assertEqual(request_description, 2)

    def test_fetch_by_id(self):
        """Test if the method finds the exactly specified id"""
        res = Service("maintenance", "request descriptions", "location", "1")
        req = res.add()
        foundrequest = self.request.fetch_by_id(1)
        self.assertEqual(foundrequest['id'], 1)
        self.assertFalse(self.request.fetch_by_id(4), False)

    def test_view_all(self):
        """Test if view all works"""
        res1 = Service("maintenance", "request descriptions", "location", "1")
        res1.add()
        res2 = Service("maintenance", "request descriptions", "location", "1")
        res2.add()
        res = self.request.view_all()
        count = len(res)
        self.assertEqual(count, 2)

    def test_is_owner(self):
        """Test if reuest belong to a user"""
        res = Service("maintenance", "request descriptions", "location", "1")
        req = res.add()
        foundrequest = self.request.is_owner(1, 1)
        self.assertEqual(foundrequest, True)
        self.assertFalse(self.request.is_owner(1, 2), False)


    def test_valid_category(self):
        """Test if the method can detect valid category"""
        res = self.request.valid_category("maintenance")
        self.assertEqual(res, True)

    def test_invalid_category(self):
        """Test if the method can detect invalid category"""
        res = self.request.valid_category("other")
        self.assertEqual(res, False)