void InsertProjectTester::testExistingTeamResourceRequest() { Part pp(0); MainDocument part( &pp ); pp.setDocument( &part ); addCalendar( part ); addResourceGroup( part ); Resource *r = addResource( part ); r->setName( "R1" ); r->setType( Resource::Type_Team ); ResourceGroup *tg = addResourceGroup( part ); tg->setName( "TG" ); Resource *t1 = addResource( part, tg ); t1->setName( "T1" ); r->addTeamMemberId( t1->id() ); Resource *t2 = addResource( part, tg ); t2->setName( "T2" ); r->addTeamMemberId( t2->id() ); addTask( part ); addGroupRequest( part ); addResourceRequest( part ); QDomDocument doc = part.saveXML(); Part pp2(0); MainDocument part2( &pp2 ); pp2.setDocument( &part2 ); Project &p2 = part2.getProject(); part2.insertProject( part.getProject(), 0, 0 ); ResourceRequest *rr = p2.childNode( 0 )->requests().find( p2.resourceGroupAt( 0 )->resourceAt( 0 ) ); QVERIFY( rr ); QCOMPARE( rr->resource()->teamMembers().count(), 2 ); QCOMPARE( rr->resource()->teamMembers().at( 0 ), t1 ); QCOMPARE( rr->resource()->teamMembers().at( 1 ), t2 ); KoXmlDocument xdoc; xdoc.setContent( doc.toString() ); part.loadXML( xdoc, 0 ); part2.insertProject( part.getProject(), 0, 0 ); QCOMPARE( p2.numChildren(), 2 ); QVERIFY( ! p2.childNode( 0 )->requests().isEmpty() ); rr = p2.childNode( 0 )->requests().find( p2.resourceGroupAt( 0 )->resourceAt( 0 ) ); QVERIFY( rr ); QCOMPARE( rr->resource()->teamMembers().count(), 2 ); QCOMPARE( rr->resource()->teamMembers().at( 0 ), t1 ); QCOMPARE( rr->resource()->teamMembers().at( 1 ), t2 ); QVERIFY( ! p2.childNode( 1 )->requests().isEmpty() ); rr = p2.childNode( 1 )->requests().find( p2.resourceGroupAt( 0 )->resourceAt( 0 ) ); QVERIFY( rr ); QCOMPARE( rr->resource()->teamMembers().count(), 2 ); QCOMPARE( rr->resource()->teamMembers().at( 0 ), t1 ); QCOMPARE( rr->resource()->teamMembers().at( 1 ), t2 ); }
ResourceGroup *InsertProjectTester::addResourceGroup( MainDocument &part ) { Project &p = part.getProject(); ResourceGroup *g = new ResourceGroup(); KUndo2Command *c = new AddResourceGroupCmd( &p, g ); part.addCommand( c ); QString s = QString( "G%1" ).arg( part.getProject().indexOf( g ) ); g->setName( s ); return g; }
static ResourceGroup *createWorkResources( Project &p, int count ) { ResourceGroup *g = new ResourceGroup(); g->setName( "G1" ); p.addResourceGroup( g ); for ( int i = 0; i < count; ++i ) { Resource *r = new Resource(); r->setName( QString( "R%1" ).arg( i + 1 ) ); p.addResource( g, r ); } return g; }
void ResourceModelTester::initTestCase() { m_project = new Project(); m_project->setName( "P1" ); m_project->setId( m_project->uniqueNodeId() ); m_project->registerNodeId( m_project ); DateTime targetstart = DateTime( QDate::currentDate(), QTime(0,0,0) ); DateTime targetend = DateTime( targetstart.addDays( 3 ) ); m_project->setConstraintStartTime( targetstart ); m_project->setConstraintEndTime( targetend); // standard worktime defines 8 hour day as default QVERIFY( m_project->standardWorktime() ); QCOMPARE( m_project->standardWorktime()->day(), 8.0 ); m_calendar = new Calendar( "Test" ); m_calendar->setDefault( true ); QTime t1( 9, 0, 0 ); QTime t2 ( 17, 0, 0 ); int length = t1.msecsTo( t2 ); for ( int i=1; i <= 7; ++i ) { CalendarDay *d = m_calendar->weekday( i ); d->setState( CalendarDay::Working ); d->addInterval( t1, length ); } m_project->addCalendar( m_calendar ); ResourceGroup *g = new ResourceGroup(); g->setName( "G1" ); m_project->addResourceGroup( g ); m_resource = new Resource(); m_resource->setName( "R1" ); m_resource->setCalendar( m_calendar ); m_project->addResource( g, m_resource ); m_task = m_project->createTask(); m_task->setName( "T1" ); m_project->addTask( m_task, m_project ); m_task->estimate()->setUnit( Duration::Unit_h ); m_task->estimate()->setExpectedEstimate( 8.0 ); m_task->estimate()->setType( Estimate::Type_Effort ); ResourceGroupRequest *gr = new ResourceGroupRequest( g ); gr->addResourceRequest( new ResourceRequest( m_resource, 100 ) ); m_task->addRequest( gr ); m_model.setProject( m_project ); QModelIndex idx; int rows = m_model.rowCount( idx ); QCOMPARE( rows, 1 ); idx = m_model.index( 0, 0, idx ); QCOMPARE( g->name(), m_model.data( idx ).toString() ); rows = m_model.rowCount( idx ); QCOMPARE( rows, 1 ); idx = m_model.index( 0, 0, idx ); QCOMPARE( m_resource->name(), m_model.data( idx ).toString() ); idx = m_model.parent( idx ); QCOMPARE( g->name(), m_model.data( idx ).toString() ); }