Skip to content

Instantly share code, notes, and snippets.

@yohey03518
Created January 18, 2019 08:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yohey03518/f70d361cec325b1dfd18df520d357a31 to your computer and use it in GitHub Desktop.
Save yohey03518/f70d361cec325b1dfd18df520d357a31 to your computer and use it in GitHub Desktop.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using NSubstitute;
using System;
using System.Collections.Generic;
using System.Data.Linq;
using System.Linq;
namespace UnitTestProject8
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var model = Substitute.For<IOrderModel>();
var orderService = new OrderService(model);
List<string> names = new List<string> { "Book", "Table", "Pen", "Mouse" };
// Act
orderService.CreateOrdersByNames(names);
model.Received(1).Add(orders: Arg.Is<List<OrderDomain>>(orders =>
orders.Count() == 4 &&
orders[0].Name == "Book" &&
orders[1].Name == "Table" &&
orders[2].Name == "Pen" &&
orders[3].Name == "Mouse"));
}
}
public class OrderService
{
private readonly IOrderModel _model;
public OrderService(IOrderModel model)
{
_model = model;
}
public void CreateOrdersByNames(List<string> names)
{
var orders = names.Select(name => new OrderDomain(name)).ToList();
_model.Add(orders);
}
}
public class OrderDomain
{
public string Name { get; }
public OrderDomain(string name)
{
Name = name;
}
}
public interface IOrderModel
{
void Add(List<OrderDomain> orders);
void Add(OrderDomain orderDomain);
}
public class OrderModel : IOrderModel
{
public void Add(OrderDomain orderDomain)
{
Add(new List<OrderDomain> { orderDomain });
}
public void Add(List<OrderDomain> orders)
{
foreach (OrderDomain item in orders)
{
new Order(item.Name).Save();
}
}
}
/// <summary>
/// Mapping Database's Table : ORDER
/// </summary>
public class Order : BaseTableObject
{
private string _Name;
private DateTime _CreateDate;
public Order(string name)
{
_Name = name;
_CreateDate = DateTime.Now;
}
public void Save()
{
string sql = "INSERT INTO ORDER .... ";
dataContext.ExecuteCommand(sql);
}
}
public class BaseTableObject
{
protected DataContext dataContext;
public BaseTableObject()
{
dataContext = new DataContext("Connection String........");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment