コード例 #1
0
ファイル: test_functional.py プロジェクト: lijielife/darg
    def test_add_shareholder_with_existing_number(self):
        """
        add shareholder with existing number
        """
        op = OperatorGenerator().generate()
        self.add_subscription(op.company)
        user = UserGenerator().generate()
        shareholder = ShareholderGenerator().generate(company=op.company)
        user.email = None

        try:
            start = page.StartPage(self.selenium, self.live_server_url,
                                   op.user)
            # wait for list
            start.wait_until_visible((By.CSS_SELECTOR, '#shareholder_list'))
            start.is_properly_displayed()
            self.assertEqual(
                start.has_shareholder_count(),
                Shareholder.objects.filter(company=op.company).count())
            start.click_open_add_shareholder()
            start.wait_until_modal_opened('addShareholder')
            start.add_shareholder(user, number=shareholder.number)
            start.click_save_add_shareholder()
            start.close_modal('addShareholder')
            time.sleep(2)

            self.assertEqual(
                Shareholder.objects.filter(company=op.company,
                                           number=shareholder.number).count(),
                1)

        except Exception, e:
            self._handle_exception(e)
コード例 #2
0
    def test_ticket_68(self):
        """
        ensure that all share counts on start page after initial company setup
        are right
        """

        try:
            start = page.StartPage(
                self.selenium, self.live_server_url, self.operator.user)
            start.is_properly_displayed()
            start.has_shareholder_count(Shareholder.objects.count())

            share_count = self.operator.company.share_count
            # company shareholder count
            self.assertEqual(int(
                self.selenium.find_element_by_xpath(
                    '//table/tbody/tr[1]/td[last()]/value'
                ).text),
                share_count
            )
            # totals
            self.assertEqual(
                self.selenium.find_element_by_xpath(
                    '//table/tbody/tr[6]/td[last()]'
                ).text,
                "{} ({})".format(share_count, share_count)
            )
        except Exception, e:
            self._handle_exception(e)
コード例 #3
0
    def test_ticket_96(self):
        """
        add company with face value with decimals and large share count
        """
        user = UserGenerator().generate()
        value = '4.5'
        count = '15000000'

        try:
            p = page.StartPage(
                self.selenium, self.live_server_url, user)
            self.assertTrue(p.is_add_company_form_displayed())

            p.enter_add_company_data(value=value, count=count)
            p.click_save_add_company()

            self.assertEqual(p.get_form_errors(), [])
            self.assertFalse(p.is_add_company_form_displayed())
            self.assertTrue(user.operator_set.exists())
            company = user.operator_set.first().company
            cs = company.get_company_shareholder()
            self.assertTrue(cs.buyer.first().value, value)

        except Exception, e:
            self._handle_exception(e)
コード例 #4
0
ファイル: test_functional.py プロジェクト: lijielife/darg
    def test_ticket_68(self):
        """
        ensure that all share counts on start page after initial company setup
        are right
        """

        try:
            start = page.StartPage(self.selenium, self.live_server_url,
                                   self.operator.user)
            # wait for list
            start.wait_until_visible((By.CSS_SELECTOR, '#shareholder_list'))
            start.is_properly_displayed()
            self.assertEqual(start.has_shareholder_count(),
                             Shareholder.objects.count())

            share_count = self.operator.company.share_count
            # company shareholder count
            self.assertEqual(
                int(
                    start.get_row_by_shareholder(
                        self.company_shareholder).find_elements_by_tag_name(
                            'div')[-1].text), share_count)
            # totals
            self.assertEqual(
                self.selenium.find_element_by_xpath(
                    u'//div[@class="table"]/div[contains(@class, "tr")][last()]'
                    u'/div[contains(@class, "td")][last()]').text,
                "{}".format(share_count))
        except Exception, e:
            self._handle_exception(e)
