Having a at the local. 🍺

' . PHP_EOL; $note = Note::factory([ 'note' => 'Having a #beer at the local. 🍺', ])->create(); $this->assertEquals($expected, $note->note); } /** * Look for a default image in the contact’s h-card for the makeHCards method. * * @test */ public function defaultImageUsedAsFallbackInMakehcardsMethod(): void { // phpcs:ignore $expected = '

Hi Tantek Çelik t

' . PHP_EOL; Contact::factory()->create([ 'nick' => 'tantek', 'name' => 'Tantek Çelik', 'homepage' => 'http://tantek.com', 'twitter' => 't', 'facebook' => null, ]); $note = Note::factory()->create([ 'note' => 'Hi @tantek', ]); $this->assertEquals($expected, $note->note); } /** * Look for a specific profile image in the contact’s h-card. * * @test */ public function specificProfileImageUsedInMakehcardsMethod(): void { Contact::factory()->create([ 'nick' => 'aaron', 'name' => 'Aaron Parecki', 'homepage' => 'https://aaronparecki.com', 'twitter' => null, 'facebook' => 123456, ]); $fileSystem = new Filesystem(); $fileSystem->ensureDirectoryExists(public_path('/assets/profile-images/aaronparecki.com')); if (! $fileSystem->exists(public_path('/assets/profile-images/aaronparecki.com/image'))) { $fileSystem->copy('./tests/aaron.png', public_path('/assets/profile-images/aaronparecki.com/image')); } $note = Note::factory()->create([ 'note' => 'Hi @aaron', ]); // phpcs:ignore $expected = '

Hi Aaron Parecki Facebook

' . PHP_EOL; $this->assertEquals($expected, $note->note); } /** * Look for twitter URL when there’s no associated contact. * * @test */ public function twitterLinkIsCreatedWhenNoContactFound(): void { $expected = '

Hi @bob

' . PHP_EOL; $note = Note::factory()->create([ 'note' => 'Hi @bob', ]); $this->assertEquals($expected, $note->note); } /** @test */ public function shorturlMethodReturnsExpectedValue(): void { $note = Note::factory()->make(); $note->id = 14; $this->assertEquals(config('url.shorturl') . '/notes/E', $note->shorturl); } /** @test */ public function weGetLatitudeLongitudeValuesOfAssociatedPlaceOfNote(): void { $place = Place::factory()->create([ 'latitude' => '53.4983', 'longitude' => '-2.3805', ]); $note = Note::factory()->create([ 'place_id' => $place->id, ]); $this->assertEquals('53.4983', $note->latitude); $this->assertEquals('-2.3805', $note->longitude); } /** @test */ public function whenNoAssociatedPlaceWeGetNullForLatitudeLongitudeValues(): void { $note = Note::factory()->create(); $this->assertNull($note->latitude); $this->assertNull($note->longitude); } /** @test */ public function weCanGetAddressAttributeForAssociatedPlace(): void { $place = Place::factory()->create([ 'name' => 'The Bridgewater Pub', 'latitude' => '53.4983', 'longitude' => '-2.3805', ]); $note = Note::factory()->create([ 'place_id' => $place->id, ]); $this->assertEquals('The Bridgewater Pub', $note->address); } /** @test */ public function deletingNotesAlsoDeletesTagsViaTheEventObserver(): void { // first we’ll create a temporary note to delete $note = Note::create(['note' => 'temporary #temp']); $this->assertDatabaseHas('tags', [ 'tag' => 'temp', ]); $tag = Tag::where('tag', 'temp')->first(); $note->forceDelete(); $this->assertDatabaseMissing('note_tag', [ 'tag_id' => $tag->id, ]); } /** @test */ public function saveBlankNotesAsNull(): void { $note = new Note(['note' => '']); $this->assertNull($note->note); } /** @test */ public function reverseGeocodeAnAttraction(): void { // phpcs:disable Generic.Files.LineLength.TooLong $json = << 'application/json'], $json), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); $this->app->instance(Client::class, $client); $note = new Note(); $address = $note->reverseGeoCode(51.50084, -0.14264); $this->assertEquals( 'Victoria, London, UK', $address ); } /** @test */ public function reverseGeocodeASuburb(): void { // phpcs:disable Generic.Files.LineLength.TooLong $json = << 'application/json'], $json), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); $this->app->instance(Client::class, $client); $note = new Note(); $address = $note->reverseGeoCode(51.02, 0.91); $this->assertEquals( 'Newchurch, Shepway, UK', $address ); } /** @test */ public function reverseGeocodeACity(): void { // Note I’ve modified this JSON response so it only contains the // city the Uni is in // phpcs:disable Generic.Files.LineLength.TooLong $json = << 'application/json'], $json), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); $this->app->instance(Client::class, $client); $note = new Note(); $address = $note->reverseGeoCode(53.466277988406, -2.2304474827445); $this->assertEquals( 'Manchester, UK', $address ); } /** @test */ public function reverseGeocodeACounty(): void { // Note I’ve removed everything below county to test for queries where // that’s all that is returned // phpcs:disable Generic.Files.LineLength.TooLong $json = << 'application/json'], $json), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); $this->app->instance(Client::class, $client); $note = new Note(); $address = $note->reverseGeoCode(51.1, 0.61); $this->assertEquals('Kent, UK', $address); } /** @test */ public function reverseGeocodeACountry(): void { // Note I’ve removed everything below country to test for querires where // that’s all that is returned // phpcs:disable Generic.Files.LineLength.TooLong $json = << 'application/json'], $json), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); $this->app->instance(Client::class, $client); $note = new Note(); $address = $note->reverseGeoCode(54.3, 9.4); $this->assertEquals('Ireland', $address); } /** @test */ public function addImageElementToNoteContentWhenMediaAssociated(): void { $media = Media::factory()->create([ 'type' => 'image', 'path' => 'test.png', ]); $note = Note::factory()->create([ 'note' => 'A nice image', ]); $note->media()->save($media); $expected = 'A nice image '; $this->assertEquals($expected, $note->content); } /** @test */ public function addVideoElementToNoteContentWhenMediaAssociated(): void { $media = Media::factory()->create([ 'type' => 'video', 'path' => 'test.mkv', ]); $note = Note::factory()->create([ 'note' => 'A nice video', ]); $note->media()->save($media); $expected = 'A nice video