public void CalcActualItems_GetContentItems_ResolveContentOnce()
        {
            // ARRANGE

            var scheme = new PropScheme();

            var dropResolverMock = new Mock <IDropResolver>();

            dropResolverMock.Setup(x => x.Resolve(It.IsAny <DropTableScheme[]>()))
            .Returns(new IProp[] { CreateFakeResource(scheme) });
            var dropResolver = dropResolverMock.Object;

            var store      = new DropTableChestStore(new DropTableScheme[0], dropResolver);
            var firstProps = store.CalcActualItems();



            // ACT
            var secondProps = store.CalcActualItems();



            // ASSERT
            dropResolverMock.Verify(x => x.Resolve(It.IsAny <DropTableScheme[]>()), Times.Once);
            secondProps.Length.Should().Be(firstProps.Length);
            secondProps[0].Should().BeSameAs(firstProps[0]);
        }
        public void CalcActualItems_DropSameResourceTwice_MergeSameResourcesToStack()
        {
            // ARRANGE

            var scheme = new PropScheme();

            var dropResolverMock = new Mock <IDropResolver>();

            dropResolverMock.Setup(x => x.Resolve(It.IsAny <DropTableScheme[]>()))
            .Returns(new IProp[] { CreateFakeResource(scheme), CreateFakeResource(scheme) });
            var dropResolver = dropResolverMock.Object;

            var store = new DropTableChestStore(new DropTableScheme[0], dropResolver);



            // ACT
            var props = store.CalcActualItems();



            // ASSERT
            props.Length.Should().Be(1);
            ((Resource)props[0]).Count.Should().Be(2);
        }