コード例 #5
0
ファイル: test_functional.py プロジェクト: lijielife/darg
    def test_table_actions(self):
        """
        test on start page that diverse things are shown properly
        e.g. #128
        """
        optiontransactions, shs = \
            ComplexOptionTransactionsWithSegmentsGenerator().generate()
        for x in range(0, 30):
            ShareholderGenerator().generate(company=shs[0].company)

        # add a subscription for the company
        self.add_subscription(shs[0].company)

        try:
            start = page.StartPage(self.selenium, self.live_server_url,
                                   shs[0].company.operator_set.first().user)
            # wait for list
            start.wait_until_visible((By.CSS_SELECTOR, '#shareholder_list'))

            # search
            start.is_properly_displayed()
            # FIXME doing strang things here
            start.enter_search_term(shs[0].user.last_name)
            time.sleep(1)
            start.click_search()
            start.refresh()
            time.sleep(2)
            start.enter_search_term(shs[0].user.last_name)
            time.sleep(1)
            start.click_search()
            time.sleep(1)
            self.assertEqual(start.has_shareholder_count(), 1)

            # paginate
            start.refresh()
            start.is_properly_displayed()
            self.assertEqual(start.has_shareholder_count(), 20)
            start.click_paginate_next()
            time.sleep(1)
            self.assertEqual(start.has_shareholder_count(), 12)

            # sort
            start.refresh()
            start.is_properly_displayed()
            start.sort_table_by_number()
            time.sleep(2)
            numbers = start.driver.find_elements_by_class_name('number')
            prev = None
            for number in numbers:
                if prev is None:
                    prev = number.text
                    continue
                self.assertTrue(prev < number.text)

        except Exception, e:
            self._handle_exception(e)
コード例 #6
0
ファイル: test_functional.py プロジェクト: lijielife/darg
    def test_add_company(self):
        """
        add company with face value with decimals and large share count
        see #96
        """
        user = UserGenerator().generate()
        value = '4.5'
        count = '15000000'

        try:
            p = page.StartPage(self.selenium, self.live_server_url, user)
            # wait for form
            p.wait_until_visible((By.CSS_SELECTOR, '#add_company'))
            self.assertTrue(p.is_add_company_form_displayed())
            # menue is hidden
            self.assertFalse(
                self.selenium.find_element_by_css_selector(
                    '#navbar ul').is_displayed())

            p.enter_add_company_data(value=value, count=count)
            p.click_save_add_company()

            # wait for form to disappear
            p.wait_until_invisible((By.CSS_SELECTOR, '#add_company'))

            self.add_subscription(user.operator_set.first().company)

            self.assertEqual(p.get_form_errors(), [])
            """ invalidated by changing the next step to subscription selection
            leaving here as this might return later again...

            self.assertFalse(p.is_add_company_form_displayed())
            self.assertTrue(user.operator_set.exists())
            company = user.operator_set.first().company
            self.assertEqual(DEFAULT_TEST_DATA['company_name'], company.name)
            cs = company.get_company_shareholder()
            self.assertTrue(cs.buyer.first().value, value)
            # menue is displayed
            self.assertTrue(
                self.selenium.find_element_by_css_selector('#navbar ul')
                .is_displayed())
            # captable is hidden after company add, so the user is not confused
            # and can enter a single shareholder first
            self.assertFalse(
                self.selenium.find_element_by_css_selector('#captable')
                .is_displayed())
            # but it's shown on refresh
            p.refresh()
            self.assertTrue(
                p.wait_until_visible((By.CSS_SELECTOR, '#captable'))
                .is_displayed())
            self.assertEqual(company.founded_at, datetime.date.today())
            """
            self.assertIn('subscription', p.driver.current_url)
        except Exception, e:
            self._handle_exception(e)
コード例 #7
0
    def test_ticket_49(self):
        """ add shareholder as ops and then try login as this shareholder """
        self.operator = OperatorGenerator().generate(
            user=self.buyer.user, company=self.operator.company)

        try:
            start = page.StartPage(
                self.selenium, self.live_server_url, self.operator.user)
            start.is_properly_displayed()
            start.has_shareholder_count(Shareholder.objects.count())

        except Exception, e:
            self._handle_exception(e)
コード例 #8
0
ファイル: test_functional.py プロジェクト: lijielife/darg
    def test_ticket_49(self):
        """ add shareholder as ops and then try login as this shareholder """
        self.operator = OperatorGenerator().generate(
            user=self.buyer.user, company=self.operator.company)

        try:
            start = page.StartPage(self.selenium, self.live_server_url,
                                   self.operator.user)
            # wait for list
            start.wait_until_visible((By.CSS_SELECTOR, '#shareholder_list'))
            start.is_properly_displayed()
            self.assertEqual(start.has_shareholder_count(),
                             Shareholder.objects.count())

        except Exception, e:
            self._handle_exception(e)
