|
Lines 19-25
Link Here
|
| 19 |
|
19 |
|
| 20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
| 21 |
|
21 |
|
| 22 |
use Test::More tests => 15; |
22 |
use Test::More tests => 16; |
| 23 |
|
23 |
|
| 24 |
use Test::MockModule; |
24 |
use Test::MockModule; |
| 25 |
use Test::Exception; |
25 |
use Test::Exception; |
|
Lines 27-32
use Time::Fake;
Link Here
|
| 27 |
|
27 |
|
| 28 |
use C4::Circulation qw( AddIssue LostItem AddReturn ); |
28 |
use C4::Circulation qw( AddIssue LostItem AddReturn ); |
| 29 |
use C4::Context; |
29 |
use C4::Context; |
|
|
30 |
use C4::Serials qw( NewIssue AddItem2Serial ); |
| 30 |
use Koha::Item; |
31 |
use Koha::Item; |
| 31 |
use Koha::Item::Transfer::Limits; |
32 |
use Koha::Item::Transfer::Limits; |
| 32 |
use Koha::Items; |
33 |
use Koha::Items; |
|
Lines 1811-1813
subtest 'move_to_biblio() tests' => sub {
Link Here
|
| 1811 |
$schema->storage->txn_rollback; |
1812 |
$schema->storage->txn_rollback; |
| 1812 |
|
1813 |
|
| 1813 |
}; |
1814 |
}; |
| 1814 |
- |
1815 |
|
|
|
1816 |
subtest 'search_ordered' => sub { |
| 1817 |
|
| 1818 |
plan tests => 6; |
| 1819 |
|
| 1820 |
$schema->storage->txn_begin; |
| 1821 |
|
| 1822 |
my $library_a = $builder->build_object( |
| 1823 |
{ class => 'Koha::Libraries', value => { branchname => 'TEST_A' } } ); |
| 1824 |
my $library_z = $builder->build_object( |
| 1825 |
{ class => 'Koha::Libraries', value => { branchname => 'TEST_Z' } } ); |
| 1826 |
my $biblio = $builder->build_sample_biblio( { serial => 0 } ); |
| 1827 |
my $item1 = $builder->build_sample_item({ biblionumber => $biblio->biblionumber }); |
| 1828 |
my $item2 = $builder->build_sample_item({ biblionumber => $biblio->biblionumber }); |
| 1829 |
my $item3 = $builder->build_sample_item({ biblionumber => $biblio->biblionumber }); |
| 1830 |
|
| 1831 |
{ # Is not a serial |
| 1832 |
|
| 1833 |
# order_by homebranch.branchname |
| 1834 |
$item1->discard_changes->update( { homebranch => $library_z->branchcode } ); |
| 1835 |
$item2->discard_changes->update( { homebranch => $library_a->branchcode } ); |
| 1836 |
$item3->discard_changes->update( { homebranch => $library_z->branchcode } ); |
| 1837 |
is_deeply( [ map { $_->itemnumber } $biblio->items->search_ordered->as_list ], |
| 1838 |
[ $item2->itemnumber, $item1->itemnumber, $item3->itemnumber ] ); |
| 1839 |
|
| 1840 |
# order_by me.enumchron |
| 1841 |
$biblio->items->update( { homebranch => $library_a->branchcode } ); |
| 1842 |
$item1->discard_changes->update( { enumchron => 'cc' } ); |
| 1843 |
$item2->discard_changes->update( { enumchron => 'bb' } ); |
| 1844 |
$item3->discard_changes->update( { enumchron => 'aa' } ); |
| 1845 |
is_deeply( [ map { $_->itemnumber } $biblio->items->search_ordered->as_list ], |
| 1846 |
[ $item3->itemnumber, $item2->itemnumber, $item1->itemnumber ] ); |
| 1847 |
|
| 1848 |
# order_by LPAD( me.copynumber, 8, '0' ) |
| 1849 |
$biblio->items->update( { enumchron => undef } ); |
| 1850 |
$item1->discard_changes->update( { copynumber => '12345678' } ); |
| 1851 |
$item2->discard_changes->update( { copynumber => '34567890' } ); |
| 1852 |
$item3->discard_changes->update( { copynumber => '23456789' } ); |
| 1853 |
is_deeply( [ map { $_->itemnumber } $biblio->items->search_ordered->as_list ], |
| 1854 |
[ $item1->itemnumber, $item3->itemnumber, $item2->itemnumber ] ); |
| 1855 |
|
| 1856 |
# order_by -desc => 'me.dateaccessioned' |
| 1857 |
$biblio->items->update( { copynumber => undef } ); |
| 1858 |
$item1->discard_changes->update( { dateaccessioned => '2022-08-19' } ); |
| 1859 |
$item2->discard_changes->update( { dateaccessioned => '2022-07-19' } ); |
| 1860 |
$item3->discard_changes->update( { dateaccessioned => '2022-09-19' } ); |
| 1861 |
is_deeply( [ map { $_->itemnumber } $biblio->items->search_ordered->as_list ], |
| 1862 |
[ $item3->itemnumber, $item1->itemnumber, $item2->itemnumber ] ); |
| 1863 |
} |
| 1864 |
|
| 1865 |
{ # Is a serial |
| 1866 |
|
| 1867 |
my $sub_freq = $builder->build( { source => 'SubscriptionFrequency' } ); |
| 1868 |
my $sub_np = |
| 1869 |
$builder->build( { source => 'SubscriptionNumberpattern' } ); |
| 1870 |
my $subscription = $builder->build_object( |
| 1871 |
{ |
| 1872 |
class => 'Koha::Subscriptions', |
| 1873 |
value => { |
| 1874 |
biblionumber => $biblio->biblionumber, |
| 1875 |
periodicity => $sub_freq->{id}, |
| 1876 |
numberpattern => $sub_np->{id} |
| 1877 |
} |
| 1878 |
} |
| 1879 |
); |
| 1880 |
$builder->build_object( |
| 1881 |
{ |
| 1882 |
class => 'Koha::Subscription::Histories', |
| 1883 |
value => { |
| 1884 |
subscriptionid => $subscription->subscriptionid, |
| 1885 |
biblionumber => $biblio->biblionumber |
| 1886 |
} |
| 1887 |
} |
| 1888 |
); |
| 1889 |
|
| 1890 |
$biblio->update( { serial => 1 } ); |
| 1891 |
my $serialid1 = |
| 1892 |
C4::Serials::NewIssue( "serialseq", $subscription->subscriptionid, |
| 1893 |
$biblio->biblionumber, 1, undef, undef, "publisheddatetext", |
| 1894 |
"notes", "routingnotes" ); |
| 1895 |
C4::Serials::AddItem2Serial( $serialid1, $item1->itemnumber ); |
| 1896 |
my $serialid2 = |
| 1897 |
C4::Serials::NewIssue( "serialseq", $subscription->subscriptionid, |
| 1898 |
$biblio->biblionumber, 1, undef, undef, "publisheddatetext", |
| 1899 |
"notes", "routingnotes" ); |
| 1900 |
C4::Serials::AddItem2Serial( $serialid2, $item2->itemnumber ); |
| 1901 |
my $serialid3 = |
| 1902 |
C4::Serials::NewIssue( "serialseq", $subscription->subscriptionid, |
| 1903 |
$biblio->biblionumber, 1, undef, undef, "publisheddatetext", |
| 1904 |
"notes", "routingnotes" ); |
| 1905 |
C4::Serials::AddItem2Serial( $serialid3, $item3->itemnumber ); |
| 1906 |
my $serial1 = Koha::Serials->find($serialid1); |
| 1907 |
my $serial2 = Koha::Serials->find($serialid2); |
| 1908 |
my $serial3 = Koha::Serials->find($serialid3); |
| 1909 |
|
| 1910 |
# order_by serial.publisheddate |
| 1911 |
$serial1->discard_changes->update( { publisheddate => '2022-08-19' } ); |
| 1912 |
$serial2->discard_changes->update( { publisheddate => '2022-07-19' } ); |
| 1913 |
$serial3->discard_changes->update( { publisheddate => '2022-09-19' } ); |
| 1914 |
is_deeply( |
| 1915 |
[ map { $_->itemnumber } $biblio->items->search_ordered->as_list ], |
| 1916 |
[ $item3->itemnumber, $item1->itemnumber, $item2->itemnumber ] |
| 1917 |
); |
| 1918 |
|
| 1919 |
# order_by me.enumchron |
| 1920 |
$serial1->discard_changes->update({ publisheddate => '2022-08-19' }); |
| 1921 |
$serial2->discard_changes->update({ publisheddate => '2022-08-19' }); |
| 1922 |
$serial3->discard_changes->update({ publisheddate => '2022-08-19' }); |
| 1923 |
$item1->discard_changes->update( { enumchron => 'cc' } ); |
| 1924 |
$item2->discard_changes->update( { enumchron => 'bb' } ); |
| 1925 |
$item3->discard_changes->update( { enumchron => 'aa' } ); |
| 1926 |
is_deeply( [ map { $_->itemnumber } $biblio->items->search_ordered->as_list ], |
| 1927 |
[ $item3->itemnumber, $item2->itemnumber, $item1->itemnumber ] ); |
| 1928 |
|
| 1929 |
} |
| 1930 |
|
| 1931 |
$schema->storage->txn_rollback; |
| 1932 |
|
| 1933 |
}; |