public void Visit_SeparatesSeparatable()
        {
            const string CostTypeId = "costType1";
            var          catalogue  =
                NodeFactory.Catalogue(NodeFactory.Gamesystem())
                .AddCostTypes(NodeFactory.CostType(CostTypeId, "pts", -1))
                .AddRules(NodeFactory.Rule("rulename"));
            var rule      = catalogue.Rules[0];
            var converter = new SourceNodeToGitreeConverter();
            var result    = converter.Visit(catalogue);

            Assert.Collection(
                result.Datablob.Catalogues,
                cat =>
            {
                Assert.Collection(
                    cat.CostTypes,
                    x => Assert.Equal(CostTypeId, x.Id));
                Assert.Empty(cat.Rules);
            });
            Assert.Collection(
                result.Lists.Where(x => x.Items.Length > 0),
                list => Assert.Collection(
                    list.Items,
                    item => Assert.Equal(rule, item.WrappedNode)));
        }
        public void Visit_ListWithSanitizableNames_AssignsSanitizedNames(string ruleName)
        {
            var catalogue =
                NodeFactory.Catalogue(NodeFactory.Gamesystem())
                .AddRules(NodeFactory.Rule(ruleName));
            var converter = new SourceNodeToGitreeConverter();
            var result    = converter.Visit(catalogue);

            Assert.Collection(
                result.Lists.Where(x => x.Items.Length > 0),
                ruleList => Assert.Collection(
                    ruleList.Items,
                    x => Assert.Equal(ruleName.FilenameSanitize(), x.Datablob.Meta.Identifier)));
        }
        public void Visit_ListWithDuplicateNames_AssignsUniqueNames()
        {
            const string RuleName  = "Test Rule";
            var          catalogue =
                NodeFactory.Catalogue(NodeFactory.Gamesystem())
                .AddRules(
                    NodeFactory.Rule(RuleName),
                    NodeFactory.Rule(RuleName));
            var converter = new SourceNodeToGitreeConverter();
            var result    = converter.Visit(catalogue);

            Assert.Collection(
                result.Lists.Where(x => x.Items.Length > 0),
                ruleList => Assert.Collection(
                    ruleList.Items,
                    item => Assert.Equal(RuleName, item.Datablob.Meta.Identifier),
                    item => Assert.Equal(RuleName + " - 1", item.Datablob.Meta.Identifier)));
        }