source: trunk/test/unit/dbnp/studycapturing/TemplateFieldFileTests.groovy @ 507

Last change on this file since 507 was 507, checked in by roberth, 11 years ago

Implemented file upload template fields

File size: 6.6 KB
Line 
1package dbnp.studycapturing
2
3import grails.test.*
4
5class TemplateFieldFileTests extends GrailsUnitTestCase {
6    def testEvent;
7    def fileService;
8
9
10    protected void setUp() {
11        super.setUp()
12
13        fileService = new FileService();
14
15        // Override uploadDir method because the applicationContext is not
16        // available in testcases
17        fileService.metaClass.getUploadDir = {
18            return new File( 'D:/isdat/dbNP/Sources/gscf mei/web-app/fileuploads' );
19        }
20       
21        // Create the template itself
22        def testTemplate = new Template(
23                name: 'Template for testing relative file fields',
24                entity: dbnp.studycapturing.Event,
25                fields: [
26                    new TemplateField(
27                        name: 'testRelTime',
28                        type: TemplateFieldType.RELTIME
29                    ),
30                    new TemplateField(
31                        name: 'testFile',
32                        type: TemplateFieldType.FILE
33                    )
34                ]
35            );
36
37        this.testEvent = new Event(
38                template: testTemplate,
39                startTime: 3600,
40                endTime: 7200
41        )
42
43        // Sometimes the fileService is not created yet
44        if( !testEvent.fileService ) {
45            testEvent.fileService = fileService;
46        }
47
48        // Create two files
49        println( fileService.getUploadDir() );
50
51        new File( fileService.getUploadDir(), 'TemplateFieldTest.txt' ).createNewFile();
52        new File( fileService.getUploadDir(), 'TemplateFieldTest2.txt' ).createNewFile();
53        new File( fileService.getUploadDir(), 'TemplateFieldTest3.txt' ).createNewFile();
54
55        // Create a new directory
56        new File( fileService.getUploadDir(), 'subdir' ).mkdir();
57        new File( fileService.getUploadDir(), 'subdir/TemplateFieldSub.txt' ).createNewFile();
58
59    }
60
61    protected void tearDown() {
62        super.tearDown()
63
64        new File( fileService.getUploadDir(), 'TemplateFieldTest.txt' ).delete();
65        new File( fileService.getUploadDir(), 'TemplateFieldTest2.txt' ).delete();
66        new File( fileService.getUploadDir(), 'TemplateFieldTest3.txt' ).delete();
67
68        new File( fileService.getUploadDir(), 'subdir/TemplateFieldSub.txt' ).delete();
69        new File( fileService.getUploadDir(), 'subdir' ).delete();
70    }
71
72    void testFileFieldCreation() {
73        def FileField = new TemplateField(
74                name: 'testFile',
75                type: TemplateFieldType.FILE
76        );
77    }
78
79
80        // If NULL is given, the field value is emptied and the old file is removed
81        // If an empty string is given, the field value is kept as was
82        // If a file is given, it is moved to the right directory. Old files are deleted. If
83        //   the file does not exist, the field is kept
84        // If a string is given, it is supposed to be a file in the upload directory. If
85        //   it is different from the old one, the old one is deleted. If the file does not
86        //   exist, the field is kept.
87
88    void testFileSetValue() {
89        // Check whether the field exists
90        assert this.testEvent.fieldExists( 'testFile' );
91
92        // See that it is not a domain field
93        assert !this.testEvent.isDomainField( 'testFile' );
94
95        // See that it is a FILE field
96        // assert !this.testEvent.getField( 'testFile' ).type == TemplateFieldType.FILE;
97        println( this.testEvent.getStore( TemplateFieldType.FILE ) );
98       
99        // Set the name of an existing file
100        assert fileService.fileExists( 'TemplateFieldTest.txt' );
101        this.testEvent.setFieldValue( 'testFile', 'TemplateFieldTest.txt' );
102        assert this.testEvent.getFieldValue( 'testFile' ) == 'TemplateFieldTest.txt';
103        assert fileService.fileExists( 'TemplateFieldTest.txt' );
104
105        // Set the name of a non existing file
106        assert !fileService.fileExists( 'TemplateFieldTestNotExisting.txt' );
107        this.testEvent.setFieldValue( 'testFile', 'TemplateFieldTestNotExisting.txt' );
108        assert this.testEvent.getFieldValue( 'testFile' ) == 'TemplateFieldTest.txt';
109        assert fileService.fileExists( 'TemplateFieldTest.txt' );
110        assert !fileService.fileExists( 'TemplateFieldTestNotExisting.txt' );
111
112        // Set the name of a new existing file, and the old one is deleted
113        assert fileService.fileExists( 'TemplateFieldTest.txt' );
114        assert fileService.fileExists( 'TemplateFieldTest2.txt' );
115        this.testEvent.setFieldValue( 'testFile', 'TemplateFieldTest2.txt' );
116        assert this.testEvent.getFieldValue( 'testFile' ) == 'TemplateFieldTest2.txt';
117        assert !fileService.fileExists( 'TemplateFieldTest.txt' );
118        assert fileService.fileExists( 'TemplateFieldTest2.txt' );
119
120        // Set a nonexisting File object
121        assert fileService.fileExists( 'TemplateFieldTest2.txt' );
122        assert !fileService.fileExists( 'NonExistent.txt' );
123        this.testEvent.setFieldValue( 'testFile', new File( fileService.getUploadDir(), 'NonExistent.txt' ) );
124        assert this.testEvent.getFieldValue( 'testFile' ) == 'TemplateFieldTest2.txt';
125        assert fileService.fileExists( 'TemplateFieldTest2.txt' );
126
127        // Set a existing File object
128        assert fileService.fileExists( 'TemplateFieldTest2.txt' );
129        assert fileService.fileExists( 'subdir/TemplateFieldSub.txt' );
130        assert !fileService.fileExists( 'TemplateFieldSub.txt' );
131
132        def f = new File( fileService.getUploadDir(), 'subdir/TemplateFieldSub.txt' )
133        this.testEvent.setFieldValue( 'testFile', f );
134       
135        assert this.testEvent.getFieldValue( 'testFile' ) == 'TemplateFieldSub.txt';
136        assert fileService.fileExists( this.testEvent.getFieldValue( 'testFile' ) );
137        assert !fileService.fileExists( 'TemplateFieldTest2.txt' );
138
139        //fileService.delete( this.testEvent.getFieldValue( 'testFile' ) );
140
141        // Set the name of an empty string
142        assert fileService.fileExists( 'TemplateFieldTest3.txt' );
143        this.testEvent.setFieldValue( 'testFile', 'TemplateFieldTest3.txt' );
144        this.testEvent.setFieldValue( 'testFile', '' );
145        assert this.testEvent.getFieldValue( 'testFile' ) == 'TemplateFieldTest3.txt';
146        assert fileService.fileExists( 'TemplateFieldTest3.txt' );
147
148        // THe old file must be deleted
149        assert !fileService.fileExists( 'TemplateFieldSub.txt' );
150
151        // Set the name to NULL (empty the field
152        this.testEvent.setFieldValue( 'testFile', null );
153        assert this.testEvent.getFieldValue( 'testFile' ) == null;
154        assert !fileService.fileExists( 'TemplateFieldTest3.txt' );
155
156    }
157
158}
Note: See TracBrowser for help on using the repository browser.