public void CorrectlyFormatsWithListPivotTest() { var items = new List <TestObjectWithList> { new TestObjectWithList { StringField = "stringField", IntField = 1, ListField = new List <TestObject> { new TestObject { StringField = "testheader", IntField = 1 } } } }; var pivot = new ListPivot <TestObjectWithList, TestObject>( nameof(TestObjectWithList.ListField), x => x.ListField, x => x.StringField, x => x.IntField.ToString()); var csvString = _formatter.Format(items, pivot); var expectedString = $"{nameof(TestObject.StringField)},{nameof(TestObject.IntField)},{items[0].ListField[0].StringField}{Environment.NewLine}" + $"{items[0].StringField},{items[0].IntField},{items[0].ListField[0].IntField}{Environment.NewLine}"; Assert.Equal(expectedString, csvString); }
public void PassesPivotToCsvFormatterWhenUsedTest() { var csv = GuidString; var collection = new List <string>(); var pivot = new ListPivot <string, string>( "test", x => new List <string>(), x => x, x => x); // using string for the generic type _csvFormatterMock .Setup(x => x.Format( It.IsAny <ICollection <string> >(), It.IsAny <ListPivot <string, string> >())) .Returns(csv); var returned = _csvWriter.GetAsCsv(collection, pivot); Assert.Equal(Encoding.UTF8.GetBytes(csv), returned); _csvFormatterMock.Verify(x => x.Format( It.Is <ICollection <string> >(y => y.Equals(collection)), It.Is <ListPivot <string, string> >(y => y.Equals(pivot)))); }
public void GetLineThrowsWithMultipleIdenticalHeaderValuesTest() { var containerItem = new TestItemContainer { Items = new List <TestItem> { new TestItem { Field1 = "field1" }, new TestItem { Field1 = "field1" } } }; var pivot = new ListPivot <TestItemContainer, TestItem>( "test", x => x.Items, x => x.Field1, x => x.Field2); var writer = ListPivotWriter <TestItemContainer, TestItem> .GetWriter( new List <TestItemContainer> { containerItem }, pivot); var ex = Assert.Throws <InvalidOperationException>( () => writer.GetLine(containerItem)); Assert.Equal("cannot have two identical column names", ex.Message); }
public void GetHeaderReturnsWithHeaderWithNullsTest() { var containerItem = new TestItemContainer { Items = new List <TestItem> { new TestItem { Field1 = "field1" }, new TestItem { Field1 = "another field" }, new TestItem { Field1 = null } } }; var pivot = new ListPivot <TestItemContainer, TestItem>( "test", x => x.Items, x => x.Field1, x => x.Field2); var writer = ListPivotWriter <TestItemContainer, TestItem> .GetWriter( new List <TestItemContainer> { containerItem }, pivot); var header = writer.GetHeader(); Assert.Equal("field1,another field,", header); }
private ListPivotWriter( ListPivot <TItem, TPivotItem> pivot) { Guard.NotNull(pivot, nameof(pivot)); _pivot = pivot; }
public void GetAllRegistrationChildrenMapsEventAnswerToColumnValueTest() { ListPivot <RegisteredChildModel, RegisteredChildEventModel> listPivot = null; _csvWriterMock.Setup(x => x.GetAsCsv <RegisteredChildModel, RegisteredChildEventModel>( It.IsAny <IList <RegisteredChildModel> >(), It.IsAny <ListPivot <RegisteredChildModel, RegisteredChildEventModel> >())) .Callback <ICollection <RegisteredChildModel>, ListPivot <RegisteredChildModel, RegisteredChildEventModel> >( (x, y) => listPivot = y); var registeredChildModel = new RegisteredChildModel { Events = new List <RegisteredChildEventModel> { new RegisteredChildEventModel { EventId = 1, Answer = Answer.Yes } } }; _manager.GetRegisteredChildren(1234); var answer = listPivot.ColumnValueAccess(registeredChildModel.Events[0]); Assert.Equal(registeredChildModel.Events[0].Answer.ToString(), answer); }
public static ListPivotWriter <TItem, TPivotItem> GetWriter( ICollection <TItem> items, ListPivot <TItem, TPivotItem> pivot) { var writer = new ListPivotWriter <TItem, TPivotItem>(pivot); writer.CacheColumnNames(items); return(writer); }
public byte[] GetRegisteredChildren(int year) { var pivot = new ListPivot <RegisteredChildModel, RegisteredChildEventModel>( nameof(RegisteredChildModel.Events), x => x.Events, x => _eventAccessor.GetName(x.EventId), x => x.Answer.ToString()); return(_csvWriter.GetAsCsv( _manager.GetRegisteredChildren(year).ToList(), pivot)); }
public void ThrowsOnNullItemsTest() { var pivot = new ListPivot <string, string>( "test", x => new List <string>(), x => x, x => x); Assert.Throws <ArgumentNullException>( () => ListPivotWriter <string, string> .GetWriter( null, pivot)); }
public void SetsPropertyGetters() { Func <string, List <string> > listAccessor = x => new List <string>(); Func <string, string> columnNameAccessor = x => x; Func <string, string> columnValueAccessor = x => x; var pivot = new ListPivot <string, string>( "test", listAccessor, columnNameAccessor, columnValueAccessor); Assert.Equal("test", pivot.PropertyName); Assert.True(listAccessor.Equals(pivot.ListAccess)); Assert.True(columnNameAccessor.Equals(pivot.ColumnNameAccess)); Assert.True(columnValueAccessor.Equals(pivot.ColumnValueAccess)); }
public void GetLineReturnsLineInCorrectOrderTest() { var containerItems = new List <TestItemContainer> { new TestItemContainer { Items = new List <TestItem> { new TestItem { Field1 = "headervalue1", Field2 = "field2" }, new TestItem { Field1 = "headervalue2", Field2 = "field2" }, } }, new TestItemContainer { Items = new List <TestItem> { new TestItem { Field1 = "headervalue2", Field2 = "value1" }, new TestItem { Field1 = "headervalue1", Field2 = "value2" }, } } }; var pivot = new ListPivot <TestItemContainer, TestItem>( "test", x => x.Items, x => x.Field1, x => x.Field2); var writer = ListPivotWriter <TestItemContainer, TestItem> .GetWriter( containerItems, pivot); var line = writer.GetLine(containerItems[1]); Assert.Equal("value2,value1", line); }
public void GetLineReturnsLineWithMissingValuesTest() { var containerItems = new List <TestItemContainer> { new TestItemContainer { Items = new List <TestItem> { new TestItem { Field1 = "field1", Field2 = "field2" }, new TestItem { Field1 = "another field", Field2 = "field2" }, } }, new TestItemContainer { Items = new List <TestItem> { new TestItem { Field1 = "another field", Field2 = "field2" }, } } }; var pivot = new ListPivot <TestItemContainer, TestItem>( "test", x => x.Items, x => x.Field1, x => x.Field2); var writer = ListPivotWriter <TestItemContainer, TestItem> .GetWriter( containerItems, pivot); var line = writer.GetLine(containerItems[1]); Assert.Equal(",field2", line); }
public void GetAllRegistrationChildrenListPivotAccessesEventsTest() { ListPivot <RegisteredChildModel, RegisteredChildEventModel> listPivot = null; _csvWriterMock.Setup(x => x.GetAsCsv <RegisteredChildModel, RegisteredChildEventModel>( It.IsAny <IList <RegisteredChildModel> >(), It.IsAny <ListPivot <RegisteredChildModel, RegisteredChildEventModel> >())) .Callback <ICollection <RegisteredChildModel>, ListPivot <RegisteredChildModel, RegisteredChildEventModel> >( (x, y) => listPivot = y); var registeredChildModel = new RegisteredChildModel { Events = new List <RegisteredChildEventModel>() }; _manager.GetRegisteredChildren(1234); Assert.Equal( registeredChildModel.Events, listPivot.ListAccess(registeredChildModel)); }
public void GetAllRegistrationChildrenMapsEventTitleToColumnNameTest() { ListPivot <RegisteredChildModel, RegisteredChildEventModel> listPivot = null; _csvWriterMock.Setup(x => x.GetAsCsv <RegisteredChildModel, RegisteredChildEventModel>( It.IsAny <IList <RegisteredChildModel> >(), It.IsAny <ListPivot <RegisteredChildModel, RegisteredChildEventModel> >())) .Callback <ICollection <RegisteredChildModel>, ListPivot <RegisteredChildModel, RegisteredChildEventModel> >( (x, y) => listPivot = y); var testName = Guid.NewGuid().ToString(); _eventAccessorMock.Setup(x => x.GetName(It.IsAny <int>())) .Returns(testName); var registeredChildModel = new RegisteredChildModel { Events = new List <RegisteredChildEventModel> { new RegisteredChildEventModel { EventId = 1, Answer = Answer.Yes } } }; _manager.GetRegisteredChildren(1234); var name = listPivot.ColumnNameAccess(registeredChildModel.Events[0]); Assert.Equal(testName, name); _eventAccessorMock.Verify( x => x.GetName( It.Is <int>(y => y == registeredChildModel.Events[0].EventId)), Times.Once); }