SecondsDescriptorTest.java

package com.cronutils.descriptor.refactor;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import java.util.Locale;
import java.util.ResourceBundle;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import com.cronutils.model.field.expression.And;
import com.cronutils.model.field.expression.Every;
import com.cronutils.model.field.expression.On;
import com.cronutils.model.field.value.IntegerFieldValue;

/**
 * Test class for SecondsDescriptor.java
 */
class SecondsDescriptorTest {

	ResourceBundle resourceBundle;
	SecondsDescriptor secondsDescriptor;
	
	@BeforeEach
	public void setUp() {
		resourceBundle = ResourceBundle.getBundle("com.cronutils.CronUtilsI18N", Locale.UK);
		secondsDescriptor = new SecondsDescriptor(resourceBundle);
	}
	
	/**
	 * Test describe() method for 'And' field expression
	 */
	@Test
	void testDescribeForAndExpression() {
		String expectedDesc = "at 7  and 3";
		And and = new And();
		and.and(new On(new IntegerFieldValue(7)));
		and.and(new On(new IntegerFieldValue(3)));
		String description = secondsDescriptor.describe(and);
		assertNotNull(description);
		assertEquals(expectedDesc, description);
	}

	/**
	 * Test visit() method for 'Every' field expression
	 */
	@Test
	void testVisitForEvery() {
		SecondsDescriptor mockedDescriptor = mock(SecondsDescriptor.class);
		Every every = new Every(new On(new IntegerFieldValue(7)), new IntegerFieldValue(2));
		mockedDescriptor.visit(every);
		verify(mockedDescriptor, times(1)).visit(every);
	}
}