Ejemplo n.º 1
0
 def test_not_allowed_if_not_franchise_organization(self):
     from psi.app.models import EnumValues, Organization, PurchaseOrder
     with self.test_client:
         login_as_admin(self.test_client)
         org_type = EnumValues.get(const.DIRECT_SELLING_STORE_ORG_TYPE_KEY)
         organization = object_faker.organization(
             parent=Organization.query.get(1), type=org_type)
         user, pwd = object_faker.user(role_names=[
             'franchise_purchase_order_create',
             'franchise_purchase_order_edit',
             'franchise_purchase_order_delete',
             'franchise_purchase_order_view'
         ],
                                       organization=organization)
         db_util.save_objects_commit(user, organization)
         login_user(self.test_client, user.email, pwd)
         draft_status = EnumValues.get(const.PO_DRAFT_STATUS_KEY)
         order_date = object_faker.faker.date_time_this_year()
         logistic_amount = random.randint(0, 100)
         remark = object_faker.faker.text(max_nb_chars=50)
         rv = self.test_client.post(url_for('fpo.create_view',
                                            url=url_for('fpo.index_view')),
                                    data=dict(
                                        status=draft_status.id,
                                        order_date=order_date,
                                        logistic_amount=logistic_amount,
                                        remark=remark),
                                    follow_redirects=True)
         self.assertEqual(200, rv.status_code)
         self.assertIn(
             'Your organization is not a franchise store and is not allowed to '
             'create franchise purchase order', rv.data)
         po = PurchaseOrder.query.all()
         self.assertEqual(0, len(po))
Ejemplo n.º 2
0
 def test_all_page_rendered(self):
     user, password = of.user(role_names=[
         'sales_report_view',
     ])
     db_util.save_objects_commit(user)
     fixture.login_user(self.test_client, user.email, password)
     self.assertPageRendered(endpoint=url_for(
         'product_sales_report.index_view', type='overall'))
     self.assertPageRendered(
         endpoint=url_for('product_sales_report.index_view', type='today'))
     self.assertPageRendered(endpoint=url_for(
         'product_sales_report.index_view', type='yesterday'))
     self.assertPageRendered(endpoint=url_for(
         'product_sales_report.index_view', type='this_week'))
     self.assertPageRendered(endpoint=url_for(
         'product_sales_report.index_view', type='last_week'))
     self.assertPageRendered(endpoint=url_for(
         'product_sales_report.index_view', type='this_month'))
     self.assertPageRendered(endpoint=url_for(
         'product_sales_report.index_view', type='last_month'))
     self.assertPageRendered(endpoint=url_for(
         'product_sales_report.index_view', type='this_quarter'))
     self.assertPageRendered(endpoint=url_for(
         'product_sales_report.index_view', type='last_quarter'))
     self.assertPageRendered(endpoint=url_for(
         'product_sales_report.index_view', type='this_year'))
     self.assertPageRendered(endpoint=url_for(
         'product_sales_report.index_view', type='last_year'))
     fixture.logout_user(self.test_client)
Ejemplo n.º 3
0
 def test_logic():
     fixture.login_as_admin(self.test_client)
     user, password = object_faker.user(role_names=[
         'franchise_sales_order_create',
         'franchise_sales_order_view',
         'franchise_sales_order_edit',
         'product_view'
     ])
     franchise_so_type = EnumValues.get(FRANCHISE_SO_TYPE_KEY)
     sales_order = object_faker.sales_order(creator=user,
                                            number_of_line=1,
                                            type=franchise_so_type)
     db_util.save_objects_commit(sales_order, user)
     so_id = sales_order.id
     shipped_status = EnumValues.get(SO_SHIPPED_STATUS_KEY)
     fixture.login_user(self.test_client, user.email, password)
     rv = self.test_client.put('/api/sales_order/' + str(so_id),
                               follow_redirects=True,
                               data=dict(status_id=shipped_status.id))
     self.assertIn('message', rv.data)
     self.assertIn('Status update successfully', rv.data)
     self.assertEqual(rv.status_code, 200)
     so_from_db = Info.get_db().session.query(SalesOrder).get(so_id)
     self.assertIsNotNone(so_from_db)
     self.assertEquals(SO_SHIPPED_STATUS_KEY, so_from_db.status.code)
