Beispiel #1
0
        public void SendsEventsOnInitForFlagsWhoseSegmentsChanged()
        {
            var dataBuilder = new DataSetBuilder().Flags(
                new FeatureFlagBuilder("flag1").Version(1).Build(),
                new FeatureFlagBuilder("flag2").Version(1)
                .Rules(
                    new RuleBuilder().Clauses(
                        new ClauseBuilder().Op("segmentMatch").Values(LdValue.Of(segment1.Key)).Build()
                        ).Build()
                    )
                .Build(),
                new FeatureFlagBuilder("flag3").Version(1).Build(),
                new FeatureFlagBuilder("flag4").Version(1)
                .Prerequisites(new Prerequisite("flag2", 0)).Build()
                )
                              .Segments(segment1, segment2);

            var updates = MakeInstance();

            updates.Init(dataBuilder.Build());

            var eventSink = new EventSink <FlagChangeEvent>();

            updates.FlagChanged += eventSink.Add;

            dataBuilder.Segments(segment1v2);
            updates.Init(dataBuilder.Build());

            ExpectFlagChangeEvents(eventSink, "flag2", "flag4");
        }
Beispiel #2
0
        public void SendsEventsOnInitForFlagsWhosePrerequisitesChanged()
        {
            var dataBuilder = new DataSetBuilder().Flags(
                new FeatureFlagBuilder("flag1").Version(1).Build(),
                new FeatureFlagBuilder("flag2").Version(1)
                .Prerequisites(new Prerequisite("flag1", 0)).Build(),
                new FeatureFlagBuilder("flag3").Version(1).Build(),
                new FeatureFlagBuilder("flag4").Version(1)
                .Prerequisites(new Prerequisite("flag1", 0)).Build(),
                new FeatureFlagBuilder("flag5").Version(1)
                .Prerequisites(new Prerequisite("flag4", 0)).Build(),
                new FeatureFlagBuilder("flag6").Version(1).Build()
                );

            var updates = MakeInstance();

            updates.Init(dataBuilder.Build());

            var eventSink = new EventSink <FlagChangeEvent>();

            updates.FlagChanged += eventSink.Add;

            dataBuilder.Flags(new FeatureFlagBuilder("flag1").Version(2).Build());
            updates.Init(dataBuilder.Build());

            ExpectFlagChangeEvents(eventSink, "flag1", "flag2", "flag4", "flag5");
        }
Beispiel #3
0
        public void CorrectDatasetReturned()
        {
            var datasetBuilder =
                new DataSetBuilder().AddDataTable("Users")
                .AddColumn("Id", typeof(int))
                .AddColumn("Firstname")
                .AddColumn("Lastname")
                .AddColumn("DateOfBirth", typeof(DateTime))
                .AddColumn("IsActive", typeof(bool))
                .AddRow(1, "Andy", "Robinson", "1980-04-06", true)
                .AddRow(2, "Dave", "Clarke", "1970-03-28", true)
                .AddDataTable("Logins")
                .AddColumn("Id", typeof(Guid))
                .AddColumn("UserId", typeof(int))
                .AddColumn("LoginDate", typeof(DateTime))
                .AddRow(Guid.NewGuid(), 1, "2014-12-19");

            var result = datasetBuilder.Build();

            Assert.That(result.Tables.Count, Is.EqualTo(2));
            Assert.That(result.Tables[0].TableName, Is.EqualTo("Users"));
            Assert.That(result.Tables[1].TableName, Is.EqualTo("Logins"));

            var users = result.Tables["Users"];

            Assert.That(users.Rows.Count, Is.EqualTo(2));
            Assert.That(users.Rows[0][0].ToString(), Is.EqualTo("Andy"));
            Assert.That(users.Rows[0][1].ToString(), Is.EqualTo("Robinson"));
            Assert.That(users.Rows[0][2].ToString(), Is.EqualTo(""));
        }
Beispiel #4
0
        public void SendsEventsOnInitForNewlyAddedFlags()
        {
            var dataBuilder = new DataSetBuilder().Flags(flag1).Segments(segment1);

            var updates = MakeInstance();

            updates.Init(dataBuilder.Build());

            var eventSink = new EventSink <FlagChangeEvent>();

            updates.FlagChanged += eventSink.Add;

            dataBuilder.Flags(flag2).Segments(segment2);
            updates.Init(dataBuilder.Build());

            ExpectFlagChangeEvents(eventSink, flag2.Key);
        }
Beispiel #5
0
        public void SendsEventsOnInitForUpdatedFlag()
        {
            var dataBuilder = new DataSetBuilder().Flags(flag1, flag2).Segments(segment1, segment2);

            var updates = MakeInstance();

            updates.Init(dataBuilder.Build());

            var eventSink = new EventSink <FlagChangeEvent>();

            updates.FlagChanged += eventSink.Add;

            dataBuilder.Flags(flag2v2) // modified flag
            .Segments(segment2v2);     // modified segment, but it's irrelevant
            updates.Init(dataBuilder.Build());

            ExpectFlagChangeEvents(eventSink, flag2v2.Key);
        }
Beispiel #6
0
        public void SendsEventOnUpdateForNewlyAddedFlag()
        {
            var dataBuilder = new DataSetBuilder().Flags(flag1).Segments(segment1);

            var updates = MakeInstance();

            updates.Init(dataBuilder.Build());

            var eventSink = new EventSink <FlagChangeEvent>();

            updates.FlagChanged += eventSink.Add;

            updates.Upsert(DataModel.Features, flag2.Key, DescriptorOf(flag2));

            ExpectFlagChangeEvents(eventSink, flag2.Key);
        }
Beispiel #7
0
        public void DoesNotSendEventOnUpdateIfItemWasNotReallyUpdated()
        {
            var dataBuilder = new DataSetBuilder().Flags(flag1, flag2);

            var updates = MakeInstance();

            updates.Init(dataBuilder.Build());

            var eventSink = new EventSink <FlagChangeEvent>();

            updates.FlagChanged += eventSink.Add;

            updates.Upsert(DataModel.Features, flag2.Key, DescriptorOf(flag2));

            eventSink.ExpectNoValue();
        }
Beispiel #8
0
        public void EmptyDatasetReturnedWhenNoSetupPerformed()
        {
            var datasetBuilder = new DataSetBuilder();

            Assert.IsInstanceOf <DataSet>(datasetBuilder.Build());
        }