public void add_configuration_pack_has_to_be_idempotent()
        {
            var pack = new DiscoveryActionsConfigurationPack();
            var graph = new ConfigGraph();

            graph.Add(pack);

            var count = graph.LogsFor(ConfigurationType.Discovery).Count();

            graph.Add(new DiscoveryActionsConfigurationPack());
            graph.Add(new DiscoveryActionsConfigurationPack());
            graph.Add(new DiscoveryActionsConfigurationPack());
            graph.Add(new DiscoveryActionsConfigurationPack());
            graph.Add(new DiscoveryActionsConfigurationPack());

            graph.LogsFor(ConfigurationType.Discovery).Count()
                .ShouldEqual(count);
        }
        public void fill_action_puts_the_provenance_in_the_right_order()
        {
            var bottle = new AssemblyPackageInfo(Assembly.GetExecutingAssembly());
            var graph = new ConfigGraph();

            graph.Push(bottle);
            var extension = new FakeRegistryExtension();
            graph.Push(extension);

            var policy = new UniquePolicy();
            graph.Add(policy, ConfigurationType.Policy);

            graph.LogsFor(ConfigurationType.Policy).Single()
                .ProvenanceChain.ShouldHaveTheSameElementsAs(new BottleProvenance(bottle), new FubuRegistryExtensionProvenance(extension));
        }
        public void add_configuration_pak()
        {
            var pack = new DiscoveryActionsConfigurationPack();
            var graph = new ConfigGraph();

            graph.Add(pack);

            graph.LogsFor(ConfigurationType.Discovery).Each(log => {
                log.ProvenanceChain.ShouldHaveTheSameElementsAs(new ConfigurationPackProvenance(pack));
            });

            // Changed the access overrides to settings
            graph.LogsFor(ConfigurationType.Settings).Any().ShouldBeTrue();
        }
        public void prepend_provenance()
        {
            var graph = new ConfigGraph();
            var defaultConfigurationPack = new DefaultConfigurationPack();
            graph.Add(defaultConfigurationPack);

            var p1 = MockRepository.GenerateMock<Provenance>();
            var p2 = MockRepository.GenerateMock<Provenance>();

            graph.PrependProvenance(new Provenance[]{p1, p2});

            graph.LogsFor(ConfigurationType.Conneg).Each(log => {
                log.ProvenanceChain.ShouldHaveTheSameElementsAs(p1, p2, new ConfigurationPackProvenance(defaultConfigurationPack));
            });

            graph.LogsFor(ConfigurationType.ModifyRoutes).Each(log =>
            {
                log.ProvenanceChain.ShouldHaveTheSameElementsAs(p1, p2, new ConfigurationPackProvenance(defaultConfigurationPack));
            });

            graph.LogsFor(ConfigurationType.InjectNodes).Each(log =>
            {
                log.ProvenanceChain.ShouldHaveTheSameElementsAs(p1, p2, new ConfigurationPackProvenance(defaultConfigurationPack));
            });

            graph.LogsFor(ConfigurationType.Attachment).Each(log =>
            {
                log.ProvenanceChain.ShouldHaveTheSameElementsAs(p1, p2, new ConfigurationPackProvenance(defaultConfigurationPack));
            });
        }