use OGabrielSantos\OrdinationService\Test\Answers\AnswerCollection; use OGabrielSantos\OrdinationService\Candidates\Candidate; use OGabrielSantos\OrdinationService\Candidates\CandidateCollection; use OGabrielSantos\OrdinationService\OrdinationService; use OGabrielSantos\OrdinationService\Candidates\Filters\Name; use OGabrielSantos\OrdinationService\Candidates\Filters\State; use OGabrielSantos\OrdinationService\Candidates\Filters\Email; $questionList = new QuestionCollection([new Question('Em PHP, qual o resultado da..', new AnswerCollection([new Answer('A', '11'), new Answer('B', '13'), new Answer('C', '10'), new Answer('D', '12'), new Answer('E', 'NDA.')]), new Answer('A', '11'), 100), new Question('Como é possível realizar..', new AnswerCollection([new Answer('A', 'Somente através..'), new Answer('B', 'Nunca pela..'), new Answer('C', 'Através da..'), new Answer('D', 'Apenas com a..'), new Answer('E', 'NDA.')]), new Answer('C', 'Através da..'), 200), new Question('Em PHP, qual o resultado da..', new AnswerCollection([new Answer('A', '10bananas20laranjas'), new Answer('B', "''"), new Answer('C', '0'), new Answer('D', '30'), new Answer('E', 'NDA.')]), new Answer('D', '30'), 150), new Question('Quais são os 5 princípios..', new AnswerCollection([new Answer('A', 'Single responsibility principle..'), new Answer('B', 'Single responsibility principle..'), new Answer('C', 'Single responsibility principle..'), new Answer('D', 'Singleton principle'), new Answer('E', 'NDA.')]), new Answer('B', 'Single responsibility principle..'), 300)]); $candidatesList = new CandidateCollection([new Candidate(1, 'Kent Beck', '*****@*****.**', 'SC', new AnswersList('A,C,D,B')), new Candidate(2, 'Eric Evans', '*****@*****.**', 'DF', new AnswersList('B,C,A,E')), new Candidate(3, 'Martin Fowler', '*****@*****.**', 'SP', new AnswersList('E,A,B,E')), new Candidate(4, 'Alan Kay', '*****@*****.**', 'SC', new AnswersList('A,C,E,E')), new Candidate(5, 'Robert C. Martin', '*****@*****.**', 'RS', new AnswersList('E,B,D,B'))]); $test = new Test('2013-10-25', $questionList); // 1, 5, 4, 2, 3 $ordinationService = new OrdinationService($test, $candidatesList); $ordinationService->reorder(); echo $ordinationService->getOrdered() . "\n"; // 1, 4 $ordinationService = new OrdinationService($test, $candidatesList); $ordinationService->filter(State::equal('SC')); $ordinationService->reorder(); echo $ordinationService->getOrdered() . "\n"; // 5, 4, 2, 3 $ordinationService = new OrdinationService($test, $candidatesList); $ordinationService->filter(Name::contain('A')); $ordinationService->reorder(); echo $ordinationService->getOrdered() . "\n"; // 4, 3 $ordinationService = new OrdinationService($test, $candidatesList); $ordinationService->filter(Name::contain('A')); $ordinationService->filter(Email::contain('L')); $ordinationService->reorder(); echo $ordinationService->getOrdered() . "\n";
/** * @test */ public function serviceShouldReorderWithNameAndEmailFilter() { $ordinationService = new OrdinationService($this->test, $this->candidates); $ordinationService->filter(Name::contain('A')); $ordinationService->filter(Email::contain('L')); $ordinationService->reorder(); $this->assertEquals("Candidatos:\n4, 3", $ordinationService->getOrdered()); }