コード例 #1
0
    def test_create_new_contract(self):
        '''Test contract object behaves as expected
        '''
        # test that no additional properties works
        contract_data = dict(description='test')

        contract = ContractBaseFactory.build(**contract_data)
        self.assertEquals(contract.description, 'test')

        # test that additional properties also works
        contract_data_props = dict(description='test2')
        contract_with_props = ContractBaseFactory.build(**contract_data_props)

        prop1 = ContractPropertyFactory.build(contract=contract_with_props)
        prop2 = ContractPropertyFactory.build(contract=contract_with_props)

        self.assertEquals(contract_with_props.description, 'test2')
        self.assertEquals(len(contract_with_props.properties), 2)
        self.assertTrue(prop1 in contract_with_props.properties)
        self.assertTrue(prop2 in contract_with_props.properties)

        # this should fail with non-existing stage
        contract_data_fails = dict(description='test2', current_stage_id=1)
        try:
            ContractBaseFactory.build(**contract_data_fails)
            # this should never work, so break the tests if we get here
            self.assertTrue(False)
        except:
            self.assertTrue(True)
コード例 #2
0
 def test_archived_contract_status(self):
     '''Test contract that is archived
     '''
     archived = ContractBaseFactory.build(
         expiration_date=self.tomorrow, is_archived=True,
     )
     self.assertEquals(archived.scout_contract_status, 'archived')
コード例 #3
0
 def test_replaced_contract_status(self):
     '''Test contract that is replaced
     '''
     replaced = ContractBaseFactory.build(expiration_date=self.tomorrow,
                                          is_archived=True,
                                          children=[self.active_contract])
     self.assertEquals(replaced.scout_contract_status, 'replaced')
コード例 #4
0
 def test_no_expiration_archived(self):
     '''Test contract that is archived but has no expiration date
     '''
     replaced = ContractBaseFactory.build(
         is_archived=True,
     )
     self.assertEquals(replaced.scout_contract_status, 'archived')
コード例 #5
0
 def test_expired_contract_status(self):
     '''Test contract that is expired
     '''
     expired = ContractBaseFactory.build(
         expiration_date=self.yesterday, is_archived=True,
     )
     self.assertEquals(expired.scout_contract_status, 'expired')
コード例 #6
0
    def setUp(self):
        super(TestContractRenewals, self).setUp()
        self.user1 = UserFactory.build(email='user1')

        self.child_contract = ContractBaseFactory.build(
            expiration_date=datetime.date.today() + datetime.timedelta(1),
            is_archived=False, description='child'
        )

        self.child_contract2 = ContractBaseFactory.build(
            expiration_date=datetime.date.today() + datetime.timedelta(1),
            is_archived=False, parent_id=self.active_contract.id, description='child2'
        )

        self.active_contract.followers = [self.user1]
        self.active_contract.children.append(self.child_contract)
コード例 #7
0
 def test_archived_contract_status(self):
     '''Test contract that is archived
     '''
     archived = ContractBaseFactory.build(
         expiration_date=self.tomorrow,
         is_archived=True,
     )
     self.assertEquals(archived.scout_contract_status, 'archived')
コード例 #8
0
 def test_expired_contract_status(self):
     '''Test contract that is expired
     '''
     expired = ContractBaseFactory.build(
         expiration_date=self.yesterday,
         is_archived=True,
     )
     self.assertEquals(expired.scout_contract_status, 'expired')
コード例 #9
0
 def test_replaced_contract_status(self):
     '''Test contract that is replaced
     '''
     replaced = ContractBaseFactory.build(
         expiration_date=self.tomorrow, is_archived=True,
         children=[self.active_contract]
     )
     self.assertEquals(replaced.scout_contract_status, 'replaced')
コード例 #10
0
    def setUp(self):
        super(TestContractRenewals, self).setUp()
        self.user1 = UserFactory.build(email='user1')

        self.child_contract = ContractBaseFactory.build(
            expiration_date=datetime.date.today() + datetime.timedelta(1),
            is_archived=False,
            description='child')

        self.child_contract2 = ContractBaseFactory.build(
            expiration_date=datetime.date.today() + datetime.timedelta(1),
            is_archived=False,
            parent_id=self.active_contract.id,
            description='child2')

        self.active_contract.followers = [self.user1]
        self.active_contract.children.append(self.child_contract)
