# -*- coding: utf-8 -*-

"""
    easybimehlanding

    This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ).
"""

import jsonpickle
import dateutil.parser
from .controller_test_base import ControllerTestBase
from ..test_helper import TestHelper
from easybimehlanding.api_helper import APIHelper


class FooterControllerTests(ControllerTestBase):

    @classmethod
    def setUpClass(cls):
        super(FooterControllerTests, cls).setUpClass()
        cls.controller = cls.api_client.footer

    # TODO: Add Description
    def test_portal_landing_contact_about(self):
        # Parameters for the API call
        x_api_key = 'd6dfd932-75d8-e911-811a-000c294ecf01'

        # Perform the API call through the SDK function
        result = self.controller.get_portal_landing_contact_about(x_api_key)

        # Test response code
        self.assertEquals(self.response_catcher.response.status_code, 200)

        # Test headers
        expected_headers = {}
        expected_headers['date'] = None
        expected_headers['content-type'] = None
        expected_headers['content-length'] = None
        expected_headers['connection'] = None
        expected_headers['keep-alive'] = None
        expected_headers['cache-control'] = None
        expected_headers['pragma'] = None
        expected_headers['content-encoding'] = None
        expected_headers['expires'] = None
        expected_headers['x-stackifyid'] = None
        expected_headers['x-aspnet-version'] = None
        expected_headers['x-powered-by'] = None
        expected_headers['server'] = None
        expected_headers['ar-poweredby'] = None
        expected_headers['ar-sid'] = None
        expected_headers['ar-atime'] = None
        expected_headers['ar-cache'] = None
        expected_headers['ar-request-id'] = None

        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))

        
        # Test whether the captured response is as we expected
        self.assertIsNotNone(result)
        expected_body = APIHelper.json_deserialize(
            '{"isSuccess":true,"status":200,"message":{"licensed":false,"insuranceGroup'
            '":[],"insuranceType":[],"summaryCards":[],"summaryNotics":[],"imageAlbums":'
            '[],"videoGalleries":[],"insuranceCentre":{"id":2,"personId":"fbddedc4-0804-'
            '409d-91ee-cb062ef33f42","personalityType":0,"insuranceCentreType":5,"regist'
            'erStatus":99,"centerName":"میز کار  مجازی  بیمه ","centerCode":"1020","bran'
            'chCount":null,"registrationNumber":"4121","freeUseGoldenPackExpireDate":"20'
            '19-06-17T12:46:51.763","cityId":329,"cashPayment":true,"showInEasyBimeh":tr'
            'ue,"installmentsPayment":false,"isInitialApplicant":false,"branchsCount":9,'
            '"employeesCount":20,"zoneId":null,"smsChargingStock":null,"independentBranc'
            'h":null,"disableReason":null,"termsConditions":null,"disableReasonDescripti'
            'on":null,"unlimitedAccount":null,"whiteLabel":false,"phone":"02188207290","'
            'fax":"","address":"استان تهران، تهران، خیابان گاندی، خیابان پانزدهم، شماره1'
            '5، واحد 1","zipCode":"","email":"hfz1.co@gmail.com","paymentUrl":null,"call'
            'backUrl":null,"callbackUrlWhitelabel":null,"webSite":"","latitude":35.6892,'
            '"longitude":51.389,"isActive":true,"insuranceCentreId":null,"cityRegionId":'
            'null,"provinceId":8,"cityName":"تهران","metaMediaActivityLicenceId":20453,"'
            'metaMediaActivityLicenceUrl":null,"createOnPersianDate":"1397/05/05 00:00",'
            '"insuranceCompanyId":[31,32,33,34,35,36,37,39],"activePackageId":9,"package'
            'ActivationLastDate":"2019-08-31T14:49:47.55","licenseApiKey":null,"verifyRe'
            'questUrl":null,"onlinePayment":true,"cardToCardPayment":true,"bankTransferP'
            'ayment":true,"cashOnDelivery":true,"bankTransferSameOnlinePaymentInfo":fals'
            'e,"bankParamId":109,"accountOwner":"فرزاد","accountNumber":"1761496408","ib'
            'an":"550120000000001761496408","cardBankParamId":109,"cardAccountOwner":"فر'
            'زاد","cardAccountNumber":"6104333344445555","bankTransferParamId":109,"bank'
            'TransferAccountOwner":"فرزاد","bankTransferAccountNumber":"1761496408","ban'
            'kTransferIBAN":"550120000000001761496408"},"insuranceCentrePortal":{"insura'
            'nceCentreId":2,"centreName":"میز کار  مجازی  بیمه ","subDomainName":"hfz1",'
            '"title":"","subTitle":"","contactUs":null,"aboutUs":"","ourService":"<div i'
            'temprop=\"mainContentOfPage\"><p>تمامی بیمه نامه ها با اعمال حداکثر تخفیفات'
            ' قانونی ویژه ، با تسهیل در پرداخت حق بیمه (بصورت قسطی) توسط هریک از شرکتهای'
            ' بیمه مورد نظر شما صادر خواهد گردید.</p></div>","termsConditions":null,"cop'
            'yright":null,"headerTitle":null,"headerBody":null,"footerColor":null,"backg'
            'roundColor":null,"licensed":false,"defaultLogo":null,"titleColor":"#ffffff"'
            ',"subTitleColor":"#ffffff","eTrustSymbol":null,"digitalMediaOrganizerSymbol'
            '":null,"googlePlus":"http://instagram.com","telegram":"http://telegram.com"'
            ',"instagram":"http://instagram.com","faceBook":"http://instagram.com","twit'
            'ter":"http://instagram.com","saturdayToWednesdayFromHour":null,"saturdayToW'
            'ednesdayToHour":null,"thursdayFromHour":null,"thursdayToHour":null,"fridayF'
            'romHour":null,"fridayToHour":null,"metaMediaFileHeaderId":20817,"metaMediaF'
            'ileHeaderUrl":"https://media.easybimeh.com//Easybimeh/FileManager/Insurance'
            'Centre/hfz1/636780551712391762.jpg","metaMediaFileLogoId":81580,"metaMediaF'
            'ileLogoUrl":"https://media.easybimeh.com//Easybimeh/FileManager/InsuranceCe'
            'ntre/hfz1/636994283394589289.png","metaMediaFileFaviconId":162557,"metaMedi'
            'aFileFaviconUrl":"https://media.easybimeh.com//Easybimeh/FileManager/Insura'
            'nceCentre/hfz1/637082986134004537.jpeg","metaMediaFileFooterId":null,"metaM'
            'ediaFileFooterUrl":null}},"extraData":null,"exception":null}'
            )
        received_body = APIHelper.json_deserialize(self.response_catcher.response.raw_body)
        self.assertTrue(TestHelper.match_body(expected_body, received_body))


    # TODO: Add Description
    def test_faq_insurance_centre(self):
        # Parameters for the API call
        x_api_key = 'd6dfd932-75d8-e911-811a-000c294ecf01'

        # Perform the API call through the SDK function
        result = self.controller.get_faq_insurance_centre(x_api_key)

        # Test response code
        self.assertEquals(self.response_catcher.response.status_code, 200)

        # Test headers
        expected_headers = {}
        expected_headers['date'] = None
        expected_headers['content-type'] = None
        expected_headers['content-length'] = None
        expected_headers['connection'] = None
        expected_headers['keep-alive'] = None
        expected_headers['cache-control'] = None
        expected_headers['pragma'] = None
        expected_headers['content-encoding'] = None
        expected_headers['expires'] = None
        expected_headers['x-stackifyid'] = None
        expected_headers['x-aspnet-version'] = None
        expected_headers['x-powered-by'] = None
        expected_headers['server'] = None
        expected_headers['ar-poweredby'] = None
        expected_headers['ar-sid'] = None
        expected_headers['ar-atime'] = None
        expected_headers['ar-cache'] = None
        expected_headers['ar-request-id'] = None

        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))

        
        # Test whether the captured response is as we expected
        self.assertIsNotNone(result)
        expected_body = APIHelper.json_deserialize(
            '{"isSuccess":true,"status":200,"message":[{"id":1009,"insuranceCentreId":2'
            ',"question":"بیمه شخص ثالث چیست؟","answer":"بیمه شخص ثالث یکی از انواع بیمه'
            ' خودرو است که خسارات جانی و مالی وارد شده به اشخاص زیان‌دیده را پرداخت می‌ک'
            'ند. داشتن بیمه شخص ثالث برای تمامی وسایل نقلیه موتوری اجباری است.","sortPri'
            'ority":0,"questionGroupParamId":2,"isActive":true,"theInsuranceCentre":null'
            ',"theQuestionGroupParam":null,"createOn":"2018-06-17T00:00:00","updateOn":"'
            '2019-04-13T11:17:49.51","createdBy":"fbddedc4-0804-409d-91ee-cb062ef33f42",'
            '"updatedBy":"fbddedc4-0804-409d-91ee-cb062ef33f42","createOnPersianDate":"1'
            '397/03/27 00:00","updateOnPersianDate":"1398/01/24 11:17"},{"id":1010,"insu'
            'ranceCentreId":2,"question":"آیا پس از تایید شماره همراه در مراحل ثبت نام، '
            'میتوانم شماره خود را تغییر دهم؟","answer":"شما زمانی میتوانید شماره خود را '
            'تغییر دهید که شماره ی همراه جدید نیز تایید شود. \\r\\n\\r\\n در صورتی که  ش'
            'ماره همراه خود را به فردی دیگر واگذار کردید، جهت جلوگیری از سواستفاده یا مش'
            'کلات احتمالی، شماره موبایل خود را در پروفایل تغییر داده و شماره جدیدی ثبت ن'
            'مایید.","sortPriority":null,"questionGroupParamId":2,"isActive":true,"theIn'
            'suranceCentre":null,"theQuestionGroupParam":null,"createOn":"2018-06-19T10:'
            '34:51.217","updateOn":"2019-04-13T11:17:49.51","createdBy":"fbddedc4-0804-4'
            '09d-91ee-cb062ef33f42","updatedBy":null,"createOnPersianDate":"1397/03/29 1'
            '0:34","updateOnPersianDate":"1398/01/24 11:17"},{"id":1012,"insuranceCentre'
            'Id":2,"question":"منظور از شخص ثالث در بیمه شخص ثالث چیست؟","answer":"در بی'
            'مه شخص ثالث، شخص اول شخص بیمه‌گزار (کسی که برای وسیله نقلیه‌ای بیمه شخص ثال'
            'ث خریداری می‌کند)، شخص ثانی، بیمه‌گر یا شرکت بیمه و شخص ثالث فرد یا افرادی '
            'هستند در حادثه رانندگی زیان دیده‌اند به جز راننده مقصر.","sortPriority":nul'
            'l,"questionGroupParamId":2,"isActive":true,"theInsuranceCentre":null,"theQu'
            'estionGroupParam":null,"createOn":"2018-08-19T16:02:22.87","updateOn":"2019'
            '-04-13T11:17:49.51","createdBy":"fbddedc4-0804-409d-91ee-cb062ef33f42","upd'
            'atedBy":null,"createOnPersianDate":"1397/05/28 16:02","updateOnPersianDate"'
            ':"1398/01/24 11:17"},{"id":1013,"insuranceCentreId":2,"question":"نداشتن بی'
            'مه شخص ثالث، چه مشکلاتی برای من ایجاد می‌کند؟","answer":"اولاً حرکت وسیله ن'
            'قلیه بدون داشتن بیمه شخص ثالث، ممنوع است و پلیس راهنمایی رانندگی در هر زمان'
            'ی که متوجه نداشتن بیمه شخص ثالث یک وسیله نقلیه شود، می‌تواند آن را توقیف کن'
            'د. درصورتی‌که یک وسیله نقلیه دارای بیمه‌نامه شخص ثالث نباشد و دچار حادثه شو'
            'د، راننده تا زمان پرداخت خسارت جانی و مالی اشخاص زیان‌دیده، زندانی می‌شود. '
            'همچنین، در هر زمان که راننده بخواهد بیمه شخص ثالث بخرد، باید جریمه دیرکرد آ'
            'ن را که قابل بخشش نیست، بپردازد. از سوی دیگر، فروش وسیله نقلیه فاقد بیمه شخ'
            'ص ثالث، امکان‌پذیر نیست.","sortPriority":null,"questionGroupParamId":2,"isA'
            'ctive":true,"theInsuranceCentre":null,"theQuestionGroupParam":null,"createO'
            'n":"2018-08-19T16:02:50.603","updateOn":"2019-04-13T11:17:49.51","createdBy'
            '":"fbddedc4-0804-409d-91ee-cb062ef33f42","updatedBy":null,"createOnPersianD'
            'ate":"1397/05/28 16:02","updateOnPersianDate":"1398/01/24 11:17"},{"id":101'
            '4,"insuranceCentreId":2,"question":"بیمه شخص ثالث برای من چه فایده‌ای دارد؟'
            '","answer":"علاوه بر آنکه خرید بیمه شخص ثالث برای تمامی دارندگان وسایل نقلی'
            'ه موتوری الزامی است، داشتن این بیمه می‌تواند خسارات مالی و جانی ناشی از برو'
            'ز حادثه را که می‌تواند تا مرز صدها میلیون تومان باشد، جبران نماید.","sortPr'
            'iority":null,"questionGroupParamId":2,"isActive":true,"theInsuranceCentre":'
            'null,"theQuestionGroupParam":null,"createOn":"2018-08-19T16:03:30.28","upda'
            'teOn":"2019-04-13T11:17:49.51","createdBy":"fbddedc4-0804-409d-91ee-cb062ef'
            '33f42","updatedBy":null,"createOnPersianDate":"1397/05/28 16:03","updateOnP'
            'ersianDate":"1398/01/24 11:17"},{"id":1015,"insuranceCentreId":2,"question"'
            ':"نداشتن بیمه شخص ثالث، چه مشکلاتی برای من ایجاد می‌کند؟","answer":"اولاً ح'
            'رکت وسیله نقلیه بدون داشتن بیمه شخص ثالث، ممنوع است و پلیس راهنمایی رانندگی'
            ' در هر زمانی که متوجه نداشتن بیمه شخص ثالث یک وسیله نقلیه شود، می‌تواند آن '
            'را توقیف کند. درصورتی‌که یک وسیله نقلیه دارای بیمه‌نامه شخص ثالث نباشد و دچ'
            'ار حادثه شود، راننده تا زمان پرداخت خسارت جانی و مالی اشخاص زیان‌دیده، زندا'
            'نی می‌شود. همچنین، در هر زمان که راننده بخواهد بیمه شخص ثالث بخرد، باید جری'
            'مه دیرکرد آن را که قابل بخشش نیست، بپردازد. از سوی دیگر، فروش وسیله نقلیه ف'
            'اقد بیمه شخص ثالث، امکان‌پذیر نیست.","sortPriority":null,"questionGroupPara'
            'mId":2,"isActive":true,"theInsuranceCentre":null,"theQuestionGroupParam":nu'
            'll,"createOn":"2018-08-19T16:03:55.527","updateOn":"2019-04-13T11:17:49.51"'
            ',"createdBy":"fbddedc4-0804-409d-91ee-cb062ef33f42","updatedBy":null,"creat'
            'eOnPersianDate":"1397/05/28 16:03","updateOnPersianDate":"1398/01/24 11:17"'
            '}],"extraData":null,"exception":null}'
            )
        received_body = APIHelper.json_deserialize(self.response_catcher.response.raw_body)
        self.assertTrue(TestHelper.match_body(expected_body, received_body))


    # TODO: Add Description
    def test_insurance_policy_tracking(self):
        # Parameters for the API call
        tracking_code = 213981083
        national_code = 3080115309
        x_api_key = 'd6dfd932-75d8-e911-811a-000c294ecf01'

        # Perform the API call through the SDK function
        result = self.controller.get_insurance_policy_tracking(tracking_code, national_code, x_api_key)

        # Test response code
        self.assertEquals(self.response_catcher.response.status_code, 200)

        # Test headers
        expected_headers = {}
        expected_headers['date'] = None
        expected_headers['content-type'] = None
        expected_headers['transfer-encoding'] = None
        expected_headers['connection'] = None
        expected_headers['keep-alive'] = None
        expected_headers['vary'] = None
        expected_headers['cache-control'] = None
        expected_headers['pragma'] = None
        expected_headers['expires'] = None
        expected_headers['x-stackifyid'] = None
        expected_headers['x-aspnet-version'] = None
        expected_headers['x-powered-by'] = None
        expected_headers['server'] = None
        expected_headers['ar-poweredby'] = None
        expected_headers['ar-sid'] = None
        expected_headers['ar-atime'] = None
        expected_headers['ar-cache'] = None
        expected_headers['ar-request-id'] = None
        expected_headers['content-encoding'] = None

        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))

        
        # Test whether the captured response is as we expected
        self.assertIsNotNone(result)
        expected_body = APIHelper.json_deserialize(
            '{"isSuccess":true,"status":200,"message":{"id":1129,"aliasName":"کاظم ملکی'
            '","status":"ثبت اولیه","createOnPersianDate":"1398/04/12 13:00","centerName'
            '":"کارگزاری بیمه حافظان آرامش","insurancePolicyType":8,"insuranceType":"بیم'
            'ه درمان خانواده","price":1890060,"paymented":null},"extraData":null,"except'
            'ion":null}'
            )
        received_body = APIHelper.json_deserialize(self.response_catcher.response.raw_body)
        self.assertTrue(TestHelper.match_body(expected_body, received_body))


