Files
SCM-Manager/scm-ui/src/changesets/modules/changesets.test.js

67 lines
1.6 KiB
JavaScript
Raw Normal View History

2018-09-10 17:00:53 +02:00
// @flow
import configureMockStore from "redux-mock-store";
import thunk from "redux-thunk";
import fetchMock from "fetch-mock";
import {
FETCH_CHANGESETS_PENDING,
FETCH_CHANGESETS_SUCCESS,
fetchChangesets,
fetchChangesetsSuccess
} from "./changesets";
import reducer from "./changesets";
const collection = {};
describe("fetching of changesets", () => {
const URL = "/api/rest/v2/repositories/foo/bar/changesets";
const mockStore = configureMockStore([thunk]);
afterEach(() => {
fetchMock.reset();
fetchMock.restore();
});
it("should fetch changesets", () => {
fetchMock.getOnce(URL, "{}");
const expectedActions = [
{ type: FETCH_CHANGESETS_PENDING },
{
type: FETCH_CHANGESETS_SUCCESS,
payload: collection
}
];
const store = mockStore({});
return store.dispatch(fetchChangesets("foo", "bar")).then(() => {
expect(store.getActions()).toEqual(expectedActions);
});
})
});
describe("changesets reducer", () => {
const responseBody = {
_embedded: {
changesets: [
{id: "changeset1", author: { mail: "z@phod.com", name: "zaphod"}},
{id: "changeset2"},
{id: "changeset3"},
],
_embedded: {
tags: [],
branches: [],
parents: []
}
}
};
it("should set state correctly", () => {
const newState = reducer({}, fetchChangesetsSuccess(responseBody));
expect(newState.byIds["changeset1"]).toBeDefined();
expect(newState.byIds["changeset1"].author.mail).toEqual("z@phod.com");
expect(newState.byIds["changeset2"]).toBeDefined();
expect(newState.byIds["changeset3"]).toBeDefined();
})
});