Ejemplo n.º 4
0
 def test_logic():
     fixture.login_as_admin(self.test_client)
     user, password = object_faker.user(role_names=[
         'franchise_sales_order_create',
         'franchise_sales_order_view',
         'franchise_sales_order_edit',
         'product_view'
     ])
     franchise_so_type = EnumValues.get(FRANCHISE_SO_TYPE_KEY)
     sales_order = object_faker.sales_order(creator=user,
                                            number_of_line=1,
                                            type=franchise_so_type)
     db_util.save_objects_commit(sales_order, user)
     so_id = sales_order.id
     shipped_status = EnumValues.get(SO_SHIPPED_STATUS_KEY)
     fixture.login_user(self.test_client, user.email, password)
     rv = self.test_client.put('/api/sales_order/' + str(so_id),
                               follow_redirects=True,
                               data=dict(status_id=shipped_status.id))
     self.assertIn(b'message', rv.data)
     self.assertIn(b'Status update successfully', rv.data)
     self.assertEqual(rv.status_code, 200)
     so_from_db = Info.get_db().session.query(SalesOrder).get(so_id)
     self.assertIsNotNone(so_from_db)
     self.assertEquals(SO_SHIPPED_STATUS_KEY, so_from_db.status.code)
Ejemplo n.º 5
0
    def test_create(self):
        from psi.app.models import EnumValues
        type_id = EnumValues.get(const.DIRECT_SELLING_STORE_ORG_TYPE_KEY).id

        with self.test_client:
            fixture.login_as_admin(self.test_client)
            org_name = object_faker.faker.name()
            org_desc = object_faker.faker.text(max_nb_chars=20)
            create_url = self.create_endpoint(view='organization')
            self.assertPageRendered(endpoint=create_url,
                                    method=self.test_client.get,
                                    expect_contents=['betterlife', '直营店'])
            self.assertPageRendered(endpoint=create_url,
                                    method=self.test_client.post,
                                    expect_contents=[org_name, org_desc],
                                    data={"type": type_id, "name": org_name, "description": org_desc, "parent": 1})
            self.assertDeleteSuccessful(endpoint=url_for('organization.delete_view', id=2, url=url_for('organization.index_view')),
                                        deleted_data=[org_name, org_desc])

            from psi.app.models import Organization
            user, pwd = object_faker.user(role_names=['organization_create', 'organization_view',
                                                      'organization_delete', 'organization_edit'],
                                          organization=Organization.query.get(1))
            db_util.save_objects_commit(user)
            fixture.login_user(self.test_client, user.email, pwd)
            from psi.app.models import EnumValues
            org_type = EnumValues.get(const.DIRECT_SELLING_STORE_ORG_TYPE_KEY)
            self.assertCreateFail(endpoint=create_url,
                                  create_data=[org_name, org_desc],
                                  data={"type": org_type.id, "name": org_name,
                                        "description": org_desc, "parent": 1})
Ejemplo n.º 6
0
 def test_all_page_rendered(self):
     user, password = of.user(role_names=[
         'report_view',
     ])
     db_util.save_objects_commit(user)
     fixture.login_user(self.test_client, user.email, password)
     self.assertPageRendered(endpoint=url_for('sales_amount.index'))
     self.assertPageRendered(endpoint=url_for('sales_profit.index'))
     fixture.logout_user(self.test_client)
Ejemplo n.º 7
0
 def test_sales_order_list_create_page(self):
     user, password = of.user(
         role_names=['direct_sales_order_create', 'direct_sales_order_view']
     )
     db_util.save_objects_commit(user)
     fixture.login_user(self.test_client, user.email, password)
     self.assertPageRendered(endpoint=url_for('salesorder.index_view'))
     self.assertPageRendered(endpoint=url_for('salesorder.create_view'))
     fixture.logout_user(self.test_client)
