from wikiazma.myTest import MyTestCase


class PublicResourceTest(MyTestCase):

    def setUp(self):
        self.setBaseUser()
        self.setUpHelpers()

    def tearDown(self):
        pass

    def test_create_public_resource_serializer_error(self):
        # sending no request data
        (response_data, status_code, error_message) = self.post_with_token(
            self.publicResourceHelper.add_public_resource_url)
        self.assertEqual(400, status_code, error_message)
        self.assertEqual('This field is required.',
                         response_data['fields']['title'], error_message)
        self.assertEqual('No file was submitted.',
                         response_data['fields']['file'], error_message)
        self.assertEqual('This field is required.',
                         response_data['fields']['file_type'], error_message)

    def test_create_public_resource_success(self):
        with open('test_files/image.png', 'rb') as fp:
            request = {"title": "newTitle1", "file_type": "image", "file": fp}
            (response_data, status_code, error_message) = self.post_with_token(self.publicResourceHelper.add_public_resource_url,
                                                                               request=request)
            self.assertEqual(200, status_code, error_message)
            # self.assertEqual(
            #     'Successful', response_data['message'], error_message)
            self.assertIn(
                'id', response_data, error_message)
            self.assertEqual(
                'newTitle1', response_data['title'], error_message)
            self.assertEqual(
                'image', response_data['file_type'], error_message)
            # self.assertIn(
            #     'http', response_data['data']['public_resource']['link'], error_message)

    def test_list_public_resources_serializer_error(self):
        # sending no request data
        (response_data, status_code, error_message) = self.post_with_token(
            self.publicResourceHelper.list_public_resources_url)
        self.assertEqual(400, status_code, error_message)
        self.assertEqual('This field is required.',
                         response_data['fields']['skip'], error_message)
        self.assertEqual('This field is required.',
                         response_data['fields']['take'], error_message)

    def test_list_public_resources_success(self):
        self.publicResourceHelper.create_public_resource()
        self.publicResourceHelper.create_public_resource()
        request = {'skip': 0, 'take': 10, 'deleted_filter': 'include'}
        (response_data, status_code, error_message) = self.post_with_token(self.publicResourceHelper.list_public_resources_url,
                                                                           request=request)
        self.assertEqual(200, status_code, error_message)
        # self.assertEqual('Successful', response_data['message'], error_message)
        self.assertEqual(
            2, len(response_data), error_message)
        # self.assertIn('id', response_data[0], error_message)
        # self.assertEqual(
        #     'PublicResource1', response_data[0]['title'], error_message)
        # self.assertEqual(
        #     'image', response_data[0]['file_type'], error_message)
        # self.assertEqual(
        #     'PublicResource2', response_data[1]['title'], error_message)

    # def test_edit_public_resources_success(self):

    #     (response_data, status_code,
    #      error_message) = self.publicResourceHelper.create_public_resource()

    #     request = {
    #         'public_resources_id': response_data['id'], 'title': 'test'}
    #     (response_data, status_code, error_message) = self.post_with_token(self.publicResourceHelper.edit_public_resources_url,
    #                                                                        request=request)

    #     self.assertEqual(200, status_code, error_message)
    #     # self.assertEqual('Successful', response_data['message'], error_message)

    #     self.assertIn('id', response_data, error_message)
    #     self.assertEqual(
    #         'test', response_data['title'], error_message)
    #     self.assertEqual(
    #         'image', response_data['file_type'], error_message)

    # def test_edit_public_resources_error(self):
    #     self.publicResourceHelper.create_public_resource()

    #     # wrong id
    #     request = {'public_resources_id': 'non_existence_uuid', 'title': 'test'}
    #     (response_data, status_code, error_message) = self.post_with_token(self.publicResourceHelper.edit_public_resources_url,
    #                                                                        request=request)
    #     self.assertEqual(400, status_code, error_message)
    #     self.assertEqual("Some fields are not valid",
    #                      response_data['message'], error_message)
    #     self.assertEqual(
    #         "Enter a valid id", response_data['fields']["public_resources_id"], error_message)

    #     self.publicResourceHelper.create_public_resource()
    #     request = {
    #         'public_resources_id': '2b8955b9-f033-4ea1-bb2e-bd14f3a9cb4a', 'title': 'test'}
    #     (response_data, status_code, error_message) = self.post_with_token(self.publicResourceHelper.edit_public_resources_url,
    #                                                                        request=request)
    #     self.assertEqual(404, status_code, error_message)
    #     self.assertEqual("not_found", response_data['status'], error_message)
    #     self.assertEqual("Public Resource was not found",
    #                      response_data['message'], error_message)

    #     self.publicResourceHelper.create_public_resource()
    #     request = {'title': 'test', 'token': '12233455',
    #                'public_resources_id': '123789'}
    #     (response_data, status_code, error_message) = self.post_without_token(self.publicResourceHelper.edit_public_resources_url,
    #                                                                           request=request)
    #     self.assertEqual(401, status_code, error_message)
    #     self.assertEqual(
    #         'Access denied', response_data['message'], error_message)

    #     self.publicResourceHelper.create_public_resource()
    #     request = {'title': 'test'}
    #     (response_data, status_code, error_message) = self.post_with_token(self.publicResourceHelper.edit_public_resources_url,
    #                                                                        request=request)
    #     self.assertEqual(400, status_code, error_message)
    #     self.assertEqual("Some fields are not valid",
    #                      response_data['message'], error_message)
    #     self.assertEqual("This field is required.",
    #                      response_data['fields']['public_resources_id'], error_message)

    #     (response_data, status_code,
    #      error_message) = self.publicResourceHelper.create_public_resource()
    #     request = {
    #         'public_resources_id': response_data['id'], 'title': 'test'}
    #     (response_data, status_code, error_message) = self.post_without_token(self.publicResourceHelper.edit_public_resources_url,
    #                                                                           request=request)
    #     self.assertEqual(401, status_code, error_message)
    #     self.assertEqual(
    #         "Access denied", response_data['message'], error_message)