コード例 #9
0
    def test_ticket_8(self):
        """ adding shareholder with user and userprofile for the same user for
        many companies/registers

        means we will create 3 companies, with 3 operators and each will add the
        same shareholder for its company.

        then login as the shareholder and check what happened and what is shown
        """
        ops = []
        ops.append(OperatorGenerator().generate())
        ops.append(OperatorGenerator().generate())
        ops.append(OperatorGenerator().generate())
        user = UserGenerator().generate()

        try:
            for op in ops:
                start = page.StartPage(
                    self.selenium, self.live_server_url, op.user)
                start.is_properly_displayed()
                start.has_shareholder_count(Shareholder.objects.filter(
                    company=op.company).count())
                start.click_open_add_shareholder()
                start.add_shareholder(user)
                start.click_save_add_shareholder()
                start.has_shareholder_count(Shareholder.objects.filter(
                    company=op.company).count())

            # shareholder now, no shareholder login yet
            # start = page.StartPage(
            #    self.selenium, self.live_server_url, user)
            # start.is_properly_displayed()

            time.sleep(2)
            self.assertEqual(user.shareholder_set.count(), 3)
            for op in ops:
                self.assertEqual(
                    user.shareholder_set.filter(company=op.company).count(), 1)

        except Exception, e:
            self._handle_exception(e)
コード例 #10
0
    def test_options_with_segments_display(self):
        """
        test on start page that options with segments are show properly
        """
        optiontransactions, shs = \
            ComplexOptionTransactionsWithSegmentsGenerator().generate()

        try:
            start = page.StartPage(
                self.selenium, self.live_server_url,
                shs[0].company.operator_set.first().user)
            start.is_properly_displayed()
            for shareholder in shs[1:]:  # not for company shareholder
                row = start.get_row_by_shareholder(shareholder)
                self.assertEqual(row.find_element_by_class_name('number').text,
                                 shareholder.number)
                self.assertEqual(row.find_element_by_class_name('share').text,
                                 u'6 (200,0%)')

        except Exception, e:
            self._handle_exception(e)
コード例 #11
0
ファイル: test_functional.py プロジェクト: lijielife/darg
    def test_operator_same_email_as_shareholder(self):
        """
        user signs up and adds himself as shareholder
        """

        try:
            self.assertEqual(
                self.operator.user.shareholder_set.filter(
                    company=self.operator.company).count(), 0)

            start = page.StartPage(self.selenium, self.live_server_url,
                                   self.operator.user)
            # wait for list
            start.wait_until_visible((By.CSS_SELECTOR, '#shareholder_list'))
            start.is_properly_displayed()
            start.click_open_add_shareholder()
            start.wait_until_modal_opened('addShareholder')
            start.add_shareholder(self.operator.user)
            start.click_save_add_shareholder()
            start.is_no_errors_displayed()
            start.close_modal('addShareholder')
            time.sleep(5)
            # wait for list entry
            xpath = (
                u'//div[@id="shareholder_list"]//div/span[text()="{}"]'.format(
                    self.operator.user.shareholder_set.first().get_full_name())
            )
            start.wait_until_visible((By.XPATH, xpath))
            self.assertEqual(
                start.has_shareholder_count(),
                Shareholder.objects.filter(
                    company=self.operator.company).count())

            self.assertEqual(
                self.operator.user.shareholder_set.filter(
                    company=self.operator.company).count(), 1)

        except Exception, e:
            self._handle_exception(e)
コード例 #12
0
ファイル: test_functional.py プロジェクト: lijielife/darg
    def test_add_shareholder_without_email(self):
        """
        add shareholder without email
        """
        op = OperatorGenerator().generate()
        self.add_subscription(op.company)
        CompanyShareholderGenerator().generate(company=op.company)
        user = UserGenerator().generate()
        user.email = None

        try:
            start = page.StartPage(self.selenium, self.live_server_url,
                                   op.user)
            # wait for list
            start.wait_until_visible((By.CSS_SELECTOR, '#shareholder_list'))
            start.is_properly_displayed()
            self.assertEqual(
                start.has_shareholder_count(),
                Shareholder.objects.filter(company=op.company).count())
            start.click_open_add_shareholder()
            start.wait_until_modal_opened('addShareholder')
            start.add_shareholder(user)
            start.click_save_add_shareholder()
            start.close_modal('addShareholder')
            time.sleep(5)
            # wait for list entry
            xpath = ('//div[@id="shareholder_list"]//span[text()="{}"]'
                     u''.format(Shareholder.objects.last().get_full_name()))
            start.wait_until_visible((By.XPATH, xpath))
            self.assertEqual(
                start.has_shareholder_count(),
                Shareholder.objects.filter(company=op.company).count())
            self.assertEqual(
                user.first_name,
                Shareholder.objects.filter(
                    company=op.company).last().user.first_name)

        except Exception, e:
            self._handle_exception(e)
