Skip to content

Commit

Permalink
tests
Browse files Browse the repository at this point in the history
  • Loading branch information
edalzell committed Feb 28, 2025
1 parent b039f5c commit 630281a
Show file tree
Hide file tree
Showing 8 changed files with 143 additions and 7 deletions.
4 changes: 1 addition & 3 deletions src/Contracts/Revisions/Revision.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@

namespace Statamic\Contracts\Revisions;

use Statamic\Revisions\Revisable;

interface Revision
{
public function currentContent(): Revisable;
public function currentContent();

public function id($id = null);

Expand Down
8 changes: 4 additions & 4 deletions src/Revisions/Revision.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
use Statamic\Events\RevisionSaved;
use Statamic\Events\RevisionSaving;
use Statamic\Facades;
use Statamic\Facades\Data;
use Statamic\Facades\Entry;
use Statamic\Facades\Revision as Revisions;
use Statamic\Support\Traits\FluentlyGetsAndSets;

Expand All @@ -36,9 +36,9 @@ class Revision implements Arrayable, Contract

protected $attributes = [];

public function currentContent(): Revisable
public function currentContent()
{
return Data::find($this->attribute('id'));
return Entry::find($this->attribute('id'));
}

public function id($id = null)
Expand Down Expand Up @@ -78,7 +78,7 @@ public function message($message = null)

public function publishAt($dateTime = null)
{
return $this->fluentlyGetOrSet('publishAt')->value($dateTime);
return $this->fluentlyGetOrSet('publishAt')->args(func_get_args());
}

public function attributes($attributes = null)
Expand Down
68 changes: 68 additions & 0 deletions tests/Feature/Revisions/RevisableTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?php

namespace Tests\Feature\Revisions;

use Carbon\Carbon;
use PHPUnit\Framework\Attributes\Test;
use Statamic\Facades\Revision;
use Statamic\Revisions\Revisable;
use Tests\PreventSavingStacheItemsToDisk;
use Tests\TestCase;

class RevisableTest extends TestCase
{
use PreventSavingStacheItemsToDisk;

private $revisable;

public function setUp(): void
{
parent::setUp();

config(['statamic.revisions' => [
'enabled' => true,
'path' => __DIR__.'/__fixtures__',
]]);

$this->revisable = new class
{
use Revisable;

protected function revisionKey()
{
return '123';
}

protected function revisionAttributes()
{
return [
'id' => 123
];
}

public function makeFromRevision($revision)
{
return new self;
}
};
}

#[Test]
public function has_revisions()
{
$this->assertTrue($this->revisable->hasRevisions());
}

#[Test]
public function sets_publish_at_from_options()
{
Carbon::setTestNow($now = now());

$this->revisable->createRevision(['publish_at' => $now]);

$revision = $this->revisable->latestRevision();
Revision::delete($revision);

$this->assertEquals($revision->publishAt()->timestamp, $now->timestamp);
}
}
52 changes: 52 additions & 0 deletions tests/Feature/Revisions/RevisionsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,56 @@ public function a_revision_can_be_made_from_a_dated_entry()

$this->assertEquals(['id' => '123', 'published' => true, 'slug' => 'my-entry', 'data' => ['foo' => 'bar'], 'date' => '1482624000'], $revision->attributes());
}

#[Test]
public function can_get_its_entry()
{
config(['statamic.revisions.path' => '/path/to']);

Carbon::setTestNow($now = Carbon::parse('2019-03-25 13:15'));

$entry = EntryFactory::id('123')
->collection(tap(Collection::make('test')->dated(true))->save())
->slug('my-entry')
->data(['foo' => 'bar'])
->date('2016-12-25')
->make();

$entry->save();
$revision = $entry->makeRevision();

$this->assertEquals($entry->id(), $revision->currentContent()->id());
}

#[Test]
public function converts_publish_at_to_timestamp_when_saving()
{
Carbon::setTestNow(now());

$revision = (new Revision)
->date(now())
->publishAt(now());

$this->assertEquals(now()->timestamp, $revision->fileData()['publish_at']);
}

#[Test]
public function converts_publish_at_to_null_when_saving()
{
$revision = (new Revision)->date(now());

$this->assertNull($revision->fileData()['publish_at']);
}

#[Test]
public function outputs_publish_at_when_to_array()
{
Carbon::setTestNow(now());

$revision = (new Revision)
->date(now())
->publishAt(now());

$this->assertEquals(now(), $revision->toArray()['publish_at']);
}
}
3 changes: 3 additions & 0 deletions tests/Feature/Revisions/__fixtures__/123/1553546421.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
date: 1553546421
attributes:
date: 1740528000
4 changes: 4 additions & 0 deletions tests/Feature/Revisions/__fixtures__/123/1553546422.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
date: 1553546422
publish_at: 1553644800
attributes:
date: 1740528000
3 changes: 3 additions & 0 deletions tests/Feature/Revisions/__fixtures__/123/working.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
date: 1553546423
attributes:
id: 123
8 changes: 8 additions & 0 deletions tests/Revisions/RepositoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,12 @@ public function it_can_call_to_array_on_a_revision_collection()

$this->assertIsArray($revisions->toArray());
}

#[Test]
public function it_loads_publish_at_as_carbon()
{
$revision = $this->repo->whereKey('123')->last();

$this->assertEquals(1553644800, $revision->publishAt()->timestamp);
}
}

0 comments on commit 630281a

Please sign in to comment.