コード例 #11
0
    def setUp(self):
        from flask_migrate import upgrade
        upgrade()

        # insert the users/roles
        self.admin_role = get_a_role('admin')
        self.superadmin_role = get_a_role('superadmin')
        self.admin_user = insert_a_user(email='*****@*****.**',
                                        role=self.admin_role)
        self.superadmin_user = insert_a_user(email='*****@*****.**',
                                             role=self.superadmin_role)

        # insert the companies/contracts
        self.company_1 = insert_a_company(name='ship', insert_contract=False)
        company_2 = insert_a_company(name='boat', insert_contract=False)

        contract_type = ContractTypeFactory.create(name='test')
        self.contract_type2 = ContractTypeFactory.create(name='test2')

        self.contract1 = ContractBaseFactory.create(
            description='vessel',
            companies=[company_2],
            line_items=[LineItem(description='NAVY')],
            expiration_date=datetime.datetime.today() + datetime.timedelta(1),
            is_archived=False,
            financial_id='123',
            contract_type=contract_type)
        ContractBaseFactory.create(
            description='sail',
            financial_id='456',
            companies=[self.company_1],
            line_items=[LineItem(description='sunfish')],
            is_archived=False,
            expiration_date=datetime.datetime.today() + datetime.timedelta(1),
            contract_type=contract_type)
        ContractBaseFactory.create(
            description='sunfish',
            financial_id='789',
            properties=[
                ContractPropertyFactory.create(key='foo', value='engine')
            ],
            expiration_date=datetime.datetime.today() + datetime.timedelta(1),
            is_archived=False,
            contract_type=contract_type)
        ContractBaseFactory.create(
            description='sunfish',
            financial_id='012',
            properties=[
                ContractPropertyFactory.create(key='foo', value='engine')
            ],
            expiration_date=datetime.datetime.today() - datetime.timedelta(1),
            is_archived=False,
            contract_type=self.contract_type2)

        # db.session.execute('''
        #     REFRESH MATERIALIZED VIEW CONCURRENTLY search_view
        # ''')
        db.session.commit()
コード例 #12
0
 def setUp(self):
     super(ContractObjectTestBase, self).setUp()
     self.today = datetime.datetime.today()
     self.tomorrow = datetime.datetime.today() + datetime.timedelta(1)
     self.yesterday = datetime.datetime.today() - datetime.timedelta(1)
     self.active_contract = ContractBaseFactory.build(
         expiration_date=datetime.date.today() + datetime.timedelta(1),
         is_archived=False, parent_id=None, description='test description',
         financial_id=1234
     )
コード例 #13
0
    def setUp(self):
        super(TestContractStageSort, self).setUp()
        now = datetime.datetime.now().replace(second=0, microsecond=0)
        old = now - datetime.timedelta(minutes=1)
        older = now - datetime.timedelta(minutes=2)
        new = now + datetime.timedelta(minutes=1)
        newer = now + datetime.timedelta(minutes=2)

        stage1, stage2 = StageFactory.build(), StageFactory.build()
        flow = FlowFactory.build(stage_order=[stage1.id, stage2.id])
        self.contract = ContractBaseFactory.build(current_stage_id=stage2.id)

        contract_stage1 = ContractStageFactory.build(
            stage=stage1, stage_id=stage1.id, flow=flow
        )
        contract_stage2 = ContractStageFactory.build(
            stage=stage2, stage_id=stage2.id, flow=flow
        )

        self.contract.build_complete_action_log = Mock()

        self.enter_one = ContractStageActionItemFactory.build(
            action_type='entered', taken_at=older, contract_stage=contract_stage1,
            action_detail={'timestamp': older.isoformat()}
        )
        self.exit_one = ContractStageActionItemFactory.build(
            action_type='exited', taken_at=old, contract_stage=contract_stage1,
            action_detail={'timestamp': old.isoformat()}
        )
        self.enter_two = ContractStageActionItemFactory.build(
            action_type='entered', taken_at=old.replace(second=1),
            contract_stage=contract_stage2,
            action_detail={'timestamp': old.isoformat()}
        )

        self.revert_one = ContractStageActionItemFactory.build(
            action_type='reversion', taken_at=now,
            contract_stage=contract_stage1,
            action_detail={'timestamp': now.isoformat()}
        )
        self.exit_one_post_revert = ContractStageActionItemFactory.build(
            action_type='exited', taken_at=new, contract_stage=contract_stage1,
            action_detail={'timestamp': new.isoformat()}
        )
        self.enter_two_post_revert = ContractStageActionItemFactory.build(
            action_type='entered', taken_at=new.replace(second=1),
            contract_stage=contract_stage2,
            action_detail={'timestamp': new.isoformat()}
        )

        self.note = ContractStageActionItemFactory.build(
            action_type='note', taken_at=newer,
            contract_stage=contract_stage2,
            action_detail={'timestamp': newer.isoformat()}
        )
コード例 #14
0
 def setUp(self):
     super(ContractObjectTestBase, self).setUp()
     self.today = datetime.datetime.today()
     self.tomorrow = datetime.datetime.today() + datetime.timedelta(1)
     self.yesterday = datetime.datetime.today() - datetime.timedelta(1)
     self.active_contract = ContractBaseFactory.build(
         expiration_date=datetime.date.today() + datetime.timedelta(1),
         is_archived=False,
         parent_id=None,
         description='test description',
         financial_id=1234)
