/** @test */ function it_builds_a_source_table() { $modelBuilder = $this->prophesize('Nuclear\\Hierarchy\\Contract\\Builders\\ModelBuilderContract'); $modelBuilder->build('project')->willReturn(null)->shouldBeCalled(); $formBuilder = $this->prophesize('Nuclear\\Hierarchy\\Contract\\Builders\\FormBuilderContract'); $formBuilder->build('project')->willReturn(null)->shouldBeCalled(); $migrationBuilder = $this->prophesize('Nuclear\\Hierarchy\\Contract\\Builders\\MigrationBuilderContract'); $migrationBuilder->buildSourceTableMigration('project')->willReturn('TestMigration')->shouldBeCalled(); $service = new BuilderService($modelBuilder->reveal(), $migrationBuilder->reveal(), $formBuilder->reveal()); try { $service->buildTable('project', 1); } catch (\Exception $e) { if ($e->getMessage() === 'up') { return; } } $this->fail('The migration did not run'); }