class TestCase016AccountCenterFastSaleReset(unittest.TestCase):
    def setUp(self):
        self.driver = AutomateDriverServer(choose='chrome')
        self.base_url = self.driver.base_url
        self.base_page = BasePageServer(self.driver, self.base_url)
        self.login_page = LoginPage(self.driver, self.base_url)
        self.account_center_page_navi_bar = AccountCenterNaviBarPage(
            self.driver, self.base_url)
        self.account_center_page_details = AccountCenterDetailsPage(
            self.driver, self.base_url)
        self.assert_text2 = AssertText2()
        self.driver.set_window_max()
        self.account_center_page_read_csv = AccountCenterPageReadCsv()
        self.log_in_base = LogInBaseServer(self.driver, self.base_page)
        self.account_center_change_page = AccountCenterChangePage(
            self.driver, self.base_page)
        self.driver.wait(1)
        self.driver.clear_cookies()
        self.driver.wait(1)

    def tearDown(self):
        self.driver.quit_browser()

    def test_account_center_fast_sale_reset(self):
        '''通过csv测试账户详情-快捷销售-删除设备、重置功能'''
        csv_file = self.account_center_page_read_csv.read_csv(
            'fast_sale_exact_find_and_sale.csv')
        csv_data = csv.reader(csv_file)

        # 打开途强在线首页-登录页
        self.base_page.open_page()
        # 登录账号
        # self.log_in_base.log_in()
        self.log_in_base.log_in_with_csv("dzltest", "jimi123")
        self.driver.wait(1)
        self.account_center_page_navi_bar.click_account_center_button()

        for row in csv_data:
            search_account = {
                "account": row[0],
                "device_imei": row[1],
                "imei_count": row[2],
                "selected_dev": row[2]
            }
            # 进入快捷销售页面
            sleep(1)
            # self.account_center_page_details.account_center_iframe()
            # self.account_center_page_details.fast_sales()

            self.account_center_change_page.switch_fast_sale_enable()
            self.account_center_change_page.switch_to_fast_sale_frame()
            # 查找账户
            self.account_center_page_details.fast_sales_find_account(
                search_account["account"])
            #点取消
            self.account_center_page_details.fast_sales_find_and_dis_add_device(
                "123123123")

            # 输入设备imei精确查找设备并添加
            self.account_center_page_details.fast_sales_find_and_add_device(
                search_account["device_imei"])
            self.driver.default_frame()
            self.driver.wait()

            #验证消息中的失败个数
            failure_count = self.account_center_page_details.get_device_prompt_failure_count(
            )
            list_failure_count = self.account_center_page_details.get_device_list_failure_count(
            )
            self.assertEqual(failure_count, list_failure_count,
                             "显示的失败个数与列表中的失败数不一致")

            #验证消息中的成功个数
            all_data = self.account_center_page_details.get_prompt_list_data()
            succeed_count = self.account_center_page_details.get_device_prompt_succeed_count(
            )
            self.account_center_page_details.click_prompt_close()
            self.account_center_change_page.switch_to_fast_sale_frame()
            list_count = self.account_center_page_details.get_list_succeed_count(
            )
            self.assertEqual(succeed_count, list_count, "成功添加的设备数不一致")

            #断言失败提示中的信息
            for s in range(list_failure_count):
                self.assertIsNotNone(all_data["imei"][s], "sim卡号为空")
                self.assertEqual("失败", all_data["state"][s], "存在不是失败的数据")
                self.assertIsNotNone(all_data["cause"][s], "失败原因中存在空数据")

            # 验证已选设备计数是否准确
            dev_num = self.account_center_page_details.get_selected_device_num(
            )
            self.assertEqual(list_count, dev_num, "已选设备个数不准确")
            # 删除列表中的设备
            self.account_center_page_details.delete_list_device()

            self.assertEqual(
                0, self.account_center_page_details.get_selected_device_num(),
                "删除设备后,已选设备数不是0")

            # 重置验证
            self.account_center_page_details.fast_sales_find_and_add_device(
                search_account["device_imei"])
            self.driver.default_frame()
            self.account_center_page_details.click_prompt_close()
            self.account_center_change_page.switch_to_fast_sale_frame()
            self.account_center_page_details.choose_account_expired_time("三个月")
            self.driver.wait(1)
            self.account_center_page_details.reset_device()

            self.assertEqual(
                0, self.account_center_page_details.get_list_succeed_count(),
                "重置后,列表中已添加的设备的数不是0")
            self.assertEqual(
                0, self.account_center_page_details.get_selected_device_num(),
                "重置后,已选设备数不是0")
            self.assertEqual(
                self.assert_text2.account_center_please_select(),
                self.account_center_page_details.get_account_expired_time_text(
                ), "重置后,用户到期时间不是请选择")

            self.driver.default_frame()
        csv_file.close()