Ejemplo n.º 8
0
 def test_sales_order_list_create_page(self):
     user, password = of.user(
         role_names=['direct_sales_order_create', 'direct_sales_order_view']
     )
     db_util.save_objects_commit(user)
     fixture.login_user(self.test_client, user.email, password)
     self.assertPageRendered(endpoint=url_for('salesorder.index_view'))
     self.assertPageRendered(endpoint=url_for('salesorder.create_view'))
     fixture.logout_user(self.test_client)
Ejemplo n.º 9
0
 def test_purchase_price_show_and_hidden_detail_page(self):
     from tests.fixture import run_as_admin
     user, password = object_faker.user(role_names=[
         'purchase_price_view', 'direct_purchase_order_view', 'product_view'
     ])
     po = object_faker.purchase_order(number_of_line=1, creator=user)
     po_url = url_for('dpo.details_view', id=po.id)
     product_url = url_for('product.details_view', id=po.lines[0].product.id)
     run_as_admin(self.test_client, self.logic_for_detail_edit_page, user, password, po, po_url, product_url)
Ejemplo n.º 10
0
 def test_all_page_rendered(self):
     user, password = of.user(
         role_names=['report_view', ]
     )
     db_util.save_objects_commit(user)
     fixture.login_user(self.test_client, user.email, password)
     self.assertPageRendered(endpoint=url_for('sales_amount.index'))
     self.assertPageRendered(endpoint=url_for('sales_profit.index'))
     fixture.logout_user(self.test_client)
    def test_purchase_order_hide_then_show_list_page(self):
        from psi.app.service import Info
        from psi.app.models.role import Role
        from psi.app.utils import save_objects_commit
        role = Info.get_db().session.query(Role).filter_by(
            name='purchase_price_view').first()
        user, password = object_faker.user(
            ['product_view', 'direct_purchase_order_view'])
        save_objects_commit(user, role)
        fixture.login_user(self.test_client, user.email, password)

        rv = self.test_client.get(url_for('dpo.index_view'),
                                  follow_redirects=True)
        self.assertEqual(rv.status_code, 200)
        self.assertNotIn(
            b'<th class="column-header col-goods_amount">', rv.data,
            b"goods amount should not exits in purchase order "
            b"list page")
        self.assertNotIn(
            b'<th class="column-header col-total_amount">', rv.data,
            b"total amount should not exits in purchase order "
            b"list page")
        self.assertNotIn(
            b'<th class="column-header col-all_expenses">', rv.data,
            b"all expenses should not exits in purchase order "
            b"list page")
        rv = self.test_client.get(url_for('product.index_view'),
                                  follow_redirects=True)
        self.assertNotIn(
            b'<th class="column-header col-purchase_price">', rv.data,
            b"purchase price field should not exit in product "
            b"list page")

        user.roles.append(role)
        save_objects_commit(user, role)

        rv = self.test_client.get(url_for('dpo.index_view'),
                                  follow_redirects=True)
        self.assertEqual(rv.status_code, 200)
        self.assertIn(
            b'<th class="column-header col-goods_amount">', rv.data,
            b"goods amount should exist in purchase order list page")
        self.assertIn(
            b'<th class="column-header col-total_amount">', rv.data,
            b"total amount should exist in purchase order list page")
        self.assertIn(
            b'<th class="column-header col-all_expenses">', rv.data,
            b"all expenses should exist in purchase order list page")
        rv = self.test_client.get(url_for('product.index_view'),
                                  follow_redirects=True)
        self.assertIn(
            b'<th class="column-header col-purchase_price">', rv.data,
            b"purchase price field should exits in product list page")
        fixture.logout_user(self.test_client)
    def test_franchise_purchase_order_pages(self):
        from psi.app.models import EnumValues, Organization

        org_type = EnumValues.get(const.FRANCHISE_STORE_ORG_TYPE_KEY)
        organization = object_faker.organization(parent=Organization.query.get(1), type=org_type)
        user, pwd = object_faker.user(
            role_names=['franchise_purchase_order_create', 'franchise_purchase_order_edit',
                        'franchise_purchase_order_delete', 'franchise_purchase_order_view'],
            organization=organization)
        db_util.save_objects_commit(user, organization)
        login_user(self.test_client, user.email, pwd)
        self.assertPageRendered(url_for('fpo.index_view'))