コード例 #15
0
    def test_transition_last(self, complete):
        _get = Mock(return_value=ContractStage(stage=self.stage1))
        ContractStage.get_one = _get

        self.active_contract.parent = ContractBaseFactory.build(description='test')
        self.active_contract.current_stage_id = self.stage3.id
        self.active_contract.current_stage = self.stage3

        action = self.active_contract.transition(self.user)
        self.assertEquals(_get.call_count, 1)
        self.assertEquals(len(action), 1)
        self.assertEquals(action[0].action_type, 'exited')
        self.assertTrue(complete.called_once)
コード例 #16
0
def insert_a_contract(properties=None, **kwargs):
    contract_data = dict(description="test2") if not kwargs else dict(kwargs)

    contract = ContractBaseFactory.create(**contract_data)

    if properties:
        [i.update({"contract": contract}) for i in properties]
    else:
        properties = [dict(contract=contract, key="foo", value="bar"), dict(contract=contract, key="baz", value="qux")]

    for _property in properties:
        ContractPropertyFactory.create(**_property)
    return contract
    def test_transition_last(self, complete):
        _get = Mock(return_value=ContractStage(stage=self.stage1))
        ContractStage.get_one = _get

        self.active_contract.parent = ContractBaseFactory.build(description='test')
        self.active_contract.current_stage_id = self.stage3.id
        self.active_contract.current_stage = self.stage3

        action = self.active_contract.transition(self.user)
        self.assertEquals(_get.call_count, 1)
        self.assertEquals(len(action), 1)
        self.assertEquals(action[0].action_type, 'exited')
        self.assertTrue(complete.called_once)
コード例 #18
0
    def test_create_new_contract(self):
        '''Test contract object behaves as expected
        '''
        # test that no additional properties works
        contract_data = dict(
            description='test'
        )

        contract = ContractBaseFactory.build(**contract_data)
        self.assertEquals(contract.description, 'test')

        # test that additional properties also works
        contract_data_props = dict(
            description='test2'
        )
        contract_with_props = ContractBaseFactory.build(**contract_data_props)

        prop1 = ContractPropertyFactory.build(contract=contract_with_props)
        prop2 = ContractPropertyFactory.build(contract=contract_with_props)

        self.assertEquals(contract_with_props.description, 'test2')
        self.assertEquals(len(contract_with_props.properties), 2)
        self.assertTrue(prop1 in contract_with_props.properties)
        self.assertTrue(prop2 in contract_with_props.properties)

        # this should fail with non-existing stage
        contract_data_fails = dict(
            description='test2',
            current_stage_id=1
        )
        try:
            ContractBaseFactory.build(**contract_data_fails)
            # this should never work, so break the tests if we get here
            self.assertTrue(False)
        except:
            self.assertTrue(True)
コード例 #19
0
def insert_a_contract(properties=None, **kwargs):
    contract_data = dict(description='test2', ) if not kwargs else dict(kwargs)

    contract = ContractBaseFactory.create(**contract_data)

    if properties:
        [i.update({'contract': contract}) for i in properties]
    else:
        properties = [
            dict(contract=contract, key='foo', value='bar'),
            dict(contract=contract, key='baz', value='qux')
        ]

    for _property in properties:
        ContractPropertyFactory.create(**_property)
    return contract
コード例 #20
0
    def setUp(self):
        super(TestScoutJobs, self).setUp()
        self.user = UserFactory.create()
        ContractBaseFactory.create(
            expiration_date=datetime.date.today() + datetime.timedelta(30), description="foobar", followers=[self.user]
        )

        ContractBaseFactory.create(expiration_date=datetime.date.today(), description="qux", followers=[self.user])

        ContractBaseFactory.create(
            expiration_date=datetime.date.today() + datetime.timedelta(1), description="qux", followers=[self.user]
        )
コード例 #21
0
def insert_a_contract(properties=None, **kwargs):
    contract_data = dict(
        description='test2',
    ) if not kwargs else dict(kwargs)

    contract = ContractBaseFactory.create(**contract_data)

    if properties:
        [i.update({'contract': contract}) for i in properties]
    else:
        properties = [
            dict(contract=contract, key='foo', value='bar'),
            dict(contract=contract, key='baz', value='qux')
        ]

    for _property in properties:
        ContractPropertyFactory.create(**_property)
    return contract