class TestCase400830AccountCenterFastSaleEditAddFaility(unittest.TestCase):
    def setUp(self):
        self.driver = AutomateDriverServer(choose='chrome')
        self.base_url = self.driver.base_url
        self.base_page = BasePageServer(self.driver, self.base_url)
        self.login_page = LoginPage(self.driver, self.base_url)
        self.account_center_page_navi_bar = AccountCenterNaviBarPage(
            self.driver, self.base_url)
        self.account_center_page_details = AccountCenterDetailsPage(
            self.driver, self.base_url)
        self.assert_text = AssertText()
        self.driver.set_window_max()
        self.account_center_page_read_csv = AccountCenterPageReadCsv()
        self.log_in_base = LogInBaseServer(self.driver, self.base_page)
        self.driver.wait(1)
        self.driver.clear_cookies()
        self.driver.wait(1)

    def tearDown(self):
        self.driver.quit_browser()

    def test_fast_sale_edit_add_faility_succeed(self):
        '''通过csv测试账户详情-快捷销售-编辑设备名称和设备sim卡号'''
        csv_file = self.account_center_page_read_csv.read_csv(
            'fast_sale_edit_dev_data.csv')
        csv_data = csv.reader(csv_file)

        # 打开途强在线首页-登录页
        self.base_page.open_page()
        # 登录账号
        self.log_in_base.log_in_with_csv("dzltest", "jimi123")
        self.driver.wait(1)
        self.account_center_page_navi_bar.click_account_center_button()

        for row in csv_data:
            data = {
                "account": row[0],
                "device_imei": row[1],
                "selected_dev": row[2],
                "dev_name": row[3],
                "sim": row[4],
                "old_dev_name": row[5],
                "old_sim": row[6]
            }
            # 进入快捷销售页面
            self.account_center_page_details.account_center_iframe()
            self.account_center_page_details.fast_sales()

            # 查找账户
            self.account_center_page_details.fast_sales_find_account(
                data["account"])

            # 输入设备imei精确查找设备并添加
            self.account_center_page_details.fast_sales_find_and_add_device(
                data["device_imei"])
            self.driver.default_frame()
            self.driver.wait()
            # 关闭消息提示框
            try:
                self.account_center_page_details.click_prompt_close()
            except:
                print("没有消息弹框提示")

            # self.account_center_page_details.account_center_iframe()
            # 获取列表设备imei,名称和sim卡号
            info = self.account_center_page_details.get_list_add_equipment_user_and_sim(
            )

            # 验证设备名称和sim卡的元素长度
            self.assertEqual(
                50,
                self.account_center_page_details.get_fast_sale_dev_name_len(),
                "设备名称长度不一致")
            self.assertEqual(
                20,
                self.account_center_page_details.get_fast_sale_dev_sim_len(),
                "设备sim卡长度不一致")

            # 编辑设备名称和sim卡号
            self.account_center_page_details.edit_list_add_equipment(
                info["imei"], data["dev_name"], data["sim"])

            # 点击用户到期时间
            self.account_center_page_details.account_center_iframe()
            self.account_center_page_details.choose_account_expired_time(
                data["selected_dev"])
            sleep(1)
            # 销售
            self.account_center_page_details.sale_button()
            # 通过弹出框状态验证是否销售成功
            sale_status_text = self.account_center_page_details.get_sale_status(
            )
            self.assertIn(
                self.assert_text.account_center_page_operation_done(),
                sale_status_text, "销售失败")
            self.driver.default_frame()
            sleep(2)

            # 点击设备管理
            dev_data = self.account_center_page_details.get_dev_manage_equipment_user_and_sim(
                info["imei"])
            for i in range(len(dev_data["dev_imei"])):
                if data["dev_name"] != "":
                    self.assertEqual(info["imei"][i] + data["dev_name"],
                                     dev_data["dev_name"][i], "设备名称与期望不一致")
                else:
                    self.assertIn(info["imei"][i][10:],
                                  dev_data["dev_name"][i],
                                  "为空时,设备名称不存在后五位imei")

                self.assertEqual(data["sim"], dev_data["dev_sim"][i],
                                 "sim卡与期望不一致")

            # 改设备数据
            self.account_center_page_details.dev_manage_edit_equipment_user_and_sim(
                data["old_dev_name"], data["old_sim"])

            break