Ejemplo n.º 13
0
    def test_create(self):
        from psi.app.models import EnumValues
        type_id = EnumValues.get(const.DIRECT_SELLING_STORE_ORG_TYPE_KEY).id

        with self.test_client:
            fixture.login_as_admin(self.test_client)
            org_name = object_faker.faker.name()
            org_desc = object_faker.faker.text(max_nb_chars=20)
            create_url = self.create_endpoint(view='organization')
            self.assertPageRendered(
                endpoint=create_url,
                method=self.test_client.get,
                expect_contents=['betterlife', '直营店'])
            self.assertPageRendered(
                endpoint=create_url,
                method=self.test_client.post,
                expect_contents=[org_name, org_desc],
                data={
                    "type": type_id,
                    "name": org_name,
                    "description": org_desc,
                    "parent": 1
                })
            self.assertDeleteSuccessful(
                endpoint=url_for(
                    'organization.delete_view',
                    id=2,
                    url=url_for('organization.index_view')),
                deleted_data=[org_name, org_desc])

            from psi.app.models import Organization
            user, pwd = object_faker.user(
                role_names=[
                    'organization_create', 'organization_view',
                    'organization_delete', 'organization_edit'
                ],
                organization=Organization.query.get(1))
            db_util.save_objects_commit(user)
            fixture.login_user(self.test_client, user.email, pwd)
            from psi.app.models import EnumValues
            org_type = EnumValues.get(const.DIRECT_SELLING_STORE_ORG_TYPE_KEY)
            self.assertCreateFail(
                endpoint=create_url,
                create_data=[org_name, org_desc],
                data={
                    "type": org_type.id,
                    "name": org_name,
                    "description": org_desc,
                    "parent": 1
                })
Ejemplo n.º 14
0
    def test_franchise_purchase_order_pages(self):
        from psi.app.models import EnumValues, Organization

        org_type = EnumValues.get(const.FRANCHISE_STORE_ORG_TYPE_KEY)
        organization = object_faker.organization(
            parent=Organization.query.get(1), type=org_type)
        user, pwd = object_faker.user(role_names=[
            'franchise_purchase_order_create', 'franchise_purchase_order_edit',
            'franchise_purchase_order_delete', 'franchise_purchase_order_view'
        ],
                                      organization=organization)
        db_util.save_objects_commit(user, organization)
        login_user(self.test_client, user.email, pwd)
        self.assertPageRendered(url_for('fpo.index_view'))
Ejemplo n.º 15
0
 def test_logic():
     fixture.login_as_admin(self.test_client)
     user, password = object_faker.user(role_names=[
         'franchise_sales_order_create', 'franchise_sales_order_view',
         'product_view'
     ])
     sales_order = object_faker.sales_order(creator=user,
                                            number_of_line=1)
     db_util.save_objects_commit(sales_order, user)
     so_id = sales_order.id
     delivered_status = EnumValues.get(SO_DELIVERED_STATUS_KEY)
     fixture.login_user(self.test_client, user.email, password)
     rv = self.test_client.put('/api/sales_order/' + str(so_id),
                               follow_redirects=True,
                               data=dict(status_id=delivered_status.id))
     self.assertEqual(rv.status_code, 403)
Ejemplo n.º 16
0
 def test_logic():
     fixture.login_as_admin(self.test_client)
     user, password = object_faker.user(role_names=[
         'franchise_sales_order_create', 'franchise_sales_order_view',
         'franchise_sales_order_edit', 'product_view'
     ])
     sales_order = object_faker.sales_order(creator=user,
                                            number_of_line=1)
     db_util.save_objects_commit(sales_order, user)
     so_id = sales_order.id
     fixture.login_user(self.test_client, user.email, password)
     rv = self.test_client.put('/api/sales_order/' + str(so_id),
                               follow_redirects=True,
                               data=dict(status_id=5000))
     self.assertEqual(rv.status_code, 201)
     self.assertIn(b'message', rv.data)
     self.assertIn(b'Invalid sales order status parameter', rv.data)
