2
2
3
3
namespace TarfinLabs \LaravelSpatial \Tests ;
4
4
5
+ use Illuminate \Database \Query \Expression ;
5
6
use InvalidArgumentException ;
6
7
use Illuminate \Support \Facades \DB ;
8
+ use PHPUnit \Framework \Attributes \Test ;
7
9
use TarfinLabs \LaravelSpatial \Casts \LocationCast ;
8
10
use TarfinLabs \LaravelSpatial \Tests \TestModels \Address ;
9
11
use TarfinLabs \LaravelSpatial \Types \Point ;
10
12
11
13
class LocationCastTest extends TestCase
12
14
{
13
- /** @test */
15
+ #[Test]
14
16
public function it_throws_an_exception_if_casted_attribute_set_to_a_non_point_value (): void
15
17
{
16
18
// 1. Arrange
@@ -23,7 +25,7 @@ public function it_throws_an_exception_if_casted_attribute_set_to_a_non_point_va
23
25
$ address ->location = 'dummy ' ;
24
26
}
25
27
26
- /** @test */
28
+ #[Test]
27
29
public function it_can_set_the_casted_attribute_to_a_point (): void
28
30
{
29
31
// 1. Arrange
@@ -39,7 +41,7 @@ public function it_can_set_the_casted_attribute_to_a_point(): void
39
41
$ this ->assertEquals (DB ::raw ("ST_GeomFromText(' {$ point ->toWkt ()}', 4326, 'axis-order=long-lat') " ), $ response );
40
42
}
41
43
42
- /** @test */
44
+ #[Test]
43
45
public function it_can_set_the_casted_attribute_to_a_point_with_srid (): void
44
46
{
45
47
// 1. Arrange
@@ -55,7 +57,7 @@ public function it_can_set_the_casted_attribute_to_a_point_with_srid(): void
55
57
$ this ->assertEquals (DB ::raw ("ST_GeomFromText(' {$ point ->toWkt ()}', {$ point ->getSrid ()}, 'axis-order=long-lat') " ), $ response );
56
58
}
57
59
58
- /** @test */
60
+ #[Test]
59
61
public function it_can_get_a_casted_attribute (): void
60
62
{
61
63
// 1. Arrange
@@ -73,7 +75,25 @@ public function it_can_get_a_casted_attribute(): void
73
75
$ this ->assertEquals ($ point ->getSrid (), $ address ->location ->getSrid ());
74
76
}
75
77
76
- /** @test */
78
+ #[Test]
79
+ public function it_can_get_a_casted_attribute_using_expression (): void
80
+ {
81
+ // 1. Arrange
82
+ $ address = new Address ();
83
+ $ point = new Point (27.1234 , 39.1234 );
84
+
85
+ // 2. Act
86
+ $ cast = new LocationCast ();
87
+ $ result = $ cast ->get ($ address , 'location ' , new Expression ($ point ->toGeomFromText ()), $ address ->getAttributes ());
88
+
89
+ // 3. Assert
90
+ $ this ->assertInstanceOf (Point::class, $ result );
91
+ $ this ->assertEquals ($ point ->getLat (), $ result ->getLat ());
92
+ $ this ->assertEquals ($ point ->getLng (), $ result ->getLng ());
93
+ $ this ->assertEquals ($ point ->getSrid (), $ result ->getSrid ());
94
+ }
95
+
96
+ #[Test]
77
97
public function it_returns_null_if_the_value_of_the_casted_column_is_null (): void
78
98
{
79
99
// 1. Arrange
@@ -86,7 +106,7 @@ public function it_returns_null_if_the_value_of_the_casted_column_is_null(): voi
86
106
$ this ->assertNull ($ address ->location );
87
107
}
88
108
89
- /** @test */
109
+ #[Test]
90
110
public function it_can_serialize_a_casted_attribute (): void
91
111
{
92
112
// 1. Arrange
0 commit comments