715 lines
30 KiB
C#
715 lines
30 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using LCU.API.Internal.Operations.IncentiveApiLib.Persistence;
|
|
using LCU.API.Internal.Operations.IncentiveApiLib.Repositories;
|
|
using LCU.Library.Internal.IncentiveApiModels.Entities;
|
|
using LCU.Library.Internal.IncentiveApiModels.Enums;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Moq;
|
|
using NUnit.Framework;
|
|
using LCU.Library.Internal.IncentiveApiModels.Common;
|
|
|
|
namespace Application.UnitTests.Repository
|
|
{
|
|
public class DeadActivityRepositoryTest
|
|
{
|
|
private ApplicationDbContext _context;
|
|
private DeadActivityRepository _repository;
|
|
|
|
[SetUp]
|
|
public void Setup()
|
|
{
|
|
var mockDateTime = new DateTimeService();
|
|
var mockCurrentUserService = Mock.Of<ICurrentUserService>();
|
|
Mock.Get(mockCurrentUserService).Setup(s => s.GetCurrentUser()).Returns(new ApplicationUser
|
|
{
|
|
Email = "[email protected]",
|
|
});
|
|
var options = new DbContextOptionsBuilder<ApplicationDbContext>()
|
|
.UseInMemoryDatabase(Guid.NewGuid().ToString())
|
|
.EnableSensitiveDataLogging()
|
|
.Options;
|
|
_context = new ApplicationDbContext(options, mockCurrentUserService, mockDateTime);
|
|
_repository = new DeadActivityRepository(_context);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetActivitiesAsync_Paginated_OK()
|
|
{
|
|
var activity1 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "1",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Accepted,
|
|
Created = DateTime.Today.Subtract(TimeSpan.FromDays(7))
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity1);
|
|
|
|
var activity2 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 56,
|
|
EmployeeId = "2",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Accepted,
|
|
Created = DateTime.Today.Subtract(TimeSpan.FromDays(6))
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity2);
|
|
|
|
var activity3 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "3",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Rejected,
|
|
Created = DateTime.Today.Subtract(TimeSpan.FromDays(6))
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity3);
|
|
|
|
var activity4 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "4",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Created,
|
|
Created = DateTime.Today.Subtract(TimeSpan.FromDays(5))
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity4);
|
|
await _context.SaveChangesAsync();
|
|
|
|
|
|
var found = await _repository.GetPagedDeadActivities(1, 3);
|
|
Assert.NotNull(found);
|
|
Assert.IsNotEmpty(found.Items);
|
|
Assert.AreEqual(3, found.Items.Count());
|
|
Assert.AreEqual(4, found.Total);
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "4"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "1"));
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "2"));
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "3"));
|
|
|
|
found = await _repository.GetPagedDeadActivities(2, 3);
|
|
Assert.AreEqual(1, found.Items.Count());
|
|
Assert.AreEqual(4, found.Total);
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "4"));
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "1"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "2"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "3"));
|
|
|
|
found = await _repository.GetPagedDeadActivities(100, 3);
|
|
Assert.AreEqual(4, found.Total);
|
|
Assert.IsEmpty(found.Items);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetDeadActivitiesByActivityProductAsync_OK()
|
|
{
|
|
var activity1 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "1",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-3),
|
|
State = ActivityState.Accepted,
|
|
LastUpdated = new DateTime(2021, 1, 4)
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
|
|
await _repository.SaveDeadActivity(activity1);
|
|
var activity2 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 56,
|
|
EmployeeId = "2",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.NewChecking,
|
|
Accepted = DateTime.Today.AddMinutes(-2),
|
|
State = ActivityState.Accepted,
|
|
LastUpdated = new DateTime(2021, 1, 3)
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity2);
|
|
|
|
var activity3 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "3",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.NewChecking,
|
|
Accepted = DateTime.Today.AddMinutes(-1),
|
|
State = ActivityState.Rejected,
|
|
LastUpdated = new DateTime(2021, 1, 2)
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity3);
|
|
|
|
var activity4 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "4",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.NewChecking,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Accepted,
|
|
LastUpdated = new DateTime(2021, 1, 1)
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity4);
|
|
await _context.SaveChangesAsync();
|
|
|
|
var filter = new DeadActivityFilter
|
|
{
|
|
Page = 1,
|
|
Limit = 2,
|
|
Product = new List<Product> { Product.CheckCard }
|
|
};
|
|
var found = await _repository.GetFilteredDeadActivities(filter);
|
|
Assert.NotNull(found);
|
|
Assert.IsNotEmpty(found.Items);
|
|
Assert.AreEqual(1, found.Items.Count());
|
|
Assert.AreEqual(1, found.Total);
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "1"));
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetDeadActivitiesByActivityTypeAsync_OK()
|
|
{
|
|
var activity1 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "1",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-3),
|
|
State = ActivityState.Accepted,
|
|
LastUpdated = new DateTime(2021, 1, 4)
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity1);
|
|
|
|
var activity2 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 56,
|
|
EmployeeId = "2",
|
|
Type = ActivityType.Referral,
|
|
Product = Product.NewChecking,
|
|
Accepted = DateTime.Today.AddMinutes(-2),
|
|
State = ActivityState.Accepted,
|
|
LastUpdated = new DateTime(2021, 1, 3)
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity2);
|
|
|
|
var activity3 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "3",
|
|
Type = ActivityType.Referral,
|
|
Product = Product.NewChecking,
|
|
Accepted = DateTime.Today.AddMinutes(-1),
|
|
State = ActivityState.Rejected,
|
|
LastUpdated = new DateTime(2021, 1, 2)
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity3);
|
|
|
|
var activity4 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "4",
|
|
Type = ActivityType.Referral,
|
|
Product = Product.NewChecking,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Accepted,
|
|
LastUpdated = new DateTime(2021, 1, 1)
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity4);
|
|
await _context.SaveChangesAsync();
|
|
|
|
var filter = new DeadActivityFilter
|
|
{
|
|
Page = 1,
|
|
Limit = 2,
|
|
Type = new List<ActivityType> { ActivityType.Sale }
|
|
};
|
|
var found = await _repository.GetFilteredDeadActivities(filter);
|
|
Assert.NotNull(found);
|
|
Assert.IsNotEmpty(found.Items);
|
|
Assert.AreEqual(1, found.Items.Count());
|
|
Assert.AreEqual(1, found.Total);
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "1"));
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetFilteredDeadActivities_OK()
|
|
{
|
|
// You can't set last updated. So you'll get these back in reverse order you saved them.
|
|
var activity1 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "1",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-5),
|
|
State = ActivityState.Accepted,
|
|
Created = DateTime.Today.Subtract(TimeSpan.FromDays(7))
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity1);
|
|
|
|
var activity2 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 56,
|
|
EmployeeId = "2",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-4),
|
|
State = ActivityState.Rejected,
|
|
Created = DateTime.Today.Subtract(TimeSpan.FromDays(6))
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity2);
|
|
|
|
var activity3 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "3",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-3),
|
|
State = ActivityState.Accepted,
|
|
Created = DateTime.Today.Subtract(TimeSpan.FromDays(6))
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity3);
|
|
|
|
var activity4 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "4",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-2),
|
|
State = ActivityState.Created,
|
|
Created = DateTime.Today.Subtract(TimeSpan.FromDays(5))
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity4);
|
|
|
|
//null state
|
|
var activity5 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 55,
|
|
EmployeeId = "5",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-1),
|
|
Created = DateTime.Today.Subtract(TimeSpan.FromDays(6))
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity5);
|
|
|
|
var activity6 = new DeadActivity(new Activity
|
|
{
|
|
Detail = new ActivityDetail(),
|
|
DepartmentId = 56,
|
|
EmployeeId = "6",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Accepted,
|
|
Created = DateTime.Today.Subtract(TimeSpan.FromDays(6))
|
|
}, DeadActivityReason.MissingRequiredField, "Test");
|
|
await _repository.SaveDeadActivity(activity6);
|
|
|
|
await _context.SaveChangesAsync();
|
|
|
|
var filter = new DeadActivityFilter
|
|
{
|
|
Page = 1,
|
|
Limit = 2,
|
|
State = new List<ActivityState> { ActivityState.Accepted }
|
|
};
|
|
var found = await _repository.GetFilteredDeadActivities(filter);
|
|
Assert.NotNull(found);
|
|
Assert.IsNotEmpty(found.Items);
|
|
Assert.AreEqual(2, found.Items.Count());
|
|
Assert.AreEqual(3, found.Total);
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "3"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "4")); // not accepted
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "1")); // not on this page
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "5")); // not accepted
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "6"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "2")); // not accepted
|
|
filter.Page = 2;
|
|
found = await _repository.GetFilteredDeadActivities(filter);
|
|
Assert.AreEqual(1, found.Items.Count());
|
|
Assert.AreEqual(3, found.Total);
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "3"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "2"));
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "1"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "4"));
|
|
|
|
var filter2 = new DeadActivityFilter
|
|
{
|
|
Page = 1,
|
|
Limit = 100,
|
|
State = new List<ActivityState> { ActivityState.ManualReview }
|
|
};
|
|
found = await _repository.GetFilteredDeadActivities(filter2);
|
|
Assert.AreEqual(0, found.Total);
|
|
Assert.IsEmpty(found.Items);
|
|
|
|
filter2.Page = 20;
|
|
found = await _repository.GetFilteredDeadActivities(filter2);
|
|
Assert.AreEqual(0, found.Total);
|
|
Assert.IsEmpty(found.Items);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetFilteredDeadActivities_More()
|
|
{
|
|
// You can't set last updated. So you'll get these back in reverse order you saved them.
|
|
var activity1 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 55,
|
|
EmployeeId = "1",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-4),
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail
|
|
{
|
|
MemberName = "John Doe"
|
|
}
|
|
}, DeadActivityReason.Other, "Test1");
|
|
await _repository.SaveDeadActivity(activity1);
|
|
var activity2 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 56,
|
|
EmployeeId = "2",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-3),
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail
|
|
{
|
|
SubjectPersonNbr = "1Jane3Doe"
|
|
}
|
|
}, DeadActivityReason.Other, "Test2");
|
|
await _repository.SaveDeadActivity(activity2);
|
|
var activity3 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 55,
|
|
EmployeeId = "3",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-2),
|
|
State = ActivityState.Rejected,
|
|
Detail = new ActivityDetail
|
|
{
|
|
AccountNumber = "1234"
|
|
}
|
|
}, DeadActivityReason.Other, "Test3");
|
|
await _repository.SaveDeadActivity(activity3);
|
|
var activity4 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 55,
|
|
EmployeeId = "4",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-1),
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail
|
|
{
|
|
AccountNumber = "12DOE35"
|
|
}
|
|
}, DeadActivityReason.Other, "Test4");
|
|
await _repository.SaveDeadActivity(activity4);
|
|
|
|
//Everything in Query is null. should not match, should not error
|
|
var activity5 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 55,
|
|
EmployeeId = "4",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail()
|
|
}, DeadActivityReason.Other, "Test4");
|
|
await _repository.SaveDeadActivity(activity5);
|
|
|
|
await _context.SaveChangesAsync();
|
|
|
|
var filter = new DeadActivityFilter
|
|
{
|
|
Page = 1,
|
|
Limit = 2,
|
|
Query = "DoE"
|
|
};
|
|
var found = await _repository.GetFilteredDeadActivities(filter);
|
|
Assert.NotNull(found);
|
|
Assert.IsNotEmpty(found.Items);
|
|
Assert.AreEqual(2, found.Items.Count());
|
|
Assert.AreEqual(3, found.Total);
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "3"));
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "4"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "1")); // not on this page
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "2"));
|
|
|
|
filter.Page = 2;
|
|
found = await _repository.GetFilteredDeadActivities(filter);
|
|
Assert.AreEqual(1, found.Items.Count());
|
|
Assert.AreEqual(3, found.Total);
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "3"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "2"));
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "1"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "4"));
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetActivitiesByFilter_Employee_Department()
|
|
{
|
|
var activity1 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 55,
|
|
EmployeeId = "1",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-4),
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail
|
|
{
|
|
MemberName = "John Doe"
|
|
}
|
|
}, DeadActivityReason.Other, "Test1");
|
|
await _repository.SaveDeadActivity(activity1);
|
|
var activity2 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 56,
|
|
EmployeeId = "2",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-3),
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail
|
|
{
|
|
SubjectPersonNbr = "1Jane3Doe"
|
|
}
|
|
}, DeadActivityReason.Other, "Test2");
|
|
await _repository.SaveDeadActivity(activity2);
|
|
var activity3 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 55,
|
|
EmployeeId = "3",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-2),
|
|
State = ActivityState.Rejected,
|
|
Detail = new ActivityDetail
|
|
{
|
|
AccountNumber = "1234"
|
|
}
|
|
}, DeadActivityReason.Other, "Test3");
|
|
await _repository.SaveDeadActivity(activity3);
|
|
var activity4 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 55,
|
|
EmployeeId = "4",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-1),
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail
|
|
{
|
|
AccountNumber = "12DOE35"
|
|
}
|
|
}, DeadActivityReason.Other, "Test4");
|
|
await _repository.SaveDeadActivity(activity4);
|
|
|
|
//Everything in Query is null. should not match, should not error
|
|
var activity5 = new DeadActivity(new Activity
|
|
{
|
|
EmployeeId = "4",
|
|
DepartmentId = -1,
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail()
|
|
}, DeadActivityReason.Other, "Test5");
|
|
await _repository.SaveDeadActivity(activity5);
|
|
|
|
await _context.SaveChangesAsync();
|
|
|
|
var filter = new DeadActivityFilter
|
|
{
|
|
Page = 1,
|
|
Limit = 2,
|
|
DepartmentId = 55
|
|
};
|
|
var found = await _repository.GetFilteredDeadActivities(filter);
|
|
Assert.NotNull(found);
|
|
Assert.IsNotEmpty(found.Items);
|
|
Assert.AreEqual(2, found.Items.Count());
|
|
Assert.AreEqual(3, found.Total);
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "3"));
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "4"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "1")); // not on this page
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "2"));
|
|
|
|
filter.EmployeeId = "4";
|
|
found = await _repository.GetFilteredDeadActivities(filter);
|
|
Assert.AreEqual(1, found.Items.Count());
|
|
Assert.AreEqual(1, found.Total);
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "3"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "2"));
|
|
Assert.False(found.Items.Any(x => x.EmployeeId == "1"));
|
|
Assert.True(found.Items.Any(x => x.EmployeeId == "4"));
|
|
|
|
filter.DepartmentId = 99;
|
|
found = await _repository.GetFilteredDeadActivities(filter);
|
|
Assert.AreEqual(0, found.Items.Count());
|
|
Assert.AreEqual(0, found.Total);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetActivitiesByFilter_Sort()
|
|
{
|
|
var activity1 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 55,
|
|
EmployeeId = "1",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-4),
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail
|
|
{
|
|
MemberName = "John Doe"
|
|
}
|
|
}, DeadActivityReason.Other, "Test1");
|
|
await _repository.SaveDeadActivity(activity1);
|
|
var activity2 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 56,
|
|
EmployeeId = "2",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-3),
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail
|
|
{
|
|
SubjectPersonNbr = "1Jane3Doe"
|
|
}
|
|
}, DeadActivityReason.Other, "Test2");
|
|
await _repository.SaveDeadActivity(activity2);
|
|
var activity3 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 55,
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-2),
|
|
State = ActivityState.Rejected,
|
|
Detail = new ActivityDetail
|
|
{
|
|
AccountNumber = "1234"
|
|
}
|
|
}, DeadActivityReason.Other, "Test3");
|
|
await _repository.SaveDeadActivity(activity3);
|
|
var activity4 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = 55,
|
|
EmployeeId = "4",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today.AddMinutes(-1),
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail
|
|
{
|
|
AccountNumber = "12DOE35"
|
|
}
|
|
}, DeadActivityReason.Other, "Test4");
|
|
await _repository.SaveDeadActivity(activity4);
|
|
//Everything in Query is null. should not match, should not error
|
|
var activity5 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = -1,
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail()
|
|
}, DeadActivityReason.Other, "Test5");
|
|
await _repository.SaveDeadActivity(activity5);
|
|
await _context.SaveChangesAsync();
|
|
//Everything in Query is null. should not match, should not error
|
|
var activity6 = new DeadActivity(new Activity
|
|
{
|
|
DepartmentId = -1,
|
|
EmployeeId = "6",
|
|
Type = ActivityType.Sale,
|
|
Product = Product.CheckCard,
|
|
Accepted = DateTime.Today,
|
|
State = ActivityState.Accepted,
|
|
Detail = new ActivityDetail()
|
|
}, DeadActivityReason.Other, "Test6");
|
|
await _repository.SaveDeadActivity(activity6);
|
|
var filter = new DeadActivityFilter
|
|
{
|
|
Page = 1,
|
|
Limit = 99,
|
|
DepartmentId = 55,
|
|
SortBy = "EmployeeId"
|
|
};
|
|
//NOTE: Null EmployeeId first
|
|
var found = await _repository.GetFilteredDeadActivities(filter);
|
|
var expected = new[] { "Test3", "Test1", "Test4" };
|
|
Assert.NotNull(found);
|
|
Assert.IsNotEmpty(found.Items);
|
|
Assert.AreEqual(3, found.Items.Count());
|
|
Assert.AreEqual(3, found.Total);
|
|
var ordered = found.Items.Select(x => x.ReasonNote).ToArray();
|
|
Assert.AreEqual(expected, ordered);
|
|
|
|
//NOTE: Null EmployeeId Last
|
|
filter.SortDescending = true;
|
|
found = await _repository.GetFilteredDeadActivities(filter);
|
|
expected = new[] { "Test4", "Test1", "Test3" };
|
|
Assert.NotNull(found);
|
|
Assert.IsNotEmpty(found.Items);
|
|
Assert.AreEqual(3, found.Items.Count());
|
|
Assert.AreEqual(3, found.Total);
|
|
ordered = found.Items.Select(x => x.ReasonNote).ToArray();
|
|
Assert.AreEqual(expected, ordered);
|
|
|
|
filter.SortDescending = false;
|
|
filter.SortBy = null;
|
|
found = await _repository.GetFilteredDeadActivities(filter);
|
|
expected = new[] { "Test4", "Test3", "Test1" };
|
|
Assert.NotNull(found);
|
|
Assert.IsNotEmpty(found.Items);
|
|
Assert.AreEqual(3, found.Items.Count());
|
|
Assert.AreEqual(3, found.Total);
|
|
ordered = found.Items.Select(x => x.ReasonNote).ToArray();
|
|
Assert.AreEqual(expected, ordered);
|
|
}
|
|
}
|
|
}
|