コード例 #22
0
    def setUp(self):
        from flask_migrate import upgrade
        upgrade()

        # insert the users/roles
        self.admin_role = get_a_role('admin')
        self.superadmin_role = get_a_role('superadmin')
        self.admin_user = insert_a_user(email='*****@*****.**', role=self.admin_role)
        self.superadmin_user = insert_a_user(email='*****@*****.**', role=self.superadmin_role)

        # insert the companies/contracts
        self.company_1 = insert_a_company(name='ship', insert_contract=False)
        company_2 = insert_a_company(name='boat', insert_contract=False)

        contract_type = ContractTypeFactory.create(name='test')
        self.contract_type2 = ContractTypeFactory.create(name='test2')

        self.contract1 = ContractBaseFactory.create(
            description='vessel', companies=[company_2], line_items=[LineItem(description='NAVY')],
            expiration_date=datetime.datetime.today() + datetime.timedelta(1), is_archived=False,
            financial_id='123', contract_type=contract_type
        )
        ContractBaseFactory.create(
            description='sail', financial_id='456', companies=[self.company_1],
            line_items=[LineItem(description='sunfish')], is_archived=False,
            expiration_date=datetime.datetime.today() + datetime.timedelta(1),
            contract_type=contract_type
        )
        ContractBaseFactory.create(
            description='sunfish', financial_id='789',
            properties=[ContractPropertyFactory.create(key='foo', value='engine')],
            expiration_date=datetime.datetime.today() + datetime.timedelta(1), is_archived=False,
            contract_type=contract_type
        )
        ContractBaseFactory.create(
            description='sunfish', financial_id='012',
            properties=[ContractPropertyFactory.create(key='foo', value='engine')],
            expiration_date=datetime.datetime.today() - datetime.timedelta(1), is_archived=False,
            contract_type=self.contract_type2
        )

        # db.session.execute('''
        #     REFRESH MATERIALIZED VIEW CONCURRENTLY search_view
        # ''')
        db.session.commit()
コード例 #23
0
    def setUp(self):
        super(TestScoutJobs, self).setUp()
        self.user = UserFactory.create()
        ContractBaseFactory.create(expiration_date=datetime.date.today() +
                                   datetime.timedelta(30),
                                   description='foobar',
                                   followers=[self.user])

        ContractBaseFactory.create(expiration_date=datetime.date.today(),
                                   description='qux',
                                   followers=[self.user])

        ContractBaseFactory.create(expiration_date=datetime.date.today() +
                                   datetime.timedelta(1),
                                   description='qux',
                                   followers=[self.user])
コード例 #24
0
 def test_no_expiration_archived(self):
     '''Test contract that is archived but has no expiration date
     '''
     replaced = ContractBaseFactory.build(is_archived=True, )
     self.assertEquals(replaced.scout_contract_status, 'archived')
    def setUp(self):
        super(TestContractStageSort, self).setUp()
        now = datetime.datetime.now().replace(second=0, microsecond=0)
        old = now - datetime.timedelta(minutes=1)
        older = now - datetime.timedelta(minutes=2)
        new = now + datetime.timedelta(minutes=1)
        newer = now + datetime.timedelta(minutes=2)

        stage1, stage2 = StageFactory.build(), StageFactory.build()
        flow = FlowFactory.build(stage_order=[stage1.id, stage2.id])
        self.contract = ContractBaseFactory.build(current_stage_id=stage2.id)

        contract_stage1 = ContractStageFactory.build(stage=stage1, stage_id=stage1.id, flow=flow)
        contract_stage2 = ContractStageFactory.build(stage=stage2, stage_id=stage2.id, flow=flow)

        self.contract.build_complete_action_log = Mock()

        self.enter_one = ContractStageActionItemFactory.build(
            action_type="entered",
            taken_at=older,
            contract_stage=contract_stage1,
            action_detail={"timestamp": older.isoformat()},
        )
        self.exit_one = ContractStageActionItemFactory.build(
            action_type="exited",
            taken_at=old,
            contract_stage=contract_stage1,
            action_detail={"timestamp": old.isoformat()},
        )
        self.enter_two = ContractStageActionItemFactory.build(
            action_type="entered",
            taken_at=old.replace(second=1),
            contract_stage=contract_stage2,
            action_detail={"timestamp": old.isoformat()},
        )

        self.revert_one = ContractStageActionItemFactory.build(
            action_type="reversion",
            taken_at=now,
            contract_stage=contract_stage1,
            action_detail={"timestamp": now.isoformat()},
        )
        self.exit_one_post_revert = ContractStageActionItemFactory.build(
            action_type="exited",
            taken_at=new,
            contract_stage=contract_stage1,
            action_detail={"timestamp": new.isoformat()},
        )
        self.enter_two_post_revert = ContractStageActionItemFactory.build(
            action_type="entered",
            taken_at=new.replace(second=1),
            contract_stage=contract_stage2,
            action_detail={"timestamp": new.isoformat()},
        )

        self.note = ContractStageActionItemFactory.build(
            action_type="note",
            taken_at=newer,
            contract_stage=contract_stage2,
            action_detail={"timestamp": newer.isoformat()},
        )