Skip to content

Instantly share code, notes, and snippets.

View SzymonPobiega's full-sized avatar
🏠
Working from home

Szymon Pobiega SzymonPobiega

🏠
Working from home
View GitHub Profile
//Customer is an aggregate root
public class Customer : AggregateRootMappedByConvention
{
//Customer contains orders, each of which is uniquely identified hence is an entity
private readonly List<Order> _orders = new List<Order>();
public void CreateOrder(int id)
{
//Does not create an entity, only publishes event.
//The entity has localy unique id. Its uniqueness is ensured here.
[Test]
public void NHibernate_allows_crud_operations()
{
Create();
Read();
Update();
Delete();
}
private void Create()
@SzymonPobiega
SzymonPobiega / gist:953302
Created May 3, 2011 13:10
Monads in action
protected override ValidationResults OnValidate(PurchaseTransaction purchaseTransaction)
{
return purchaseTransaction
.With(ValidationCheck)
.Unless(IsValidateServiceDown)
.Try(SendMessageToTransecure)
.InCaseOfException(MarkServiceAsDown)
.Return(TheResult, OrFailureCodeInCaseOfFailure);
}
@SzymonPobiega
SzymonPobiega / gist:1027094
Created June 15, 2011 13:31
Small internal DSL in unit tests
[TestMethod]
public void It_uses_more_specific_rule_if_rule_and_information_is_present()
{
Given(new ProductType("air", null, ProductCategory.AirOnly),
new ProductType("air", "someSpecialWeirdProduct", ProductCategory.LandOnly))
.ItMaps(new ProductReference("air", "someSpecialWeirdProduct"))
.To(ProductCategory.LandOnly);
}
@SzymonPobiega
SzymonPobiega / gist:1148931
Created August 16, 2011 12:05
Subscriptions
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
<head>
<title>simon_v subscriptions in Google Reader</title>
</head>
<body>
<outline title="Publiczne" text="Publiczne">
<outline text=".neting in the free world"
title=".neting in the free world" type="rss"
xmlUrl="http://feeds.feedburner.com/jakubg" htmlUrl="http://blog.gutek.pl/"/>
@SzymonPobiega
SzymonPobiega / gist:1617321
Created January 15, 2012 21:04
Here's how you use ReferenceDataManager
ObjectId hierarchyId;
var builder = new ChangeSetBuilder(objectFacade, null);
{
var hierarchy = builder.CreateHierarchy();
hierarchyId = hierarchy.Id;
var parentUnit = builder.CreateUnit("Parent", new Address("Lubicz", "23", "Krakow", "PL"));
var childUnit = builder.CreateUnit("Child", null);
builder.SetHierarchyRoot(hierarchy, parentUnit);
builder.SetParent(hierarchy, childUnit, parentUnit);
@SzymonPobiega
SzymonPobiega / gist:2358879
Created April 11, 2012 11:59
Too much DRY
public static T NullArgumentLogAndThrow<T>(this ILog log, T arg)
{
if (arg.IsNotNull()) return arg;
// get calling method
var ex = new ArgumentNullException(typeof(T).Name);
log.Fatal(new StackTrace().GetFrame(1).GetMethod().Name, ex);
log.Fatal(new StackTrace().ToString());
throw ex;
}
@SzymonPobiega
SzymonPobiega / gist:2657868
Created May 11, 2012 06:13
Branch switching script
#
# The script switches IIS web applications to point to some other directory. It is very usefull when frequently changing branches.
# The script assumes SVN-ish branch structure like this:
# Root
# |
# |--Branches
# | |
# | |--Branch 1
# | |
# | \--Branch 2
@SzymonPobiega
SzymonPobiega / gist:2889459
Created June 7, 2012 15:30
log4net config
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<root>
<level value="INFO"/>
<appender-ref ref="File"/>
<appender-ref ref="Console"/>
</root>
<logger name="NHibernate">
<level value="WARN" />
</logger>
@SzymonPobiega
SzymonPobiega / gist:4538653
Created January 15, 2013 13:30
Why I _love_ event sourcing
[Test]
public void After_successfully_deploying_a_component_it_triggers_its_start()
{
Given("id",
Created(),
LockRequested(),
Locked(),
VersionDetermined(),
DeploymentPlanned("A", "1"),
DeploymentPlanned("B", "2"),