using System.Collections.Generic;
using System.Linq;
using NSubstitute;
using NUnit.Framework;
using ShareeBike.Model.Connector;
using ShareeBike.Model.User.Account;
namespace SharedBusinessLogic.Tests.Fixtures.ObjectTests.User.Account
{
[TestFixture]
public class TestAccountExtensions
{
/// If no user is logged in filter is not applied.
[Test]
public void TestDoFilter_NoUserLoggedIn()
{
var l_oAccount = Substitute.For();
l_oAccount.Mail.Returns("a@b");
l_oAccount.SessionCookie.Returns(""); // User is not logged in
l_oAccount.Group.Returns(new List { $"HOM_{FilterHelper.CARGOBIKE}", "HOM_117025" });
var l_oSource = new List { $"HOM_{FilterHelper.CARGOBIKE}", $"HOM_{FilterHelper.CITYBIKE}", "HOM_117025" };
var l_oResult = l_oAccount.DoFilter(l_oSource);
Assert.That(l_oResult.ToList().Count, Is.EqualTo(3));
Assert.That(l_oResult.ToList()[0], Is.EqualTo($"HOM_{FilterHelper.CARGOBIKE}"));
Assert.That(l_oResult.ToList()[1], Is.EqualTo($"HOM_{FilterHelper.CITYBIKE}"));
Assert.That(l_oResult.ToList()[2], Is.EqualTo("HOM_117025"));
}
///
[Test]
public void TestDoFilter()
{
var l_oAccount = Substitute.For();
l_oAccount.Mail.Returns("a@b");
l_oAccount.SessionCookie.Returns("123");
l_oAccount.Group.Returns(new List { $"HOM_{FilterHelper.CARGOBIKE}", "HOM_117025" });
var l_oSource = new List { $"HOM_{FilterHelper.CARGOBIKE}", $"HOM_{FilterHelper.CITYBIKE}", "HOM_117025" };
var l_oResult = l_oAccount.DoFilter(l_oSource);
Assert.That(l_oResult.ToList().Count, Is.EqualTo(2));
Assert.That(l_oResult.ToList()[0], Is.EqualTo($"HOM_{FilterHelper.CARGOBIKE}"));
Assert.That(l_oResult.ToList()[1], Is.EqualTo("HOM_117025"));
}
}
}