import { EventFormatter } from '../../src/util';

describe('EventFormatter', () => {
    let eventFormatter;

    beforeEach(() => {
        eventFormatter = new EventFormatter('App.Events');
    });

    test("prepends an event with a namespace and replaces dot separators with backslashes", () => {
        let formatted = eventFormatter.format("Users.UserCreated");

        expect(formatted).toBe("App\\Events\\Users\\UserCreated");
    });

    test('does not prepend a namespace when an event starts with a dot', () => {
        let formatted = eventFormatter.format('.App\\Users\\UserCreated');

        expect(formatted).toBe('App\\Users\\UserCreated');
    });

    test('does not prepend a namespace when an event starts with a backslash', () => {
        let formatted = eventFormatter.format('\\App\\Users\\UserCreated');

        expect(formatted).toBe('App\\Users\\UserCreated');
    });

    test('does not replace dot separators when the event starts with a dot', () => {
        let formatted = eventFormatter.format('.users.created');

        expect(formatted).toBe('users.created');
    });

    test('does not replace dot separators when the event starts with a backslash', () => {
        let formatted = eventFormatter.format('\\users.created');

        expect(formatted).toBe('users.created');
    });

    test('does not prepend a namespace when none is set', () => {
        let eventFormatter = new EventFormatter(false);

        let formatted = eventFormatter.format('Users.UserCreated');

        expect(formatted).toBe('Users\\UserCreated');
    });
});
