Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package com.spice.profitmandi.service;

import com.spice.profitmandi.dao.entity.user.AgendaInstance;
import com.spice.profitmandi.dao.enumuration.dtr.AgendaSource;
import com.spice.profitmandi.dao.enumuration.dtr.AgendaType;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import static org.junit.Assert.assertEquals;

public class AgendaVisibilityFilterTest {

    private static AgendaInstance inst(AgendaType type, AgendaSource source) {
        AgendaInstance ai = new AgendaInstance();
        ai.setAgendaType(type.name());
        ai.setSource(source.name());
        ai.setStatus("OPEN");
        return ai;
    }

    private static List<String> types(List<AgendaInstance> list) {
        return list.stream().map(AgendaInstance::getAgendaType).collect(Collectors.toList());
    }

    @Test
    public void revivalHidesDataDrivenAgendasExceptCreditDues() {
        List<AgendaInstance> open = new ArrayList<>();
        open.add(inst(AgendaType.REVIVAL, AgendaSource.AUTO));
        open.add(inst(AgendaType.LOW_SALES, AgendaSource.AUTO));
        open.add(inst(AgendaType.LOW_PURCHASE, AgendaSource.AUTO));
        open.add(inst(AgendaType.LOW_INVESTMENT, AgendaSource.AUTO));
        open.add(inst(AgendaType.CREDIT_DUES, AgendaSource.AUTO));
        open.add(inst(AgendaType.BRAND_ADDITION, AgendaSource.MANUAL));

        List<AgendaInstance> visible = AgendaInstanceServiceImpl.filterVisibleForVisitStatic(open);
        List<String> t = types(visible);
        assertEquals(3, visible.size());
        assertEquals(true, t.contains(AgendaType.REVIVAL.name()));
        assertEquals(true, t.contains(AgendaType.CREDIT_DUES.name()));
        assertEquals(true, t.contains(AgendaType.BRAND_ADDITION.name())); // MANUAL always shows
    }

    @Test
    public void noRevivalShowsEverything() {
        List<AgendaInstance> open = new ArrayList<>();
        open.add(inst(AgendaType.LOW_SALES, AgendaSource.AUTO));
        open.add(inst(AgendaType.LOW_INVESTMENT, AgendaSource.AUTO));
        assertEquals(2, AgendaInstanceServiceImpl.filterVisibleForVisitStatic(open).size());
    }
}