Ejemplo n.º 17
0
 def test_logic():
     fixture.login_as_admin(self.test_client)
     user, password = object_faker.user(role_names=[
         'franchise_sales_order_create',
         'franchise_sales_order_view',
         'product_view'
     ])
     sales_order = object_faker.sales_order(creator=user,
                                            number_of_line=1)
     db_util.save_objects_commit(sales_order, user)
     so_id = sales_order.id
     delivered_status = EnumValues.get(SO_DELIVERED_STATUS_KEY)
     fixture.login_user(self.test_client, user.email, password)
     rv = self.test_client.put('/api/sales_order/' + str(so_id),
                               follow_redirects=True,
                               data=dict(status_id=delivered_status.id))
     self.assertEqual(rv.status_code, 403)
Ejemplo n.º 18
0
 def test_all_page_rendered(self):
     user, password = of.user(
         role_names=['sales_report_view', ]
     )
     db_util.save_objects_commit(user)
     fixture.login_user(self.test_client, user.email, password)
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='overall'))
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='today'))
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='yesterday'))
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='this_week'))
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='last_week'))
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='this_month'))
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='last_month'))
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='this_quarter'))
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='last_quarter'))
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='this_year'))
     self.assertPageRendered(endpoint=url_for('supplier_sales_report.index_view', type='last_year'))
     fixture.logout_user(self.test_client)
Ejemplo n.º 19
0
    def test_to_organization_hide(self):

        from psi.app.models import EnumValues, PurchaseOrder, Organization
        from psi.app.service import Info
        from datetime import datetime
        t = EnumValues.get(const.FRANCHISE_STORE_ORG_TYPE_KEY)
        draft_status = EnumValues.get(const.PO_DRAFT_STATUS_KEY)
        draft_status_id = draft_status.id
        parent = Info.get_db().session.query(Organization).get(1)
        organization = object_faker.organization(type=t, parent=parent)
        user, password = object_faker.user([
            'franchise_purchase_order_create', 'franchise_purchase_order_edit',
            'franchise_purchase_order_view', 'franchise_purchase_order_delete'
        ],
                                           organization=organization)
        db_util.save_objects_commit(user)
        fixture.login_user(self.test_client, user.email, password)
        rv = self.test_client.get(url_for('fpo.create_view'),
                                  follow_redirects=True)

        self.assertEqual(rv.status_code, 200)
        self.assertNotIn('to_organization', rv.data)

        remark = u'-备注信息-'
        order_date = '2016-08-25 23:18:55'
        rv = self.test_client.post(url_for('fpo.create_view'),
                                   follow_redirects=True,
                                   data=dict(status=draft_status_id,
                                             logistic_amount=20,
                                             order_date=order_date,
                                             _continue_editing=u'保存并继续编辑',
                                             remark=remark))
        self.assertEquals(rv.status_code, 200)

        po = PurchaseOrder.query.filter_by(remark=remark).first()
        self.assertIsNotNone(po)
        self.assertEquals(po.remark, remark)
        self.assertEquals(po.logistic_amount, 20)
        self.assertEquals(po.status.id, draft_status.id)
        self.assertEqual(po.order_date,
                         datetime.strptime(order_date, "%Y-%m-%d %H:%M:%S"))
        self.assertEqual(po.to_organization, parent)
        self.assertEquals(po.organization, organization)
Ejemplo n.º 20
0
 def test_logic():
     fixture.login_as_admin(self.test_client)
     user, password = object_faker.user(role_names=[
         'franchise_sales_order_create', 'franchise_sales_order_view',
         'franchise_sales_order_edit', 'product_view'
     ])
     sales_order = object_faker.sales_order(creator=user,
                                            number_of_line=1)
     shipped_status = EnumValues.get(SO_SHIPPED_STATUS_KEY)
     sales_order.status = shipped_status
     db_util.save_objects_commit(sales_order, user)
     so_id = sales_order.id
     fixture.login_user(self.test_client, user.email, password)
     rv = self.test_client.put('/api/sales_order/' + str(so_id),
                               follow_redirects=True,
                               data=dict(status_id=shipped_status.id))
     self.assertEqual(rv.status_code, 201)
     self.assertIn(b'message', rv.data)
     self.assertIn(b'Status update not allowed', rv.data)
