コード例 #1
0
        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);
        }
コード例 #2
0
        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))));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        private ListPivotWriter(
            ListPivot <TItem, TPivotItem> pivot)
        {
            Guard.NotNull(pivot, nameof(pivot));

            _pivot = pivot;
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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));
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        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));
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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));
        }
コード例 #14
0
        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);
        }