/* * Copyright (c) 2002-2017 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] * * This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. * * This product may include a number of subcomponents with * separate copyright notices and license terms. Your use of the source * code for these subcomponents is subject to the terms and * conditions of the subcomponent's license, as noted in the LICENSE file. */ package org.neo4j.ogm.metadata; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.neo4j.ogm.domain.food.entities.scanned.Pizza; import org.neo4j.ogm.domain.food.entities.scanned.Risk; import org.neo4j.ogm.session.Session; import org.neo4j.ogm.session.SessionFactory; import org.neo4j.ogm.testutil.MultiDriverTestClass; /** * Tests behaviour of enums that have been scanned when creating a SessionFactory * * @author Mihai Raulea * @author Luanne Misquitta * @see issue #145 */ public class EnumsScannedTest extends MultiDriverTestClass { private static SessionFactory sessionFactory; private Session session; @BeforeClass public static void oneTimeSetUp() { sessionFactory = new SessionFactory(getBaseConfiguration().build(),"org.neo4j.ogm.domain.food.entities.scanned"); } @Before public void init() { session = sessionFactory.openSession(); } @After public void tearDown() { session.purgeDatabase(); } @Test public void shouldHandleEnumWithNoConverterOrPropertyAnnotation() { Pizza pizza = new Pizza(); pizza.strokeRisk = Risk.LOW; session.save(pizza); session.clear(); pizza = session.load(Pizza.class, pizza.id); assertNotNull(pizza); assertEquals(Risk.LOW, pizza.strokeRisk); assertNull(pizza.cancerRisk); assertNull(pizza.diabetesRisk); assertNull(pizza.hypertensionRisk); } @Test public void shouldHandleEnumWithConverterButNoPropertyAnnotation() { Pizza pizza = new Pizza(); pizza.diabetesRisk = Risk.HIGH; session.save(pizza); session.clear(); pizza = session.load(Pizza.class, pizza.id); assertNotNull(pizza); assertEquals(Risk.HIGH, pizza.diabetesRisk); assertNull(pizza.cancerRisk); assertNull(pizza.strokeRisk); assertNull(pizza.hypertensionRisk); } @Test public void shouldHandleEnumWithPropertyAnnotationButNoConverter() { Pizza pizza = new Pizza(); pizza.cancerRisk = Risk.LOW; session.save(pizza); session.clear(); pizza = session.load(Pizza.class, pizza.id); assertNotNull(pizza); assertEquals(Risk.LOW, pizza.cancerRisk); assertNull(pizza.diabetesRisk); assertNull(pizza.strokeRisk); assertNull(pizza.hypertensionRisk); } @Test public void shouldHandleEnumWithConverterAndPropertyAnnotation() { Pizza pizza = new Pizza(); pizza.hypertensionRisk = Risk.HIGH; session.save(pizza); session.clear(); pizza = session.load(Pizza.class, pizza.id); assertNotNull(pizza); assertEquals(Risk.HIGH, pizza.hypertensionRisk); assertNull(pizza.diabetesRisk); assertNull(pizza.strokeRisk); assertNull(pizza.cancerRisk); } }