Ejemplo n.º 21
0
 def test_logic():
     fixture.login_as_admin(self.test_client)
     user, password = object_faker.user(role_names=[
         'franchise_sales_order_create',
         'franchise_sales_order_view',
         'franchise_sales_order_edit',
         'product_view'
     ])
     sales_order = object_faker.sales_order(creator=user,
                                            number_of_line=1)
     db_util.save_objects_commit(sales_order, user)
     so_id = sales_order.id
     fixture.login_user(self.test_client, user.email, password)
     rv = self.test_client.put('/api/sales_order/' + str(so_id),
                               follow_redirects=True,
                               data=dict(status_id=5000))
     self.assertEqual(rv.status_code, 201)
     self.assertIn(b'message', rv.data)
     self.assertIn(b'Invalid sales order status parameter', rv.data)
Ejemplo n.º 22
0
 def test_logic():
     fixture.login_as_admin(self.test_client)
     user, password = object_faker.user(role_names=[
         'franchise_sales_order_create',
         'franchise_sales_order_view',
         'franchise_sales_order_edit',
         'product_view'
     ])
     sales_order = object_faker.sales_order(creator=user,
                                            number_of_line=1)
     shipped_status = EnumValues.get(SO_SHIPPED_STATUS_KEY)
     sales_order.status = shipped_status
     db_util.save_objects_commit(sales_order, user)
     so_id = sales_order.id
     fixture.login_user(self.test_client, user.email, password)
     rv = self.test_client.put('/api/sales_order/' + str(so_id),
                               follow_redirects=True,
                               data=dict(status_id=shipped_status.id))
     self.assertEqual(rv.status_code, 201)
     self.assertIn(b'message', rv.data)
     self.assertIn(b'Status update not allowed', rv.data)
Ejemplo n.º 23
0
 def create_sales_order(self, status_key):
     from psi.app.models import EnumValues
     from psi.app.services.purchase_order import PurchaseOrderService
     user, password = of.user(
         role_names=['direct_sales_order_create',
                     'direct_sales_order_view',
                     'direct_sales_order_edit',
                     'direct_sales_order_delete']
     )
     db_util.save_objects_commit(user)
     fixture.login_as_admin(self.test_client)
     fixture.login_user(self.test_client, user.email, password)
     direct_po = EnumValues.get(const.DIRECT_PO_TYPE_KEY)
     po = of.purchase_order(number_of_line=2, type=direct_po,
                            creator=user)
     po.status = EnumValues.get(const.PO_ISSUED_STATUS_KEY)
     fixture.login_as_admin(self.test_client)
     l_e, g_e, recv = PurchaseOrderService.create_expense_receiving(po)
     customer = of.customer(creator=user)
     db_util.save_objects_commit(po, l_e, g_e, recv, customer)
     fixture.logout_user(self.test_client)
     fixture.login_user(self.test_client, user.email, password)
     order_status = EnumValues.get(status_key)
     order_date = of.faker.date_time_this_year()
     logistic_amount = random.randint(0, 100)
     remark = of.faker.text(max_nb_chars=50)
     data = dict(customer=customer.id, status=order_status.id,
                 order_date=order_date, logistic_amount=logistic_amount,
                 remark=remark)
     total, data = self.prepare_so_lines_data_from_po(po, data)
     expect = [customer.name, order_status.display,
               order_date.strftime("%Y-%m-%d"), remark, str(total)]
     self.assertPageRendered(method=self.test_client.post, data=data,
                             endpoint=url_for('salesorder.create_view',
                                              url=url_for(
                                                  'salesorder.index_view')),
                             expect_contents=expect)
     return data, expect
