You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Readarr/src/NzbDrone.Core.Test/MusicTests/ShouldRefreshAlbumFixture.cs

103 lines
2.6 KiB

using System;
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MusicTests
{
[TestFixture]
public class ShouldRefreshBookFixture : TestBase<ShouldRefreshBook>
{
private Book _book;
[SetUp]
public void Setup()
{
_book = Builder<Book>.CreateNew()
.With(e => e.ReleaseDate = DateTime.Today.AddDays(-100))
.Build();
}
private void GivenBookLastRefreshedMonthsAgo()
{
_book.LastInfoSync = DateTime.UtcNow.AddDays(-90);
}
private void GivenBookLastRefreshedYesterday()
{
_book.LastInfoSync = DateTime.UtcNow.AddDays(-1);
}
private void GivenBookLastRefreshedRecently()
{
_book.LastInfoSync = DateTime.UtcNow.AddHours(-7);
}
private void GivenRecentlyReleased()
{
_book.ReleaseDate = DateTime.Today.AddDays(-7);
}
private void GivenFutureRelease()
{
_book.ReleaseDate = DateTime.Today.AddDays(7);
}
[Test]
public void should_return_false_if_book_last_refreshed_less_than_12_hours_ago()
{
GivenBookLastRefreshedRecently();
Subject.ShouldRefresh(_book).Should().BeFalse();
}
[Test]
public void should_return_true_if_book_last_refreshed_more_than_30_days_ago()
{
GivenBookLastRefreshedMonthsAgo();
Subject.ShouldRefresh(_book).Should().BeTrue();
}
[Test]
public void should_return_true_if_book_released_in_last_30_days()
{
GivenBookLastRefreshedYesterday();
GivenRecentlyReleased();
Subject.ShouldRefresh(_book).Should().BeTrue();
}
[Test]
public void should_return_true_if_book_releases_in_future()
{
GivenBookLastRefreshedYesterday();
GivenFutureRelease();
Subject.ShouldRefresh(_book).Should().BeTrue();
}
[Test]
public void should_return_false_when_recently_refreshed_book_released_over_30_days_ago()
{
GivenBookLastRefreshedYesterday();
Subject.ShouldRefresh(_book).Should().BeFalse();
}
[Test]
public void should_return_false_when_recently_refreshed_book_released_in_last_30_days()
{
GivenBookLastRefreshedRecently();
GivenRecentlyReleased();
Subject.ShouldRefresh(_book).Should().BeFalse();
}
}
}