Tests: SL::Dev Änderungen übernommen
[kivitendo-erp.git] / t / file / filesystem.t
1 use strict;
2 use Test::More tests => 14;
3
4 use lib 't';
5
6 use File::Temp;
7 use Support::TestSetup;
8 use Test::Exception;
9 use SL::File;
10 use SL::Dev::File qw(create_uploaded create_scanned create_created);
11
12
13 Support::TestSetup::login();
14
15 my $temp_dir    = File::Temp::tempdir("kivi-t-file-filesystem.XXXXXX", TMPDIR => 1, CLEANUP => 1);
16 my $storage_dir = "$temp_dir/storage";
17
18 mkdir($storage_dir) || die $!;
19 {
20 local $::lx_office_conf{paths}->{document_path} = $storage_dir;
21 $::instance_conf->data;
22 local $::instance_conf->{data}{doc_files} = 1;
23
24 my $scannerfile = "${temp_dir}/f2";
25
26 clear_up();
27 reset_state();
28
29 my $file1 = create_uploaded( file_name => 'file1', file_contents => 'inhalt1 uploaded' );
30 my $file2 = create_scanned(  file_name => 'file2', file_contents => 'inhalt2 scanned', file_path => $scannerfile );
31 my $file3 = create_created(  file_name => 'file3', file_contents => 'inhalt3 created'    );
32 my $file4 = create_created(  file_name => 'file3', file_contents => 'inhalt3 new version');
33
34 is( SL::Dev::File::get_all_count(),                    3,"total number of files created is 3");
35 ok( $file1->file_name                        eq 'file1' ,"file has right name");
36 my $content1 = $file1->get_content;
37 ok( $$content1 eq 'inhalt1 uploaded'                    ,"file has right content");
38
39 is( -f $scannerfile ? 1 : 0,                           0,"scanned document is moved from scanner");
40
41 $file2->delete;
42 is( -f $scannerfile ? 1 : 0,                           1,"scanned document is moved back to scanner");
43 my $content2 = File::Slurp::read_file($scannerfile);
44 ok( $content2 eq 'inhalt2 scanned'                      ,"scanned file has right content");
45
46 my @file5 = SL::Dev::File::get_all(file_name => 'file3');
47 is(   scalar( @file5),                                 1, "one actual file found");
48 my $content5 = $file5[0]->get_content();
49 ok( $$content5 eq 'inhalt3 new version'                 ,"file has right actual content");
50
51 my @file6 = SL::Dev::File::get_all_versions(file_name => 'file3');
52 is(   scalar( @file6),                                 2,"two file versions found");
53 $content5 = $file6[0]->get_content;
54 ok( $$content5 eq 'inhalt3 new version'                 ,"file has right actual content");
55 $content5 = $file6[1]->get_content;
56 ok( $$content5 eq 'inhalt3 created'                     ,"file has right old content");
57
58 #print "\n\nController Test:\n";
59 # now test controller
60 #$::form->{object_id}  = 1;
61 #$::form->{object_type}= 'sales_order';
62 #$::form->{file_type}  = 'document';
63
64 my $output;
65 open(my $outputFH, '>', \$output) or die; # This shouldn't fail
66 my $oldFH = select $outputFH;
67
68 $::form->{id}  = $file1->id;
69 use SL::Controller::File;
70 SL::Controller::File->action_download();
71
72 select $oldFH;
73 close $outputFH;
74 my @lines = split "\n" , $output;
75 ok($lines[4] eq 'inhalt1 uploaded'                 ,"controller download has correct content");
76
77 #some controller checks
78 $::form->{object_id}   = 12345678;
79 $::form->{object_type} = undef;
80 my $result='xx1';
81 eval {
82   SL::Controller::File->check_object_params();
83   $result='yy1';
84   1;
85 } or do {
86   $result=$@;
87 };
88 $result = substr($result,0,14);
89 #print $result."\n";
90 ok($result eq "No object type","correct error 'No object type'");
91
92 $::form->{object_type} ='sales_order';
93 $::form->{file_type} ='';
94 $result='xx2';
95 eval {
96   SL::Controller::File->check_object_params();
97   $result='yy2';
98   1;
99 } or do {
100   $result=$@;
101 };
102 $result = substr($result,0,12);
103 #print $result."\n";
104 ok($result eq "No file type","correct error 'No file type'");
105
106 clear_up();
107 done_testing;
108
109 sub clear_up {
110   # Cleaning up may fail.
111   eval {
112     SL::Dev::File::delete_all();
113     unlink($scannerfile);
114   };
115 }
116
117 }
118
119 sub reset_state {
120   my %params = @_;
121
122 };
123
124 1;