/** @test */ public function mycelium_destroys_pointers() { // Scenario: // Destroy new unsaved pointer $pointer = Mycelium::createPointer("gds.one", "gds.foo"); $this->assertFalse($pointer->destroyed()); $this->assertTrue(Mycelium::has("gds.one")); $pointer->destroy(); $this->assertTrue($pointer->destroyed()); $this->assertFalse(Mycelium::has("gds.one")); // Scenario: // Destroy already saved pointer and see it disappearing from database after saving $pointer = Mycelium::createPointer("gds.two", "gds.foo"); Mycelium::save(); $pointerIdAfterSaving = $pointer->id(); $this->seeInDatabase("myc_pointers", ["id" => $pointerIdAfterSaving]); $pointer->destroy(); $this->assertTrue($pointer->destroyed()); $this->assertFalse(Mycelium::has("gds.two")); Mycelium::save(); $this->assertTrue($pointer->destroyed()); $this->assertFalse(Mycelium::has("gds.two")); $this->assertEquals(0, DB::table("myc_pointers")->where("id", $pointerIdAfterSaving)->count()); // Scenario: // Destroy new pointer via Mycelium::remove $pointer = Mycelium::createPointer("gds.three", "gds.foo"); Mycelium::remove("gds.three"); $this->assertTrue($pointer->destroyed()); $this->assertFalse(Mycelium::has("gds.three")); // Scenario: // Destroy already saved pointer via Mycelium::remove $pointer = Mycelium::createPointer("gds.four", "gds.foo"); Mycelium::save(); $pointerIdAfterSaving = $pointer->id(); Mycelium::remove("gds.four"); $this->assertTrue($pointer->destroyed()); $this->assertFalse(Mycelium::has("gds.four")); Mycelium::save(); $this->assertTrue($pointer->destroyed()); $this->assertFalse(Mycelium::has("gds.four")); $this->assertEquals(0, DB::table("myc_pointers")->where("id", $pointerIdAfterSaving)->count()); }