diff --git a/net/web/src/api/getChannels.js b/net/web/src/api/getChannels.js
index 0dafc671..b5dd7ce7 100644
--- a/net/web/src/api/getChannels.js
+++ b/net/web/src/api/getChannels.js
@@ -8,6 +8,7 @@ export async function getChannels(token, revision) {
let types = encodeURIComponent(JSON.stringify([ 'sealed', 'superbasic' ]));
param += `&types=${types}`
let channels = await fetchWithTimeout('/content/channels' + param, { method: 'GET' });
+
checkResponse(channels)
let ret = await channels.json()
return ret;
diff --git a/net/web/test/Channel.test.js b/net/web/test/Channel.test.js
index 07a84329..5371a4b9 100644
--- a/net/web/test/Channel.test.js
+++ b/net/web/test/Channel.test.js
@@ -1,4 +1,5 @@
import React, { useState, useEffect, useContext } from 'react';
+import { prettyDOM } from '@testing-library/dom'
import {render, act, screen, waitFor, fireEvent} from '@testing-library/react'
import { ChannelContextProvider, ChannelContext } from 'context/ChannelContext';
import * as fetchUtil from 'api/fetchUtil';
@@ -6,16 +7,27 @@ import * as fetchUtil from 'api/fetchUtil';
let channelContext = null;
function ChannelView() {
const [renderCount, setRenderCount] = useState(0);
+ const [channels, setChannels] = useState([]);
const channel = useContext(ChannelContext);
channelContext = channel;
useEffect(() => {
+ const rendered = []
+ const entries = Array.from(channel.state.channels.values());
+ entries.forEach(entry => {
+ rendered.push(
+
+ { entry.data.channelDetail.data }
+ { entry.data.channelSummary.data }
+
);
+ });
+ setChannels(rendered);
setRenderCount(renderCount + 1);
- }, [channel.state]);
+ }, [channel.state])
return (
-
-
{ renderCount }
+
+ { channels }
);
}
@@ -45,6 +57,36 @@ afterEach(() => {
});
test('testing channel sync', async () => {
+
+ fetching = (url, options) => {
+ if (url.startsWith('/content/channels/123/detail')) {
+ return Promise.resolve({
+ status: 200,
+ json: () => Promise.resolve({ dataType: 'superbasic', data: 'testdata' }),
+ });
+ }
+ else if (url.startsWith('/content/channels/123/summary')) {
+ return Promise.resolve({
+ status: 200,
+ json: () => Promise.resolve({ guid: '11', dataType: 'superbasictopic', data: 'testdata' }),
+ });
+ }
+ else {
+ return Promise.resolve({
+ status: 200,
+ json: () => Promise.resolve([
+ { id: '123', revision: 2, data: {
+ detailRevision: 3,
+ topicRevision: 5,
+ channelSummary: { guid: '11', dataType: 'superbasictopic', data: 'testdata' },
+ channelDetail: { dataType: 'superbasic', data: 'testdata' },
+ }
+ },
+ ])
+ });
+ }
+ }
+
render(
);
await waitFor(async () => {
@@ -55,6 +97,16 @@ test('testing channel sync', async () => {
channelContext.actions.setToken('abc123');
await channelContext.actions.setRevision(1);
});
+
+ //screen.getByTestId('count').attributes.count.value
+ //console.log(prettyDOM(screen.getByTestId('channels')));
+
+ await waitFor(async () => {
+ expect(screen.getByTestId('channels').children).toHaveLength(1);
+ expect(screen.getByTestId('detail').textContent).toBe('testdata');
+ expect(screen.getByTestId('summary').textContent).toBe('testdata');
+ });
+
});