Cassandra mock
unknown
java
3 years ago
2.5 kB
11
Indexable
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public interface ICustomerRepository
{
Customer GetCustomer(int id);
}
public class CustomerRepository
: ICustomerRepository
{
private readonly ISession session;
public CustomerRepository(ISession session)
{
this.session = session;
}
public Customer GetCustomer(int id)
{
var statement = session.Prepare("SELECT * FROM Customers WHERE Id = ?");
var boundStatement = statement.Bind(id);
var dbCustomers = session.Execute(boundStatement);
foreach(var row in dbCustomers)
{
return Map(row);
}
return null;
}
private Customer Map(Row row)
{
return new Customer
{
Id = row.GetValue<int>("Id"),
Name = row.GetValue<string>("Name"),
Age = row.GetValue<int>("Age")
};
}
}
private Mock<ISession> sessionMock;
[SetUp]
public void Setup()
{
sessionMock = new Mock<ISession>();
sessionMock.Setup(_ => _.Prepare(It.IsAny<string>())).Returns(new PreparedStatement());
}
public static class RowSetHelper
{
public static RowSet CreateMockRowSet(params Row[] rows)
{
var mockList = new List<Row>();
mockList.AddRange(rows);
var rowSet = new Mock<RowSet>();
rowSet.Setup(m => m.GetEnumerator()).Returns(mockList.GetEnumerator());
return rowSet.Object;
}
public static Mock<Row> CreateMockRow()
{
var rowMock = new Mock<Row>();
rowMock.Setup(m => m.GetValue<int>("Id")).Returns(1);
rowMock.Setup(m => m.GetValue<int>("Age")).Returns(1);
rowMock.Setup(m => m.Getvalue<string>("Name")).Returns("Test");
return rowMock;
}
}
[Test]
public void Repository_GeCustomer_ReturnsValidCustomer()
{
var dataRowMock = RowSetHelper.CreateMockRow();
sessionMock.Setup(m => m.Execute(It.IsAny<IStatement>())).Returns(RowSetHelper.CreateMockRowSet(dataRowMock.Object));
var repository = new CustomerRepository(_sessionMock.Object);
var customer = repository.GetCustomer(1);
customer.Should().NotBeNull("because get customer should return mock value from session.");
customer.Id.Should().Be(1, "because repository has a customer with id 1");
}Editor is loading...