コード例 #13
0
ファイル: test_functional.py プロジェクト: lijielife/darg
    def test_options_with_segments_display(self):
        """
        test on start page that options with segments are show properly
        """
        optiontransactions, shs = \
            ComplexOptionTransactionsWithSegmentsGenerator().generate()

        # add a subscription for the company
        self.add_subscription(shs[0].company)

        try:
            start = page.StartPage(self.selenium, self.live_server_url,
                                   shs[0].company.operator_set.first().user)
            # wait for list
            start.wait_until_visible((By.CSS_SELECTOR, '#shareholder_list'))
            start.is_properly_displayed()
            time.sleep(3)
            for shareholder in shs[1:]:  # not for company shareholder
                # FIXME
                row_xpath = (
                    # '//div[contains(@class, "options")]/div[./div/span="{}"
                    # and contains(@class, "tr")]'.format(
                    #    shareholder.get_full_name()))
                    '//div[contains(@class, "options")]/'
                    'div[contains(@class, "tr")]')
                row = self.selenium.find_elements_by_xpath(row_xpath)[0]
                self.assertEqual(
                    row.find_element_by_class_name('number').text,
                    shareholder.number)
                self.assertEqual(
                    row.find_element_by_class_name('share').text, u'6 (6.00%)')
                self.assertEqual(
                    row.find_element_by_class_name('full-name').text,
                    shareholder.get_full_name())

        except Exception, e:
            self._handle_exception(e)
コード例 #14
0
ファイル: test_functional.py プロジェクト: lijielife/darg
    def test_general_display(self):
        """
        test on start page that diverse things are shown properly
        e.g. #128
        """
        optiontransactions, shs = \
            ComplexOptionTransactionsWithSegmentsGenerator().generate()

        # add a subscription for the company
        self.add_subscription(shs[0].company)

        try:
            start = page.StartPage(self.selenium, self.live_server_url,
                                   shs[0].company.operator_set.first().user)
            # wait for list
            start.wait_until_visible((By.CSS_SELECTOR, '#shareholder_list'))
            start.is_properly_displayed()
            # self.assertEqual(start.get_total_share_count(), 3)
            self.assertEqual(start.get_company_share_count(), 100)
            self.assertEqual(start.get_total_share_count(),
                             start.get_company_share_count())

        except Exception, e:
            self._handle_exception(e)
コード例 #15
0
ファイル: test_functional.py プロジェクト: lijielife/darg
    def test_ticket_8(self):
        """ adding shareholder with user and userprofile for the same user for
        many companies/registers

        means we will create 3 companies, with 3 operators and each will add the
        same shareholder for its company.

        then login as the shareholder and check what happened and what is shown
        """
        ops = []
        ops.append(OperatorGenerator().generate())
        ops.append(OperatorGenerator().generate())
        ops.append(OperatorGenerator().generate())
        for op in ops:
            CompanyShareholderGenerator().generate(company=op.company)
        user = UserGenerator().generate()

        # add subscription for companies
        [self.add_subscription(op.company) for op in ops]

        try:
            for op in ops:
                # CompanyShareholderGenerator().generate(company=op.company)
                start = page.StartPage(self.selenium, self.live_server_url,
                                       op.user)
                # wait for list
                start.wait_until_visible(
                    (By.CSS_SELECTOR, u'#shareholder_list'))
                start.is_properly_displayed()
                self.assertEqual(
                    start.has_shareholder_count(),
                    Shareholder.objects.filter(company=op.company).count())
                self.assertEqual(
                    user.shareholder_set.filter(company=op.company).count(), 0)
                start.click_open_add_shareholder()
                start.wait_until_modal_opened('addShareholder')
                start.add_shareholder(user)
                start.click_save_add_shareholder()
                time.sleep(3)
                start.is_no_errors_displayed()
                start.close_modal('addShareholder')

                self.assertEqual(
                    user.shareholder_set.filter(company=op.company).count(), 1)
                # wait for list entry
                xpath = (u'//div[@id="shareholder_list"]//span[text()="{}"]'
                         u''.format(
                             user.shareholder_set.first().get_full_name()))
                start.wait_until_visible((By.XPATH, xpath))
                self.assertEqual(
                    start.has_shareholder_count(),
                    Shareholder.objects.filter(company=op.company).count())

            # shareholder now, no shareholder login yet
            # start = page.StartPage(
            #    self.selenium, self.live_server_url, user)
            # start.is_properly_displayed()

            self.assertEqual(user.shareholder_set.count(), 3)
            for op in ops:
                self.assertEqual(
                    user.shareholder_set.filter(company=op.company).count(), 1)

        except Exception, e:
            self._handle_exception(e)