Home Reference Source Test

src/wecreate/software/list/list.actions.spec.js

import {
    addItemAction,
    addItemsAction,
    insertItemAction,
    removeItemAction,
    removeItemByKeyAction,
    resetListAction,
    setListAction,
    updateItemAction,
    updateItemByKeyAction,
    updateItemsByKeyAction,
    updateValueAllItemsAction,
} from "./list.actions"
import {
    ADD_ITEM,
    ADD_ITEMS,
    INSERT_ITEM,
    REMOVE_ITEM,
    REMOVE_ITEM_BY_KEY,
    RESET_LIST,
    SET_LIST,
    UPDATE_ITEM,
    UPDATE_ITEM_BY_KEY,
    UPDATE_ITEMS_BY_KEY,
    UPDATE_VALUE_ALL_ITEMS,
} from "./list.types"

describe("list.actions", () => {
    const reducerName = "reducerName"
    const index = 0
    const item = { id: 0 }

    it("should create an action to insert item", () => {
        expect(
            insertItemAction({
                item,
                index,
                reducerName,
            }),
        ).toEqual({
            type: INSERT_ITEM,
            payload: {
                index: 0,
                item,
            },
            meta: { reducerName },
        })
    })

    it("should create an action to remove item", () => {
        expect(
            removeItemAction({
                index,
                reducerName,
            }),
        ).toEqual({
            type: REMOVE_ITEM,
            payload: { index: 0 },
            meta: { reducerName },
        })
    })

    it("should create an action to remove item by key", () => {
        expect(
            removeItemByKeyAction({
                item,
                reducerName,
            }),
        ).toEqual({
            type: REMOVE_ITEM_BY_KEY,
            payload: { item },
            meta: { reducerName },
        })
    })

    it("should create an action to update item by index", () => {
        expect(
            updateItemAction({
                item,
                index,
                reducerName,
            }),
        ).toEqual({
            type: UPDATE_ITEM,
            payload: {
                index: 0,
                item,
            },
            meta: { reducerName },
        })
    })

    it("should create an action to update item", () => {
        expect(
            updateItemByKeyAction({
                item,
                reducerName,
            }),
        ).toEqual({
            type: UPDATE_ITEM_BY_KEY,
            payload: { item },
            meta: { reducerName },
        })
    })

    it("should create an action to update items by key", () => {
        const items = [ item, item ]

        expect(
            updateItemsByKeyAction({
                items,
                reducerName,
            }),
        ).toEqual({
            type: UPDATE_ITEMS_BY_KEY,
            payload: { items },
            meta: { reducerName },
        })
    })

    it("should create an action to update value (key/value pairs) for all items", () => {
        const keyValuePairs = { updated: true }

        expect(
            updateValueAllItemsAction({
                keyValuePairs,
                reducerName,
            }),
        ).toEqual({
            type: UPDATE_VALUE_ALL_ITEMS,
            payload: keyValuePairs,
            meta: { reducerName },
        })
    })

    it("should create an action to reset list", () => {
        expect(
            resetListAction({ reducerName }),
        ).toEqual({
            type: RESET_LIST,
            meta: { reducerName },
        })
    })

    it("should create an action to set list", () => {
        expect(
            setListAction({
                reducerName,
                payload: [],
            }),
        ).toEqual({
            type: SET_LIST,
            payload: [],
            meta: { reducerName },
        })
    })

    it("should create an action to add item to list (end)", () => {
        expect(
            addItemAction({
                reducerName,
                item,
            }),
        ).toEqual({
            type: ADD_ITEM,
            payload: item,
            meta: { reducerName },
        })
    })

    it("should create an action to add items to list (end)", () => {
        expect(
            addItemsAction({
                reducerName,
                items: [ item ],
            }),
        ).toEqual({
            type: ADD_ITEMS,
            payload: [ item ],
            meta: { reducerName },
        })
    })
})