root/branches/release-40/t/lib/MT/Test.pm @ 2578

Revision 2578, 30.4 kB (checked in by auno, 18 months ago)

MTAuthors doesn't support sort_by="id". BugzID:79876
* set author_created_on date and fixed 35-tags.dat

  • Property svn:keywords set to Id Revision
Line 
1package MT::Test;
2
3use strict;
4# Handle cwd = MT_DIR, MT_DIR/t
5use lib 't/lib', 'extlib', 'lib', '../lib', '../extlib';
6use File::Spec;
7use MT;
8
9use Test::More;
10
11BEGIN {
12    # if MT_HOME is not set, set it
13    unless ($ENV{MT_HOME}) {
14        require Cwd;
15        my $cwd = Cwd::getcwd();
16        my @pieces = File::Spec->splitdir($cwd);
17        pop @pieces unless -d 't';
18        $ENV{MT_HOME} = File::Spec->catdir(@pieces);
19    }
20    # if MT_CONFIG is not set, set it
21    if ($ENV{MT_CONFIG}) {
22        if (!File::Spec->file_name_is_absolute($ENV{MT_CONFIG})) {
23            $ENV{MT_CONFIG} = File::Spec->catfile($ENV{MT_HOME}, "t", $ENV{MT_CONFIG});
24        }
25    } else {
26        $ENV{MT_CONFIG} = File::Spec->catfile($ENV{MT_HOME}, "t", "mt.cfg");
27    }
28    chdir $ENV{MT_HOME};
29    my $ds_dir = File::Spec->catdir($ENV{MT_HOME}, "t", "db");
30    if (!-d $ds_dir) {
31        mkdir $ds_dir;
32    }
33}
34
35# Override time and sleep so we can simulate time passing without making
36# test scripts wait for real wall seconds to pass.
37our $CORE_TIME;
38BEGIN {
39    *CORE::GLOBAL::time  = sub { my ($a) = @_; $a ? CORE::time + $_[0] : CORE::time };
40    *CORE::GLOBAL::sleep = sub { CORE::sleep };
41}
42
43sub import {
44    my $pkg = shift;
45    foreach my $opt (@_) {
46        if ($opt =~ m{ \A : (.+) \z }xms) {
47            my $command = "init_$1";
48            $pkg->$command() if $pkg->can($command);
49        }
50    }
51}
52
53sub init_cms {
54    my $pkg = shift;
55    my ($cfg) = @_;
56
57    require MT::App::CMS;
58    MT::App::CMS->instance($cfg ? (Config => $cfg) : ());
59}
60
61sub init_time {
62    $CORE_TIME = time;
63   
64    no warnings 'redefine';
65    *CORE::GLOBAL::time  = sub { $CORE_TIME };
66    *CORE::GLOBAL::sleep = sub { $CORE_TIME += shift };
67}
68
69sub init_testdb {
70    my $pkg = shift;
71    # This is a bit of MT::Upgrade magic to prevent the full
72    # instantiation of the MT schema. We force the classes list
73    # to only contain the test 'Foo', 'Bar' classes and neuter
74    # the
75    require MT::Upgrade;
76    # Add our test 'Foo' and 'Bar' classes to the list of
77    # object classes to install.
78    %MT::Upgrade::classes = (foo=>'Foo',bar=>'Bar');
79    #MT::Upgrade->register_class(['Foo', 'Bar']);
80    MT->instance;
81    MT->registry->{object_types}->{foo} = 'Foo';
82    MT->registry->{object_types}->{bar} = 'Bar';
83
84    # Replace the standard seed_database/install_template functions
85    # with stubs since we're not creating a full schema.
86    MT::Upgrade->register_upgrade_function({
87        core_seed_database     => { code => sub { 1 } },
88        core_upgrade_templates => { code => sub { 1 } },
89        core_finish            => { code => sub { 1 } },
90    });
91    $pkg->init_db();
92}
93
94sub init_newdb {
95    my $pkg = shift;
96    my ($cfg) = @_;
97    diag "Initializing database";
98
99    my $mt = MT->instance($cfg ? (Config => $cfg) : ())
100        or die "No MT object " . MT->errstr;
101
102    my $types = MT->registry('object_types');
103    $types->{$_} = MT->model($_) for
104        grep { MT->model($_) }
105        map  { $_ . ':meta' }
106        grep { MT->model($_)->meta_pkg }
107        sort keys %$types;
108    my @classes = map { $types->{$_} } grep { $_ !~ /\./ } sort keys %$types;
109    foreach my $class (@classes) {
110        if (ref($class) eq 'ARRAY') {
111            next; #TODO for now - it won't hurt when we do driver-tests.
112        }
113        elsif (!defined *{ $class . '::__properties' }) {
114            eval '# line ' . __LINE__ . ' ' . __FILE__ . "\n" . 'require '.$class or die $@;
115        }
116    }
117
118    # Clear existing database tables
119    my $driver = MT::Object->driver();
120    foreach my $class (@classes) {
121        if (ref($class) eq 'ARRAY') {
122            next; #TODO for now - it won't hurt when we do driver-tests.
123        }
124        else {
125            if ($driver->dbd->ddl_class->table_exists($class)) {
126                $driver->sql(
127                    $driver->dbd->ddl_class->drop_table_sql($class),
128                );
129                $driver->dbd->ddl_class->drop_sequence($class),
130            }
131        }
132    }
133
134    1;
135}
136
137sub init_upgrade {
138    my $pkg = shift;
139
140    require MT::Upgrade;
141    # Initialize the MT database
142    MT::Upgrade->do_upgrade(
143        Install => 1, 
144        App     => __PACKAGE__, 
145        User    => {},
146        Blog    => {}
147    );
148    eval {
149        # line __LINE__ __FILE__
150        MT::Entry->remove;
151        MT::Comment->remove;
152    };
153    MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
154
155    1;
156}
157
158sub init_db {
159    my $pkg = shift;
160    $pkg->init_newdb(@_) && $pkg->init_upgrade(@_);
161}
162
163sub progress {}
164sub error {
165    my ($x, $msg) = @_;
166    print "ERROR: $msg\n";
167}
168
169sub init_data {
170    my $pkg = shift;
171    diag "Initializing sample data";
172
173    my $blog = MT::Blog->new();
174    $blog->set_values({
175        name => 'none',
176        site_url => 'http://narnia.na/nana/',
177        archive_url => 'http://narnia.na/nana/archives/',
178        site_path => 't/site/',
179        archive_path => 't/site/archives/',
180        archive_type=>'Individual,Monthly,Weekly,Daily,Category,Page',
181        archive_type_preferred => 'Individual',
182        description => "Narnia None Test Blog",
183        custom_dynamic_templates => 'custom',
184        convert_paras => 1,
185        allow_reg_comments => 1,
186        allow_unreg_comments => 0,
187        allow_pings => 1,
188        sort_order_posts => 'descend',
189        sort_order_comments => 'ascend',
190        remote_auth_token => 'token',
191        convert_paras_comments => 1,
192        google_api_key => 'r9Vj5K8PsjEu+OMsNZ/EEKjWmbCeQAv1',
193        cc_license => 'by-nc-sa http://creativecommons.org/licenses/by-nc-sa/2.0/ http://creativecommons.org/images/public/somerights20.gif',
194        server_offset => '-3.5',
195        children_modified_on => '20000101000000',
196        language => 'en_us',
197        file_extension => 'html',
198    });
199    $blog->id(1);
200    $blog->commenter_authenticators('enabled_TypeKey');
201    $blog->save() or die "Couldn't save blog 1: ". $blog->errstr;
202    MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
203    diag "Saved blog";
204
205    require MT::Entry;
206    require MT::Author;
207    my $chuckd = MT::Author->new();
208    $chuckd->set_values({
209        name => 'Chuck D',
210        nickname => 'Chucky Dee', 
211        email => 'chuckd@example.com',
212        url => 'http://chuckd.com/',
213        api_password => 'seecret',
214        auth_type => 'MT',
215        created_on => '19780131074500',
216    });
217    $chuckd->set_password("bass");
218    $chuckd->type(MT::Author::AUTHOR());
219    $chuckd->id(2);
220    $chuckd->is_superuser(1);
221    $chuckd->save()
222        or die "Couldn't save author record 2: " . $chuckd->errstr;
223    diag "Saved user Chuck D";
224
225    my $bobd = MT::Author->new();
226    $bobd->set_values({
227        name => 'Bob D',
228        nickname => 'Dylan', 
229        email => 'bobd@example.com',
230        auth_type => 'MT',
231        created_on => '19780131075000',
232    });
233    $bobd->set_password("flute");
234    $bobd->type(MT::Author::AUTHOR());
235    $bobd->id(3);
236    $bobd->save() or die "Couldn't save author record 3: " . $bobd->errstr;
237    diag "Saved user Bob D";
238
239    my $johnd = MT::Author->new();
240    $johnd->set_values({
241        name => 'John Doe',
242        nickname => 'John Doe',
243        email => 'jdoe@doe.com',
244        auth_type => 'TypeKey',
245        created_on => '19780131080000',
246    });
247    $johnd->type(MT::Author::COMMENTER());
248    $johnd->password('(none)');
249    $johnd->id(4);
250    $johnd->save() or die "Couldn't save author record 4: " . $johnd->errstr;
251    diag "Saved user John Doe";
252
253    my $hiro = MT::Author->new();
254    $hiro->set_values({
255        name => 'Hiro Nakamura',
256        nickname => 'Hiro',
257        email => 'hiro@heroes.com',
258        auth_type => 'MT',
259        created_on => '19780131081000',
260    });
261    $hiro->type(MT::Author::AUTHOR());
262    $hiro->password('time');
263    $hiro->id(5);
264    $hiro->status(2);
265    $hiro->save() or die "Couldn't save author record 5: " . $hiro->errstr;
266    diag "Saved user Hiro";
267
268    require MT::Role;
269    my ($admin_role, $author_role) = map { MT::Role->load({ name => $_ }) }
270        ('Blog Administrator', 'Author');
271
272    require MT::Association;
273    my $assoc = MT::Association->new();
274    $assoc->author_id($chuckd->id);
275    $assoc->blog_id(1);
276    $assoc->role_id($admin_role->id);
277    $assoc->type(1);
278    $assoc->save();
279
280    $assoc = MT::Association->new();
281    $assoc->author_id($bobd->id);
282    $assoc->blog_id(1);
283    $assoc->role_id($author_role->id);
284    $assoc->type(1);
285    $assoc->save();
286
287    $assoc = MT::Association->new();
288    $assoc->author_id($hiro->id);
289    $assoc->blog_id(1);
290    $assoc->role_id($admin_role->id);
291    $assoc->type(1);
292    $assoc->save();
293
294    # set permission record for johnd commenter on blog 1
295    $johnd->approve(1);
296
297    my $entry = MT::Entry->load(1);
298    # TODO: this test entry is never created; upgrading already adds entry #1.
299    if (!$entry) {
300        $entry = MT::Entry->new();
301        $entry->set_values({
302            blog_id => 1,
303            title => 'A Rainy Day',
304            text => 'On a drizzly day last weekend,',
305            text_more => 'I took my grandpa for a walk.',
306            excerpt => 'A story of a stroll.',
307            keywords => 'keywords',
308            created_on => '19780131074500',
309            authored_on => '19780131074500',
310            modified_on => '19780131074600',
311            authored_on => '19780131074500',
312            author_id => $chuckd->id,
313            pinged_urls => 'http://technorati.com/',
314            allow_comments => 1,
315            allow_pings => 1,
316            status => MT::Entry::RELEASE(),
317        });
318        $entry->id(1);
319        $entry->tags('rain', 'grandpa', 'strolling');
320        $entry->save() or die "Couldn't save entry record 1: ".$entry->errstr;
321        diag "Saved entry #1";
322    }
323    $entry->clear_cache();
324
325    $entry = MT::Entry->load(2);
326    if (!$entry) {
327        $entry = MT::Entry->new();
328        $entry->set_values({
329            blog_id => 1,
330            title => 'A preponderance of evidence',
331            text => 'It is sufficient to say...',
332            text_more => 'I suck at making up test data.',
333            created_on => '19790131074500',
334            authored_on => '19790131074500',
335            modified_on => '19790131074600',
336            authored_on => '19780131074500',
337            author_id => $bobd->id,
338            allow_comments => 1,
339            status => MT::Entry::FUTURE(),
340        });
341        $entry->id(2);
342        $entry->save() or die "Couldn't save entry record 2: ".$entry->errstr;
343        diag "Saved entry #2";
344    }
345    $entry->clear_cache();
346
347    $entry = MT::Entry->load(3);
348    if (!$entry) {
349        $entry = MT::Entry->new();
350        $entry->set_values({
351            blog_id => 1,
352            title => 'Spurious anemones',
353            text => '...are better than the non-spurious',
354            text_more => 'variety.',
355            created_on => '19770131074500',
356            authored_on => '19790131074500',
357            modified_on => '19770131074600',
358            authored_on => '19780131074500',
359            author_id => $chuckd->id,
360            allow_comments => 1,
361            allow_pings => 0,
362            status => MT::Entry::HOLD(),
363        });
364        $entry->id(3);
365        $entry->tags('anemones');
366        $entry->save() or die "Couldn't save entry record 3: ".$entry->errstr;
367        diag "Saved entry #3";
368    }
369    $entry->clear_cache();
370
371    require MT::Trackback;
372    my $tb = MT::Trackback->load(1);
373    if (!$tb) {
374        $tb = new MT::Trackback;
375        $tb->entry_id(1);
376        $tb->blog_id(1);
377        $tb->title("Entry TrackBack Title");
378        $tb->description("Entry TrackBack Description");
379        $tb->category_id(0);
380        $tb->id(1);
381        $tb->save or die "Couldn't save Trackback record 1: " . $tb->errstr;;
382    }
383
384    require MT::TBPing;
385    my $ping = MT::TBPing->load(1);
386    if (!$ping) {
387        $ping = new MT::TBPing;
388        $ping->tb_id(1);
389        $ping->blog_id(1);
390        $ping->ip('127.0.0.1');
391        $ping->title('Foo');
392        $ping->excerpt('Bar');
393        $ping->source_url('http://example.com/');
394        $ping->blog_name("Example Blog");
395        $ping->created_on('20050405000000');
396        $ping->id(1);
397        $ping->visible(1);
398        $ping->save or die "Couldn't save TBPing record 1: " . $ping->errstr;
399        diag "Saved a trackback ping";
400    }
401
402    my @verses = (
403        'Oh, where have you been, my blue-eyed son?
404Oh, where have you been, my darling young one?',
405        'I saw a newborn baby with wild wolves all around it
406I saw a highway of diamonds with nobody on it',
407        'Heard one hundred drummers whose hands were a-blazin\',
408Heard ten thousand whisperin\' and nobody listenin\'',
409        'I met one man who was wounded in love,
410I met another man who was wounded with hatred',
411        'Where hunger is ugly, where souls are forgotten,
412Where black is the color, where none is the number,
413And it\'s a hard, it\'s a hard, it\'s a hard, it\'s a hard,
414It\'s a hard rain\'s a-gonna fall',
415    );
416
417    require MT::Category;
418    my $cat = MT::Category->load({ label => 'foo', blog_id => 1});
419    if (!$cat) {
420        $cat = new MT::Category;
421        $cat->blog_id(1);
422        $cat->label('foo');
423        $cat->description('bar');
424        $cat->author_id($chuckd->id);
425        $cat->parent(0);
426        $cat->id(1);
427        $cat->save or die "Couldn't save category record 1: ". $cat->errstr;
428        diag "Saved category foo";
429    }
430
431    $cat = MT::Category->load({ label => 'bar', blog_id => 1});
432    if (!$cat) {
433        $cat = new MT::Category;
434        $cat->blog_id(1);
435        $cat->label('bar');
436        $cat->description('foo');
437        $cat->author_id($chuckd->id);
438        $cat->parent(0);
439        $cat->id(2);
440        $cat->save or die "Couldn't save category record 2: ". $cat->errstr;
441        diag "Saved category bar";
442    }
443
444    $tb = MT::Trackback->load(2);
445    if (!$tb) {
446        $tb = new MT::Trackback;
447        $tb->title("Category TrackBack Title");
448        $tb->description("Category TrackBack Description");
449        $tb->entry_id(0);
450        $tb->blog_id(1);
451        $tb->category_id(2);
452        $tb->id(2);
453        $tb->save or die "Couldn't save Trackback record 2: " . $tb->errstr;;
454        diag "Saved category bar's trackback target";
455    }
456
457    $cat = MT::Category->load({ label => 'subfoo', blog_id => 1});
458    if (!$cat) {
459        $cat = new MT::Category;
460        $cat->blog_id(1);
461        $cat->label('subfoo');
462        $cat->description('subcat');
463        $cat->author_id($bobd->id);
464        $cat->parent(1);
465        $cat->id(3);
466        $cat->save or die "Couldn't save category record 3: ". $cat->errstr;
467        diag "Saved subcategory subfoo";
468    }
469
470    require MT::Placement;
471    foreach my $i (1..@verses) {
472        $entry = MT::Entry->load($i+3);
473        if (!$entry) {
474            $entry = MT::Entry->new();
475            $entry->set_values({
476                blog_id => 1,
477                title => "Verse $i",
478                text => $verses[$i],
479                author_id => ($i == 3 ? $bobd->id : $chuckd->id),
480                created_on => sprintf("%04d0131074501", $i + 1960),
481                authored_on => sprintf("%04d0131074501", $i + 1960),
482                modified_on => sprintf("%04d0131074601", $i + 1960),
483                authored_on => sprintf("%04d0131074501", $i + 1960),
484                allow_comments => ($i <= 2 ? 0 : 1),
485                status => MT::Entry::RELEASE(),
486            });
487            $entry->id($i+3);
488            if ( $i == 1 || $i == 3 || $i == 5 ) {
489                $entry->tags('verse', 'rain');
490            }
491            else {
492                $entry->tags('verse', 'anemones');
493            }
494            $entry->save()
495                or die "Couldn't save entry record ".($entry->id).": ". $entry->errstr;
496            if ($i == 3) {
497                my $place = new MT::Placement;
498                $place->entry_id($entry->id);
499                $place->blog_id(1);
500                $place->category_id(1);
501                $place->is_primary(1);
502                $place->save
503                    or die "Couldn't save placement record: ".$place->errstr;
504                diag "Placed entry Verse 3 in category foo";
505            }
506            if ($i == 4) {
507                my $place = new MT::Placement;
508                $place->entry_id($entry->id);
509                $place->blog_id(1);
510                $place->category_id(3);
511                $place->is_primary(1);
512                $place->save
513                    or die "Couldn't save placement record: ".$place->errstr;
514                diag "Placed entry Verse 4 in category subfoo";
515            }
516        }
517    }
518
519    # entry id 1 - 1 visible comment
520    # entry id 4 - no comments, commenting is off
521    require MT::Comment;
522    unless (MT::Comment->count({entry_id => 1})) {
523        my $cmt = new MT::Comment();
524        $cmt->set_values({
525            text => 'Postmodern false consciousness has always been firmly rooted in post-Freudian Lacanian neo-Marxist bojangles. Needless to say, this quickly and asymptotically approches a purpletacular jouissance of etic jumpinmypants.',
526            entry_id => 1,
527            author => 'v14GrUH 4 cheep',
528            visible => 1,
529            email => 'jake@fatman.com',
530            url => 'http://fatman.com/',
531            blog_id => 1,
532            ip => '127.0.0.1',
533            created_on => '20040714182800',
534        });
535        $cmt->id(1);
536        $cmt->save() or die "Couldn't save comment record 1: ".$cmt->errstr;
537        diag "Saved comment #1";
538
539        $cmt->id(11);
540        $cmt->text('Comment reply for comment 1');
541        $cmt->author('Comment 11');
542        $cmt->created_on('20040812182900');
543        $cmt->parent_id(1);
544        $cmt->save() or die "Couldn't save comment record 11: ".$cmt->errstr;
545        diag "Saved child comment #11";
546
547        $cmt->id(12);
548        $cmt->text('Comment reply for comment 11');
549        $cmt->author('Comment 12');
550        $cmt->created_on('20040810183000');
551        $cmt->parent_id(11);
552        $cmt->save() or die "Couldn't save comment record 12: ".$cmt->errstr;
553        diag "Saved child comment #12";
554    }
555    # entry id 5 - 1 comment, commenting is off (closed)
556    unless (MT::Comment->count({entry_id => 5})) {
557        my $cmt = new MT::Comment();
558        $cmt->set_values({
559            text => 'Comment for entry 5, visible',
560            entry_id => 5,
561            author => 'Comment 2',
562            visible => 1,
563            email => 'johnd@doe.com',
564            url => 'http://john.doe.com/',
565            commenter_id => $johnd->id,
566            blog_id => 1,
567            ip => '127.0.0.1',
568            created_on => '20040912182800',
569        });
570        $cmt->id(2);
571        $cmt->junk_score(1.5);
572        $cmt->save() or die "Couldn't save comment record 2: ".$cmt->errstr;
573    }
574    # entry id 6 - 3 comment visible, 1 moderated
575    unless (MT::Comment->count({entry_id => 6})) {
576        my $cmt = new MT::Comment();
577        $cmt->set_values({
578            text => 'Comment for entry 6, visible',
579            entry_id => 6,
580            author => 'Comment 3',
581            visible => 1,
582            email => '',
583            url => '',
584            blog_id => 1,
585            ip => '127.0.0.1',
586            created_on => '20040911182800',
587        });
588        $cmt->id(3);
589        $cmt->save() or die "Couldn't save comment record 3: ".$cmt->errstr;
590
591        $cmt->id(4);
592        $cmt->visible(0);
593        $cmt->author('Comment 4');
594        $cmt->text('Comment for entry 6, moderated');
595        $cmt->created_on('20040910182800');
596        $cmt->save() or die "Couldn't save comment record 4: ".$cmt->errstr;
597       
598        $cmt->text("All your comments are belonged to me.");
599        $cmt->commenter_id($chuckd->id);
600        $cmt->visible(1);
601        $cmt->created_on('20040910183000');
602        $cmt->id(14);
603        $cmt->save or die "Couldn't save comment record 1: ".$cmt->errstr;
604
605        $cmt->text("All your comments are belonged to us MT Authors.");
606        $cmt->commenter_id($bobd->id);
607        $cmt->visible(1);
608        $cmt->created_on('20040910182800');
609        $cmt->id(15);
610        $cmt->save or die "Couldn't save comment record 1: ".$cmt->errstr;
611    }
612    # entry id 7 - 0 comment visible, 1 moderated
613    unless (MT::Comment->count({entry_id => 7})) {
614        my $cmt = new MT::Comment();
615        $cmt->set_values({
616            text => 'Comment for entry 7, moderated',
617            entry_id => 7,
618            author => 'Comment 7',
619            visible => 0,
620            email => '',
621            url => '',
622            blog_id => 1,
623            ip => '127.0.0.1',
624            created_on => '20040909182800',
625        });
626        $cmt->id(5);
627        $cmt->save() or die "Couldn't save comment record 5: ".$cmt->errstr;
628    }
629    # entry id 8 - 1 comment visible, 1 moderated, 1 junk
630    unless (MT::Comment->count({entry_id => 8})) {
631        my $cmt = new MT::Comment();
632        $cmt->set_values({
633            text => 'Comment for entry 8, visible',
634            entry_id => 8,
635            author => 'Comment 8',
636            visible => 1,
637            email => '',
638            url => '',
639            blog_id => 1,
640            ip => '127.0.0.1',
641            created_on => '20040614182800',
642        });
643        $cmt->id(6);
644        $cmt->save() or die "Couldn't save comment record 6: ".$cmt->errstr;
645
646        $cmt->id(7);
647        $cmt->visible(0);
648        $cmt->text('Comment for entry 8, moderated');
649        $cmt->author('JD7');
650        $cmt->created_on('20040812182800');
651        $cmt->save() or die "Couldn't save comment record 7: ".$cmt->errstr;
652
653        $cmt->id(8);
654        $cmt->visible(0);
655        $cmt->junk_status(-1);
656        $cmt->text('Comment for entry 8, junk');
657        $cmt->author('JD8');
658        $cmt->created_on('20040810182800');
659        $cmt->save() or die "Couldn't save comment record 8: ".$cmt->errstr;
660    }
661
662    require MT::Template;
663    require MT::TemplateMap;
664
665    my $tmpl = new MT::Template;
666    $tmpl->blog_id(1);
667    $tmpl->name('blog-name');
668    $tmpl->text('<MTBlogName>');
669    $tmpl->type('custom');
670    $tmpl->save or die "Couldn't save template record 1: ".$tmpl->errstr;
671    diag "Saved blog-name template";
672
673    ### Asset
674    use MT::Asset;
675
676    my $img_pkg = MT::Asset->class_handler('image');
677    my $file_pkg = MT::Asset->class_handler('file');
678    my $asset = new $img_pkg;
679    $asset->blog_id(1);
680    $asset->url('http://narnia.na/nana/images/test.jpg');
681    $asset->file_path(File::Spec->catfile($ENV{MT_HOME}, "t", 'images', 'test.jpg'));
682    $asset->file_name('test.jpg');
683    $asset->file_ext('jpg');
684    $asset->image_width(640);
685    diag "Set image asset's width metadata field";
686    $asset->image_height(480);
687    $asset->mime_type('image/jpeg');
688    $asset->label('Image photo');
689    $asset->description('This is a test photo.');
690    $asset->created_by(1);
691    $asset->tags('alpha', 'beta', 'gamma');
692    diag "Tagged image asset";
693    $asset->save or die "Couldn't save asset record 1: " . $asset->errstr;
694    diag "Saved image asset";
695
696    $asset->set_score('unit test', $bobd, 5, 1);
697    $asset->set_score('unit test', $johnd, 3, 1);
698    $asset->set_score('unit test', MT::Author->load(1), 4, 1);
699
700    $asset = new $file_pkg;
701    $asset->blog_id(1);
702    $asset->url('http://narnia.na/nana/files/test.tmpl');
703    $asset->file_path(File::Spec->catfile($ENV{MT_HOME}, "t", 'test.tmpl'));
704    $asset->file_name('test.tmpl');
705    $asset->file_ext('tmpl');
706    $asset->mime_type('text/plain');
707    $asset->label('Template');
708    $asset->description('This is a test template.');
709    $asset->created_by(1);
710    $asset->created_on('19780131074500');
711    $asset->tags('beta');
712    $asset->save or die "Couldn't save file asset record: " . $asset->errstr;
713    diag "Saved file asset";
714
715    $asset->set_score('unit test', $chuckd, 2, 1);
716    $asset->set_score('unit test', $johnd, 3, 1);
717   
718    ## ObjectScore
719    my $e5 = MT::Entry->load(5);
720    $e5->set_score('unit test', $bobd, 5, 1);
721    $e5->set_score('unit test', $johnd, 3, 1);
722    $e5->set_score('unit test', MT::Author->load(1), 4, 1);
723
724    my $e6 = MT::Entry->load(6);
725    $e6->set_score('unit test', $chuckd, 1, 1);
726    $e6->set_score('unit test', $johnd, 1, 1);
727   
728    my $e4 = MT::Entry->load(4);
729    $e4->set_score('unit test', $chuckd, 2, 1);
730    $e4->set_score('unit test', $johnd, 3, 1);
731    diag "Saved scores for entry #4";
732
733    ## Page
734    require MT::Page;
735    my $page = MT::Page->new();
736    $page->set_values({
737        blog_id => 1,
738        title => 'Watching the River Flow',
739        text => 'What the matter with me,',
740        text_more => 'I don\'t have much to say,',
741        keywords => 'no folder',
742        excerpt => 'excerpt',
743        created_on => '19780131074500',
744        authored_on => '19780131074500',
745        modified_on => '19780131074600',
746        author_id => $chuckd->id,
747        status => MT::Entry::RELEASE(),
748    });
749    $page->id(20);
750    $page->tags('river', 'flow', 'watch');
751    $page->save() or die "Couldn't save page record 20: ".$page->errstr;
752
753    require MT::Folder;
754    my $folder = MT::Folder->new();
755    $folder->blog_id(1);
756    $folder->label('info');
757    $folder->description('information');
758    $folder->author_id($chuckd->id);
759    $folder->parent(0);
760    $folder->id(20);
761    $folder->save or die "Could'n sae folder record 20:" . $folder->errstr;
762    diag "Saved folder #20";
763
764    $folder = MT::Folder->new();
765    $folder->blog_id(1);
766    $folder->label('download');
767    $folder->description('download top');
768    $folder->author_id($chuckd->id);
769    $folder->parent(0);
770    $folder->id(21);
771    $folder->save or die "Could'n sae folder record 21:" . $folder->errstr;
772
773    $folder = MT::Folder->new();
774    $folder->blog_id(1);
775    $folder->label('nightly');
776    $folder->description('nightly build');
777    $folder->author_id($chuckd->id);
778    $folder->parent(21);
779    $folder->id(22);
780    $folder->save or die "Could'n sae folder record 22:" . $folder->errstr;
781
782    $page = MT::Page->new();
783    $page->set_values({
784        blog_id => 1,
785        title => 'Page #1',
786        text => 'Wish I was back in the city',
787        text_more => 'Instead of this old bank of sand,',
788        keywords => 'keywords',
789        created_on => '19790131074500',
790        authored_on => '19790131074500',
791        modified_on => '19790131074600',
792        author_id => $chuckd->id,
793        status => MT::Entry::RELEASE(),
794    });
795    $page->id(21);
796    $page->tags('page1', 'page2', 'page3');
797    $page->save() or die "Couldn't save page record 21: ".$page->errstr;
798
799    my $folder_place = new MT::Placement;
800    $folder_place->entry_id(21);
801    $folder_place->blog_id(1);
802    $folder_place->category_id(20);
803    $folder_place->is_primary(1);
804    $folder_place->save
805        or die "Couldn't save placement record: ".$folder_place->errstr;
806
807    $page = MT::Page->new();
808    $page->set_values({
809        blog_id => 1,
810        title => 'Page #2',
811        text => 'With the sub beating down over the chimney tops',
812        text_more => 'And the one I love so close at hand',
813        keywords => 'keywords',
814        created_on => '19800131074500',
815        authored_on => '19800131074500',
816        modified_on => '19800131074600',
817        author_id => $chuckd->id,
818        status => MT::Entry::RELEASE(),
819    });
820    $page->id(22);
821    $page->tags('page2', 'page3');
822    $page->save() or die "Couldn't save page record 22: ".$page->errstr;
823
824    $folder_place = new MT::Placement;
825    $folder_place->entry_id(22);
826    $folder_place->blog_id(1);
827    $folder_place->category_id(21);
828    $folder_place->is_primary(1);
829    $folder_place->save
830        or die "Couldn't save placement record: ".$folder_place->errstr;
831
832    $page = MT::Page->new();
833    $page->set_values({
834        blog_id => 1,
835        title => 'Page #3',
836        text => 'If I had wings and I could fly,',
837        text_more => 'I know where I would go.',
838        keywords => 'keywords',
839        created_on => '19810131074500',
840        authored_on => '19810131074500',
841        modified_on => '19810131074600',
842        author_id => $bobd->id,
843        status => MT::Entry::RELEASE(),
844    });
845    $page->id(23);
846    $page->tags('page3');
847    $page->save() or die "Couldn't save page record 23: ".$page->errstr;
848
849    $folder_place = new MT::Placement;
850    $folder_place->entry_id(23);
851    $folder_place->blog_id(1);
852    $folder_place->category_id(22);
853    $folder_place->is_primary(1);
854    $folder_place->save
855        or die "Couldn't save placement record: ".$folder_place->errstr;
856
857    unless (MT::Comment->count({entry_id => $page->id})) {
858        my $page_cmt = new MT::Comment();
859        $page_cmt->set_values({
860            text => "Your time is limited, so don't waste it living someone else's life. Don't be trapped by dogma - which is living with the results of other people's thinking. Don't let the noise of others' opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.",
861            entry_id => 23,
862            author => 'Steve Jobs',
863            visible => 1,
864            email => 'f@example.com',
865            url => 'http://example.com/',
866            blog_id => 1,
867            ip => '127.0.0.1',
868            created_on => '20040114182800',
869            modified_on => '20040114182800',
870        });
871        $page_cmt->id(13);
872        $page_cmt->save() or die "Couldn't save comment record 1: ".$page_cmt->errstr;
873    }
874
875    my $page_tb = MT::Trackback->new;
876    $page_tb->entry_id($page->id);
877    $page_tb->blog_id(1);
878    $page_tb->title("Page TrackBack Title");
879    $page_tb->description("Page TrackBack Description");
880    $page_tb->category_id(0);
881    $page_tb->id(3);
882    $page_tb->save or die "Couldn't save Trackback record 1: " . $tb->errstr;;
883
884    my $page_ping = MT::TBPing->new;
885    $page_ping->tb_id($page_tb->id);
886    $page_ping->blog_id(1);
887    $page_ping->ip('127.0.0.1');
888    $page_ping->title('Trackbacking to a page');
889    $page_ping->excerpt('Four bridges in the bayarea.  Golden Gate, Bay, San Mateo and Dan Burton.');
890    $page_ping->source_url('http://example.com/');
891    $page_ping->blog_name("Example Blog");
892    $page_ping->created_on('20040101000000');
893    $page_ping->modified_on('20040101000000');
894    $page_ping->visible(1);
895    $page_ping->id(3);
896    $page_ping->save or die "Couldn't save TBPing record 1: " . $ping->errstr;
897
898    MT->instance->rebuild(
899        BlogId => 1,
900        EntryCallback => sub { print STDERR "# Rebuilding entry " . $_[0]->id . "\n" }
901    );
902
903    ### Make ObjectAsset mappings
904    require MT::ObjectAsset;
905    my $map;
906    $entry = MT::Entry->load(1);
907    if ($entry) {
908        $map = new MT::ObjectAsset;
909        $map->blog_id($entry->blog_id);
910        $map->asset_id(1);
911        $map->object_ds($entry->datasource);
912        $map->object_id($entry->id);
913        $map->save;
914    }
915    $page = MT::Page->load(20);
916    if ($entry) {
917        $map = new MT::ObjectAsset;
918        $map->blog_id($page->blog_id);
919        $map->asset_id(2);
920        $map->object_ds($page->datasource);
921        $map->object_id($page->id);
922        $map->save;
923    }
924
925    1;
926}
927
9281;
Note: See TracBrowser for help on using the browser.