Ejemplo n.º 1
0
    def get_course_discount_info(self):
        """
        Get course discount info

        Returns:
            dict: A dictionary with keys for course price, discount value,
                  benefit type and discounted price.
        """
        course_price_str = self.q(
            css=self.course_tile_css +
            ' .discount-mc-price-group .course-price>span'
        ).text[0]
        benefit_value_str = self.q(
            css=self.course_tile_css +
            ' .discount-percentage>p'
        ).text[0]
        discounted_price_str = self.q(
            css=self.course_tile_css +
            ' .discount-mc-price-group .course-new-price>span'
        ).text[0]
        return {
            'course_price': extract_numerical_value_from_price_string(
                course_price_str
            ),
            'benefit_value': extract_numerical_value_from_price_string(
                benefit_value_str
            ),
            'discounted_price': extract_numerical_value_from_price_string(
                discounted_price_str
            ),
            'benefit_type': self.benefit_type
        }
Ejemplo n.º 2
0
    def get_course_discount_info(self):
        """
        Get course discount info

        Returns:
            dict: A dictionary with keys for course price, discount value,
                  benefit type and discounted price.
        """
        course_price_str = self.q(
            css=self.course_tile_css +
            ' .discount-mc-price-group .course-price>span').text[0]
        benefit_value_str = self.q(css=self.course_tile_css +
                                   ' .discount-percentage>p').text[0]
        discounted_price_str = self.q(
            css=self.course_tile_css +
            ' .discount-mc-price-group .course-new-price>span').text[0]
        return {
            'course_price':
            extract_numerical_value_from_price_string(course_price_str),
            'benefit_value':
            extract_numerical_value_from_price_string(benefit_value_str),
            'discounted_price':
            extract_numerical_value_from_price_string(discounted_price_str),
            'benefit_type':
            self.benefit_type
        }
    def test_enterprise_percentage_offer(self):
        """
        Scenario: To verify that user sees the correct discount
        percentage info and detail on enterprise landing page,
        basket page and on receipt page.
        """
        # Login user to LMS using staff credentials
        self.login_user_lms_using_api()
        # Get all enterprise offers data using api request
        offers_response = self.login_api.get_offer_request(self.target_url)
        # Get discount value from response against catalog UUID
        discount_value = extract_discount_value_from_response(
            ENT_CUSTOMER_CATALOG_UUID, offers_response
        )
        discounted_course_price = self.course_price - \
            (self.course_price * discount_value) / 100
        self.logout_from_lms_using_api()
        self.ecommerce_courses_page.visit()
        self.register_and_go_to_course_enrollment_page()
        # Call the fixture to unlink existing account for the user
        self.addCleanup(self.unlink_account)
        # Get course original price and course discounted price
        price_details = \
            self.ent_course_enrollment.get_course_price_details().split()
        # extract_numerical_value_from_price_string(price_details)
        self.assertEqual(
            self.course_price,
            extract_numerical_value_from_price_string(price_details[1])
        )
        self.assertEqual(
            discounted_course_price,
            extract_numerical_value_from_price_string(price_details[3])
        )
        self.assertIn(
            self.DISCOUNT_MSG + ENTERPRISE_NAME,
            self.ent_course_enrollment.get_course_price_details()
        )
        self.ent_course_enrollment.go_to_data_consent_page()
        self.ent_data_sharing_consent.wait_for_page()
        # Verify that accepting data consent takes user to basket page
        self.ent_data_sharing_consent.accept_data_sharing_consent()

        SingleSeatBasketPage(self.browser).wait_for_page()
        self.verify_info_is_populated_on_basket(
            discounted_course_price
        )
        self.verify_receipt_info_for_discounted_course()
    def test_enterprise_percentage_offer(self):
        """
        Scenario: To verify that user sees the correct discount
        percentage info and detail on enterprise landing page,
        basket page and on receipt page.
        """
        # Login user to LMS using staff credentials
        self.login_user_lms_using_api()
        # Get all enterprise offers data using api request
        offers_response = self.login_api.get_offer_request(self.target_url)
        # Get discount value from response against catalog UUID
        discount_value = extract_discount_value_from_response(
            ENT_CUSTOMER_CATALOG_UUID, offers_response
        )
        discounted_course_price = self.course_price - \
            (self.course_price * discount_value) / 100
        self.logout_from_lms_using_api()
        self.ecommerce_courses_page.visit()
        self.register_and_go_to_course_enrollment_page()
        # Call the fixture to unlink existing account for the user
        self.addCleanup(self.unlink_account)
        # Get course original price and course discounted price
        price_details = \
            self.ent_course_enrollment.get_course_price_details().split()
        # extract_numerical_value_from_price_string(price_details)
        self.assertEqual(
            self.course_price,
            extract_numerical_value_from_price_string(price_details[1])
        )
        self.assertEqual(
            discounted_course_price,
            extract_numerical_value_from_price_string(price_details[3])
        )
        self.assertIn(
            self.DISCOUNT_MSG + ENTERPRISE_NAME,
            self.ent_course_enrollment.get_course_price_details()
        )
        self.ent_course_enrollment.go_to_data_consent_page()
        self.ent_data_sharing_consent.wait_for_page()
        # Verify that accepting data consent takes user to basket page
        self.ent_data_sharing_consent.accept_data_sharing_consent()

        SingleSeatBasketPage(self.browser).wait_for_page()
        self.verify_info_is_populated_on_basket(
            discounted_course_price
        )
        self.verify_receipt_info_for_discounted_course()
