FOSSology  4.4.0
Open Source License Compliance by Open Source Software
ClearingDecisionFilterTest.php
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2014-2015 Siemens AG
4 
5  SPDX-License-Identifier: GPL-2.0-only
6 */
7 
9 
13 use Mockery as M;
14 
15 class ClearingDecisionFilterTest extends \PHPUnit\Framework\TestCase
16 {
17 
19  private $clearingDecisionFilter;
20 
21  protected function setUp() : void
22  {
23  $this->clearingDecisionFilter = new ClearingDecisionFilter();
24  }
25 
26  protected function tearDown() : void
27  {
28  M::close();
29  }
30 
31  public function testFilterCurrentClearingDecisions()
32  {
33  $itemId = 543;
34  $pfileId = 432;
35  $decision1 = M::mock(ClearingDecision::class);
36  $decision1->shouldReceive("getType")->atLeast()->once()->withNoArgs()->andReturn(DecisionTypes::IDENTIFIED);
37  $decision1->shouldReceive("getScope")->atLeast()->once()->withNoArgs()->andReturn(DecisionScopes::REPO);
38  $decision1->shouldReceive("getUploadTreeId")->andReturn($itemId);
39  $decision1->shouldReceive("getPfileId")->andReturn($pfileId);
40  $decision2 = M::mock(ClearingDecision::class);
41  $decision2->shouldReceive("getType")->atLeast()->once()->withNoArgs()->andReturn(DecisionTypes::IDENTIFIED);
42  $decision2->shouldReceive("getScope")->atLeast()->once()->withNoArgs()->andReturn(DecisionScopes::ITEM);
43  $decision2->shouldReceive("getUploadTreeId")->andReturn($itemId+1);
44  $decision2->shouldReceive("getPfileId")->andReturn($pfileId);
45  $decisionIrrel = M::mock(ClearingDecision::class);
46  $decisionIrrel->shouldReceive("getType")->atLeast()->once()->withNoArgs()->andReturn(DecisionTypes::IRRELEVANT);
47 
48  $filteredClearingDecisions = $this->clearingDecisionFilter->filterCurrentClearingDecisions(array($decision1, $decisionIrrel, $decision2));
49 
50  assertThat($this->clearingDecisionFilter->getDecisionOf($filteredClearingDecisions, $itemId, $pfileId), is(sameInstance($decision1)));
51  assertThat($this->clearingDecisionFilter->getDecisionOf($filteredClearingDecisions, $itemId+1, $pfileId), is(sameInstance($decision2)));
52  assertThat($this->clearingDecisionFilter->getDecisionOf($filteredClearingDecisions, $itemId+2, $pfileId), is(sameInstance($decision1)));
53  }
54 
55 
56  public function testCreateClearingResultCreationFailsOfNoEventsWereFound()
57  {
58  $this->expectException(\InvalidArgumentException::class);
59  $this->expectExceptionMessage("unhandled clearing decision scope '12345'");
60  $itemId = 543;
61  $pfileId = 432;
62  $decision = M::mock(ClearingDecision::class);
63  $decision->shouldReceive("getType")->atLeast()->once()->withNoArgs()->andReturn(DecisionTypes::IDENTIFIED);
64  $decision->shouldReceive("getScope")->atLeast()->once()->withNoArgs()->andReturn(12345);
65  $decision->shouldReceive("getUploadTreeId")->andReturn($itemId);
66  $decision->shouldReceive("getPfileId")->andReturn($pfileId);
67 
68  $this->clearingDecisionFilter->filterCurrentClearingDecisions(array($decision));
69  }
70 
71  public function testFilterCurrentReusableClearingDecisions()
72  {
73  $itemId = 543;
74  $itemId2 = 432;
75  $decision1 = M::mock(ClearingDecision::class);
76  $decision1->shouldReceive("getUploadTreeId")->andReturn($itemId);
77  $decision2 = M::mock(ClearingDecision::class);
78  $decision2->shouldReceive("getUploadTreeId")->andReturn($itemId2);
79 
80  $filteredClearingDecisions = $this->clearingDecisionFilter->filterCurrentReusableClearingDecisions(array($decision1, $decision2));
81  $expecedArray = array($itemId => $decision1, $itemId2 => $decision2 );
82 
83  assertThat($filteredClearingDecisions, containsInAnyOrder($expecedArray));
84  }
85 }
Various utility functions to filter ClearingDecision.
Contains business rules for FOSSology.