| Conditions | 1 |
| Paths | 1 |
| Total Lines | 79 |
| Code Lines | 54 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 1 | ||
| Bugs | 0 | Features | 1 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 26 | public function testContextWithAPLAndAdvancedFields(): void |
||
| 27 | { |
||
| 28 | $requestBody = file_get_contents(__DIR__ . '/RequestData/contextWithAPL.json'); |
||
| 29 | $request = Request::fromAmazonRequest($requestBody, 'https://s3.amazonaws.com/echo.api/echo-api-cert.pem', 'signature'); |
||
| 30 | |||
| 31 | $this->assertInstanceOf(LaunchRequest::class, $request->request); |
||
| 32 | $this->assertInstanceOf(Context::class, $request->context); |
||
| 33 | |||
| 34 | // Test Advertising |
||
| 35 | $this->assertInstanceOf(Advertising::class, $request->context->advertising); |
||
| 36 | $this->assertEquals('12345-advertising-id', $request->context->advertising->advertisingId); |
||
| 37 | $this->assertFalse($request->context->advertising->limitAdTracking); |
||
| 38 | |||
| 39 | // Test Viewport |
||
| 40 | $this->assertInstanceOf(Viewport::class, $request->context->viewport); |
||
| 41 | $this->assertEquals(ViewportMode::TV, $request->context->viewport->mode); |
||
| 42 | $this->assertEquals(ViewportShape::RECTANGLE, $request->context->viewport->shape); |
||
| 43 | $this->assertEquals(1920, $request->context->viewport->pixelWidth); |
||
| 44 | $this->assertEquals(1080, $request->context->viewport->pixelHeight); |
||
| 45 | $this->assertEquals(160, $request->context->viewport->dpi); |
||
| 46 | |||
| 47 | // Test Viewport Experiences |
||
| 48 | $this->assertCount(1, $request->context->viewport->experiences); |
||
| 49 | $this->assertInstanceOf(Experience::class, $request->context->viewport->experiences[0]); |
||
| 50 | $this->assertEquals('246', $request->context->viewport->experiences[0]->arcMinuteWidth); |
||
| 51 | $this->assertEquals('144', $request->context->viewport->experiences[0]->arcMinuteHeight); |
||
| 52 | $this->assertFalse($request->context->viewport->experiences[0]->canRotate); |
||
| 53 | |||
| 54 | // Test Viewport Touch and Keyboard |
||
| 55 | $this->assertCount(1, $request->context->viewport->touch); |
||
| 56 | $this->assertEquals(TouchType::SINGLE, $request->context->viewport->touch[0]); |
||
| 57 | $this->assertCount(1, $request->context->viewport->keyboard); |
||
| 58 | $this->assertEquals(KeyboardType::DIRECTION, $request->context->viewport->keyboard[0]); |
||
| 59 | |||
| 60 | // Test Viewport Video |
||
| 61 | $this->assertInstanceOf(Video::class, $request->context->viewport->video); |
||
| 62 | $this->assertCount(2, $request->context->viewport->video->codecs); |
||
| 63 | $this->assertEquals('H_264_42', $request->context->viewport->video->codecs[0]); |
||
| 64 | $this->assertEquals('H_264_41', $request->context->viewport->video->codecs[1]); |
||
| 65 | |||
| 66 | // Test Viewports array |
||
| 67 | $this->assertCount(1, $request->context->viewports); |
||
| 68 | $this->assertInstanceOf(Viewport::class, $request->context->viewports[0]); |
||
| 69 | $this->assertEquals(ViewportMode::HUB, $request->context->viewports[0]->mode); |
||
| 70 | $this->assertEquals(ViewportShape::ROUND, $request->context->viewports[0]->shape); |
||
| 71 | $this->assertEquals(960, $request->context->viewports[0]->pixelWidth); |
||
| 72 | |||
| 73 | // Test Alexa.Presentation.APL |
||
| 74 | $this->assertInstanceOf(AlexaPresentationAPL::class, $request->context->apl); |
||
| 75 | $this->assertEquals('apl-token-123', $request->context->apl->token); |
||
| 76 | $this->assertEquals('2024.1', $request->context->apl->version); |
||
| 77 | $this->assertCount(1, $request->context->apl->componentsVisibleOnScreen); |
||
| 78 | |||
| 79 | // Test ComponentVisibleOnScreen |
||
| 80 | $component = $request->context->apl->componentsVisibleOnScreen[0]; |
||
| 81 | $this->assertInstanceOf(ComponentVisibleOnScreen::class, $component); |
||
| 82 | $this->assertEquals('main-container', $component->id); |
||
| 83 | $this->assertEquals('Container', $component->type); |
||
| 84 | $this->assertEquals(':10001', $component->uid); |
||
| 85 | $this->assertEquals('1280x720+0+0:0', $component->position); |
||
| 86 | |||
| 87 | // Test Component Entities |
||
| 88 | $this->assertCount(1, $component->entities); |
||
| 89 | $this->assertInstanceOf(Entity::class, $component->entities[0]); |
||
| 90 | $this->assertEquals('entity1', $component->entities[0]->id); |
||
| 91 | $this->assertEquals('text', $component->entities[0]->type); |
||
| 92 | $this->assertEquals('Hello World', $component->entities[0]->value); |
||
| 93 | |||
| 94 | // Test Component Tags with Viewport |
||
| 95 | $this->assertNotNull($component->tags); |
||
| 96 | $this->assertInstanceOf(ViewportTag::class, $component->tags->viewport); |
||
| 97 | $this->assertEquals('2024-01-01T12:00:00Z', $component->tags->viewport->utcTime); |
||
| 98 | $this->assertEquals(5000, $component->tags->viewport->elapsedTime); |
||
| 99 | |||
| 100 | // Test Extensions |
||
| 101 | $this->assertNotNull($request->context->extensions); |
||
| 102 | $this->assertArrayHasKey('available', $request->context->extensions); |
||
| 103 | $this->assertArrayHasKey('settings', $request->context->extensions); |
||
| 104 | $this->assertArrayHasKey('aplext:backstack:10', $request->context->extensions['available']); |
||
| 105 | } |
||
| 209 |