Ejemplo n.º 1
0
        private void TestCreateDeleteApi <TModel>(
            IReadOnlyApiEndpoint <TModel> api,
            Func <IReadOnlyApiEndpoint <TModel>, int?> findTestId,
            Func <TModel, int> getId,
            Action <TModel> init,
            Action <TModel> testDeleted,
            params Expression <Func <TModel, object> >[] propsToTest
            )
            where TModel : class
        {
            var createApi = api as IReadCreateApiEndpoint <TModel> ?? throw new ArgumentException("Does not implement Create api.");
            var deleteApi = api as IReadDeleteApiEndpoint <TModel> ?? throw new ArgumentException("Does not implement Delete api.");

            RemovePreviousTest(deleteApi, findTestId);

            var item = TestCreateApi(createApi, getId, init, propsToTest);

            TestDeleteApi(deleteApi, item, getId, testDeleted);
        }
Ejemplo n.º 2
0
        private void TestReadOnlyApi <TModel>(
            IReadOnlyApiEndpoint <TModel> apiEndpoint,
            Func <TModel, int> getId,
            Func <TModel[], int> selectIndex = null
            ) where TModel : class
        {
            var itemText  = ItemText <TModel>();
            var itemsText = itemText + "s";

            if (selectIndex == null)
            {
                selectIndex = list => (list.Length == 1 ? 0 : 1);
            }

            _output.WriteLine($"Enumerating {itemsText}...");
            var items = apiEndpoint.ToArray();

            Assert.NotNull(items);

            _output.WriteLine($"Getting count of {itemsText}...");
            var itemCount = apiEndpoint.GetCount();

            Assert.Equal(items.Length, itemCount);

            if (itemCount == 0)
            {
                _output.WriteLine($"No {itemsText}, cannot continue this test.");
                return;
            }

            var index  = selectIndex(items);
            var itemId = getId(items[index]);

            _output.WriteLine($"Loading {itemsText} ID={itemId}...");
            var item = apiEndpoint.Find(itemId);

            Assert.NotNull(item);
            Assert.Equal(itemId, getId(item));

            Assert.Equal(items[index], item);
            Assert.False(ReferenceEquals(items[index], item));
        }