상속: ICharacter, INotifyPropertyChanged
예제 #1
0
        public async Task RefreshSetsPropertiesToBeUpdatedIfNewDataIsReceived()
        {
            // Arrange
            var characterMock = new Mock<ICharacter>();
            // Setup difference
            characterMock.Setup(c => c.Rank).Returns(1);
            
            var sessionMock = new Mock<ISession>();
            sessionMock.Setup(s => s.RequestCharacterAsync(It.IsAny<string>()))
                       .ReturnsAsync(characterMock.Object);

            var sut = new Character(0, ValidUsername, string.Empty, 0, 0, sessionMock.Object);
            sut.MonitorEvents();

            // Act
            await sut.Refresh();

            // Assert
            sut.ShouldRaise("PropertyChanged");
        }
예제 #2
0
        public async Task RefreshRequestsNoDataIfCharacterIsLoadedAndForceIsFalse2()
        {
            // Arrange
            var characterMock = new Mock<ICharacter>();
            var sessionMock = new Mock<ISession>();
            sessionMock.Setup(s => s.RequestCharacterAsync(It.IsAny<string>()))
                       .ReturnsAsync(characterMock.Object)
                       .Verifiable();
            var sut = new Character(0, ValidUsername, string.Empty, 0, 0, sessionMock.Object);

            // Act
            await sut.Refresh();
            await sut.Refresh();

            // Assert
            // Data should only be requested once, as the request was not forced
            sessionMock.Verify(s => s.RequestCharacterAsync(It.IsAny<string>()), Times.Once());
        }
예제 #3
0
        public async Task RefreshRequestsDataIfCharacterIsLoadedAndForceIsTrue2()
        {

            // Arrange
            var characterMock = new Mock<ICharacter>();
            var sessionMock = new Mock<ISession>();
            sessionMock.Setup(s => s.RequestCharacterAsync(It.IsAny<string>()))
                       .ReturnsAsync(characterMock.Object)
                       .Verifiable();
            var sut = new Character(0, ValidUsername, string.Empty, 0, 0, sessionMock.Object);

            // Act
            await sut.Refresh();
            await sut.Refresh(force: true);

            // Assert
            // Data should be requested two times, due to the second request was forced
            sessionMock.Verify(s => s.RequestCharacterAsync(It.IsAny<string>()), Times.Exactly(2));
        }
예제 #4
0
        public async Task RefreshRequestsDataIfCharacterIsLoadedAndForceIsTrue()
        {
            // Arrange
            var characterMock = new Mock<ICharacter>();

            var sessionMock = new Mock<ISession>();
            sessionMock.Setup(s => s.RequestCharacterAsync(It.IsAny<string>()))
                       .ReturnsAsync(characterMock.Object)
                       .Verifiable();

            var savegameMock = new Mock<ISavegame>();
            savegameMock.Setup(sg => sg.GetValue<int>(It.IsAny<SF>())).Returns(1);
            savegameMock.Setup(sg => sg.GetValue<int>(It.IsAny<int>())).Returns(1);
            savegameMock.Setup(sg => sg.GetValue(It.IsAny<SF>())).Returns(1);
            savegameMock.Setup(sg => sg.GetValue(It.IsAny<int>())).Returns(1);

            var characterResponseMock = new Mock<ICharacterResponse>();
            characterResponseMock.Setup(c => c.Savegame).Returns(savegameMock.Object);

            var sut = new Character(characterResponseMock.Object, ValidUsername, sessionMock.Object, TestConstants.ValidServerUri);

            // Act
            await sut.Refresh(force: true);

            // Assert
            sessionMock.Verify(s => s.RequestCharacterAsync(It.IsAny<string>()), Times.Once());
        }