Example #1
0
        public async Task RoleActorRename_ExpectsNewValue()
        {
            var stateManager = new Mock <IActorStateManager>();
            var oldState     = new RoleState("old role", "OLDROLE", Guid.NewGuid().ToString());
            var newState     = new RoleState("new role", "NEWROLE", null);

            stateManager.Setup(manager => manager.GetStateAsync <RoleState>(_stateName, It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(oldState))
            .Verifiable();
            stateManager.Setup(manager => manager
                               .SetStateAsync(
                                   _stateName,
                                   It.Is <RoleState>(o =>
                                                     o.Name == newState.Name &&
                                                     o.NormalizedName == newState.NormalizedName &&
                                                     string.IsNullOrWhiteSpace(o.ConcurrencyStamp) &&
                                                     o.ConcurrencyStamp != oldState.ConcurrencyStamp),
                                   It.IsAny <CancellationToken>()))
            .Verifiable();
            string            id            = Guid.NewGuid().ToString();
            RoleAggregateRoot testDemoActor = await CreateActor(stateManager.Object, id);

            await testDemoActor.Tell(new RenameRole(id, newState.Name, newState.NormalizedName, oldState.ConcurrencyStamp, "user"));

            stateManager.VerifyAll();
        }
Example #2
0
        private async Task <RoleAggregateRoot> CreateActor(IActorStateManager actorStateManager, string id)
        {
            var eventBus             = new Mock <IEventBus>();
            var eventStore           = new Mock <IEventStore>();
            var actorTypeInformation = ActorTypeInformation.Get(typeof(RoleAggregateRoot));

            RoleAggregateRoot actorFactory(ActorService service, ActorId id) =>
            new RoleAggregateRoot(service, id, eventBus.Object, eventStore.Object, actorStateManager);

            var actorService             = new ActorService(actorTypeInformation, actorFactory);
            RoleAggregateRoot actor      = actorFactory(actorService, new ActorId(id));
            MethodInfo        OnActivate = actor.GetType().GetMethod("OnActivateAsync", BindingFlags.NonPublic | BindingFlags.Instance);

            await(Task) OnActivate.Invoke(actor, Array.Empty <object>());
            return(actor);
        }
Example #3
0
        public async Task RoleActorRemove_ExpectsRemoveState()
        {
            var stateManager = new Mock <IActorStateManager>();
            var oldState     = new RoleState("old role", "OLDROLE", Guid.NewGuid().ToString());

            stateManager.Setup(manager => manager
                               .GetStateAsync <RoleState>(_stateName, It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(oldState))
            .Verifiable();
            stateManager.Setup(manager => manager
                               .RemoveStateAsync(_stateName, It.IsAny <CancellationToken>()))
            .Verifiable();
            string            id            = Guid.NewGuid().ToString();
            RoleAggregateRoot testDemoActor = await CreateActor(stateManager.Object, id);

            await testDemoActor.Tell(new RemoveRole(id, oldState.ConcurrencyStamp, "user"));

            stateManager.VerifyAll();
        }
Example #4
0
        public async Task RoleActorAdd_ExpectsValue()
        {
            var stateManager = new Mock <IActorStateManager>();
            var state1       = new RoleState("new role", "NEWROLE", null);

            stateManager.Setup(manager => manager
                               .SetStateAsync(
                                   _stateName,
                                   It.Is <RoleState>(o =>
                                                     o.Name == state1.Name &&
                                                     o.NormalizedName == state1.NormalizedName &&
                                                     !string.IsNullOrWhiteSpace(o.ConcurrencyStamp)),
                                   It.IsAny <CancellationToken>()))
            .Verifiable();
            string            id            = Guid.NewGuid().ToString();
            RoleAggregateRoot testDemoActor = await CreateActor(stateManager.Object, id);

            await testDemoActor.Tell(new AddNewRole(id, state1.Name, state1.NormalizedName, "user"));

            stateManager.VerifyAll();
        }
Example #5
0
        public async Task RoleActorAdd_ExpectGetStateAsync()
        {
            var stateManager = new Mock <IActorStateManager>();
            var state        = new RoleState("new role", "NEWROLE", Guid.NewGuid().ToString());

            stateManager.Setup(manager => manager.GetStateAsync <RoleState>(_stateName, It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(state))
            .Verifiable();
            RoleAggregateRoot testDemoActor = await CreateActor(stateManager.Object, Guid.NewGuid().ToString());

            object result = await testDemoActor.GetStateValue();

            result.Should().NotBeNull();
            result.Should().BeOfType <RoleState>();
            var value = (RoleState)result;

            value.Should().NotBeNull();
            value.Name.Should().Be(state.Name);
            value.NormalizedName.Should().Be(state.NormalizedName);
            value.ConcurrencyStamp.Should().Be(state.ConcurrencyStamp);
            stateManager.VerifyAll();
        }