Ejemplo n.º 24
0
 def create_sales_order(self, status_key):
     from psi.app.models import EnumValues
     from psi.app.services.purchase_order import PurchaseOrderService
     user, password = of.user(
         role_names=['direct_sales_order_create',
                     'direct_sales_order_view',
                     'direct_sales_order_edit',
                     'direct_sales_order_delete']
     )
     db_util.save_objects_commit(user)
     fixture.login_as_admin(self.test_client)
     fixture.login_user(self.test_client, user.email, password)
     direct_po = EnumValues.get(const.DIRECT_PO_TYPE_KEY)
     po = of.purchase_order(number_of_line=2, type=direct_po,
                            creator=user)
     po.status = EnumValues.get(const.PO_ISSUED_STATUS_KEY)
     fixture.login_as_admin(self.test_client)
     l_e, g_e, recv = PurchaseOrderService.create_expense_receiving(po)
     customer = of.customer(creator=user)
     db_util.save_objects_commit(po, l_e, g_e, recv, customer)
     fixture.logout_user(self.test_client)
     fixture.login_user(self.test_client, user.email, password)
     order_status = EnumValues.get(status_key)
     order_date = of.faker.date_time_this_year()
     logistic_amount = random.randint(0, 100)
     remark = of.faker.text(max_nb_chars=50)
     data = dict(customer=customer.id, status=order_status.id,
                 order_date=order_date, logistic_amount=logistic_amount,
                 remark=remark)
     total, data = self.prepare_so_lines_data_from_po(po, data)
     expect = [customer.name, order_status.display,
               order_date.strftime("%Y-%m-%d"), remark, str(total)]
     self.assertPageRendered(method=self.test_client.post, data=data,
                             endpoint=self.create_endpoint(view='salesorder'),
                             expect_contents=expect)
     return data, expect
Ejemplo n.º 25
0
    def test_franchise_purchase_order_pages(self):
        from psi.app.models import EnumValues, Organization
        with self.test_client:
            login_as_admin(self.test_client)
            org_type = EnumValues.get(const.FRANCHISE_STORE_ORG_TYPE_KEY)
            organization = object_faker.organization(
                parent=Organization.query.get(1), type=org_type)
            user, pwd = object_faker.user(role_names=[
                'franchise_purchase_order_create',
                'franchise_purchase_order_edit',
                'franchise_purchase_order_delete',
                'franchise_purchase_order_view'
            ],
                                          organization=organization)
            self.test_client.post('/login',
                                  data=dict(email_or_login=user.email,
                                            password=pwd),
                                  follow_redirects=True)
            db_util.save_objects_commit(user, organization)
            login_user(self.test_client, user.email, pwd)
            self.assertPageRendered(url_for('fpo.index_view'))
            self.assertPageRendered(url_for('fpo.create_view'))
            draft_status = EnumValues.get(const.PO_DRAFT_STATUS_KEY)
            order_date = object_faker.faker.date_time_this_year()
            logistic_amount = random.randint(0, 100)
            remark = object_faker.faker.text(max_nb_chars=50)

            expect_contents = [
                draft_status.display,
                str(logistic_amount),
                order_date.strftime("%Y-%m-%d"), remark
            ]
            self.assertPageRendered(method=self.test_client.post,
                                    data=dict(status=draft_status.id,
                                              order_date=order_date,
                                              logistic_amount=logistic_amount,
                                              remark=remark),
                                    endpoint=url_for(
                                        'fpo.create_view',
                                        url=url_for('fpo.index_view')),
                                    expect_contents=expect_contents)

            self.assertPageRendered(expect_contents=expect_contents,
                                    endpoint=url_for('fpo.edit_view',
                                                     url=url_for(
                                                         'fpo.details_view',
                                                         id=1),
                                                     id=1))

            new_remark = object_faker.faker.text(max_nb_chars=50)
            new_logistic_amount = random.randint(0, 100)
            new_order_date = object_faker.faker.date_time_this_year()
            new_expect_contents = [
                draft_status.display,
                str(new_logistic_amount),
                new_order_date.strftime("%Y-%m-%d"), new_remark
            ]
            self.assertPageRendered(
                method=self.test_client.post,
                endpoint=url_for('fpo.edit_view',
                                 url=url_for('fpo.index_view'),
                                 id=1),
                data=dict(status=draft_status.id,
                          order_date=new_order_date,
                          logistic_amount=new_logistic_amount,
                          remark=new_remark),
                expect_contents=new_expect_contents)

            rv = self.assertDeleteSuccessful(
                endpoint=url_for('fpo.delete_view'),
                deleted_data=[
                    draft_status.display, new_remark,
                    new_order_date.strftime("%Y-%m-%d")
                ],
                data=dict(url=url_for('fpo.index_view'), id='1'))