Ejemplo n.º 5
0
    def total_price(self):
        """
        Get the total price

        Returns:
            float: total price
        """
        raw_price = self.q(css='#basket-total .price').text[0]
        return extract_numerical_value_from_price_string(raw_price)
Ejemplo n.º 6
0
    def course_price(self):
        """
        Get the course price

        Returns:
            float: course price
        """
        raw_price = self.q(css='#line-price .price').text[0]
        return extract_numerical_value_from_price_string(raw_price)
Ejemplo n.º 7
0
    def total_price_after_discount(self):
        """
        Get the total price after discount

        Returns:
            float: price after discount.
        """
        raw_price = self.q(css='#basket-total .price').text[0]
        return extract_numerical_value_from_price_string(raw_price)
Ejemplo n.º 8
0
 def test_extract_numerical_value_from_price_string_invalid(self, value):
     """
     Test that in case the regex search is not successful a
     meaningful message is displayed
     Args:
         value:
     """
     self.assertEqual(extract_numerical_value_from_price_string(value),
                      'No numerical value found in search string')
Ejemplo n.º 9
0
    def total_price(self):
        """
        Get the total price

        Returns:
            float: total price
        """
        raw_price = self.q(css='#basket-total .price').text[0]
        return extract_numerical_value_from_price_string(raw_price)
Ejemplo n.º 10
0
    def course_price(self):
        """
        Get the course price

        Returns:
            float: course price
        """
        raw_price = self.q(css='#line-price .price').text[0]
        return extract_numerical_value_from_price_string(raw_price)
Ejemplo n.º 11
0
    def total_price_after_discount(self):
        """
        Get the total price after discount

        Returns:
            float: price after discount.
        """
        raw_price = self.q(css='#basket-total .price').text[0]
        return extract_numerical_value_from_price_string(raw_price)
Ejemplo n.º 12
0
 def total_amount(self):
     """
     Get the total amount
     Returns:
         total amount.
     """
     total_amount = self.q(
         css='.order-total:nth-of-type(2)>.price'
     ).text[0]
     return extract_numerical_value_from_price_string(total_amount)
Ejemplo n.º 13
0
 def order_amount(self):
     """
     Get the order amount from receipt
     Returns:
         order amount.
     """
     amount = self.q(
         css='.line-price.price'
     ).text[0]
     return extract_numerical_value_from_price_string(amount)
Ejemplo n.º 14
0
 def total_amount(self):
     """
     Get the total amount
     Returns:
         total amount.
     """
     total_amount = self.q(
         css='.order-total:nth-of-type(2)>.price'
     ).text[0]
     return extract_numerical_value_from_price_string(total_amount)
Ejemplo n.º 15
0
 def order_amount(self):
     """
     Get the order amount from receipt
     Returns:
         order amount.
     """
     amount = self.q(
         css='.line-price.price'
     ).text[0]
     return extract_numerical_value_from_price_string(amount)
Ejemplo n.º 16
0
 def test_extract_numerical_value_from_price_string_with_floats(
         self, price_strings, result):
     """
     Test that regex is correctly extracting the floating point value from
     the string in different cases.
     Also test that in case the regex search is not successful a
     meaningful message is displayed
     Args:
         price_strings:
         result:
     """
     self.assertEqual(
         extract_numerical_value_from_price_string(price_strings), result)
Ejemplo n.º 17
0
 def test_extract_numerical_value_from_price_string_invalid(
         self,
         value
 ):
     """
     Test that in case the regex search is not successful a
     meaningful message is displayed
     Args:
         value:
     """
     self.assertEqual(
         extract_numerical_value_from_price_string(value),
         'No numerical value found in search string'
     )
Ejemplo n.º 18
0
 def test_extract_numerical_value_from_price_string_with_floats(
         self,
         price_strings,
         result
 ):
     """
     Test that regex is correctly extracting the floating point value from
     the string in different cases.
     Also test that in case the regex search is not successful a
     meaningful message is displayed
     Args:
         price_strings:
         result:
     """
     self.assertEqual(
         extract_numerical_value_from_price_string(price_strings),
         result
     )